Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госы / Операционные ситстемы.docx
Скачиваний:
55
Добавлен:
10.04.2015
Размер:
269.64 Кб
Скачать

2.Планирование вычислительных процессов. Методы планирования основанные на квантовании (циклический выбор и его модификации).

Подсистема управления процессами распределяет ресурсы между процессами. Поскольку ресурсы являются дефицитными, они не могут принадлежать всем процессам одновременно. Требуется устанавливать порядок выполнения процессов. Определение оптимального порядка выполнения работы является функцией планировщика. Планировщик определяет момент когда процесс должен быть снят с выполнения, выбирает из очереди готовых процессов следующий на выполнение. С планировщиком тесно связана программа, которую называют диспетчер, осуществляющую переключение процессов. Он запоминает контекст прерванного процесса и устанавливает контекст следующего по очереди процесса. Контекст – понятие, которое отражает состояние аппаратуры на момент переключения. Контекст включает такие параметры ОС, как ссылки на открытые файлы, данные о незавершенных операциях ввода-вывода. Под состоянием аппаратуры понимается содержимое РОН, счетчика команд, регистра прерывания. Диспетчер сохраняет контекст текущего процесса, загружает контекст выбранного планировщиком процесса, запускает новый процесс на выполнение. Создание процесса – означает создать описатель процесса. Описатель процесса содержит сведения о процессе, необходимые для управления им ОС. Дескриптор – описатель процесса.

Одноуровневый циклический выбор основан на квантовании. Все поступающие в систему работы устанавливаются в одну очередь. Всем работам предоставляется квант процессорного времени. Если работа выполнена за предоставленный квант, она выходит из ВС. Если не выполнена – то прерывается и помещается в конец очереди на дообслуживание.

Ср. вр. ожидания для работы, требующей m квантов:

- время обслуживания

- время ответа ВС с квантованием.

Должно выполняться условие

- вр. обслуживания прерывания

Для акого алгоритма чем меньше интервал вр. q, тем быстрее короткие работы будут выходить из системы. Однако, тем больше вр. будет уходить на обработку прерsваний для длинных работ.

Многоуровневый циклический выбор организует несколько очередей. Им присваивают некоторый относительный приоритет. Все вновь поступившие работы уст-ся в 1-ю очередь. Она имеет наиболее высокий приоритет.

Если работа не вып-ся, за предоставленный квант вр., то она прерывается и помещается в конец 2-ой очереди. У нее ниже приоритет и работам из нее дают больший квант времени.

Пока в 1-ой очереди не иссякнут задачи, во 2-ю очередь они не поступят.

Все работы поступают в начало, в очередь Q0, имеющую наивысший приоритет. Этим работам (из очереди . Q0) дают наименьший квант вр. процессора. Если работы не вып-ся за предоставленный квант, она прерывается и помещается в Q1. Работы из Q1 имеют меньший приоритет, но больший квант вр.

Таким образом для длинных работ число прерываний сокращается. Способ организации ОС влияет на производительность ОС.

3.Синхронизация процессов. Методы синхронизации процессов. Синхронизация методом взаимных исключений.

Синхронизация необходима, чтобы избежать гонок и тупиков во взаимодействующих процессах, если эти процессы исполняются независимо. Синхронизация возможна как на уровне общих переменных, так и на уровне устройств. Если существует взаимодействие процессов на уровне обмена данными, процесс-читатель должен обратиться к данным только после того, как они помещены процессом писателем в буфер. Если процесс-читатель обратился к ним раньше, то к нему возвратится старое значение, которое является неверным. Синхронизация также необходима при использовании нескольких аппаратных конструкций несколькими процессами. Существует 2 подхода к синхронизации процессов: средствами пользователя и средствами ОС. В первом случае применяют блокирующую переменную, которая доступна всем процессам, часто ее называют глобальной.

Для того, чтобы запущенный процесс долгое время не находился в петле ожидания применяют метод, который позволяет перевести этот процесс в состояние ожидания, в котором он не потребляет процессорное время. Такое возможно при использовании системных вызовов. Такой метод применим в тех случаях, когда критические секции имеют достаточно большой объем вычислительной работы. Если затраты времени на системные вызовы будут сравнимы по времени с работой критической секции, то производительность такой системы будет понижаться.

Метод блокирующих переменных состоит в том, что с каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 1, если ресурс свободен (то есть ни один процесс не находится в данный момент в критической секции, связанной с данным процессом), и значение 0, если ресурс занят. Операция проверки и установки блокирующей переменной должна быть неделимой, то есть прерывания между проверкой и установкой должны быть запрещены. Поясним это. Пусть в результате проверки переменной процесс определил, что ресурс свободен, но сразу после этого, не успев установить переменную в 0, был прерван. За время его приостановки другой процесс занял ресурс, вошел в свою критическую секцию, но также был прерван, не завершив работы с разделяемым ресурсом. Когда управление было возвращено первому процессу, он, считая ресурс свободным, установил признак занятости и начал выполнять свою критическую секцию. Таким образом, был нарушен принцип взаимного исключения, что может привести к не желаемым последствиям. Во избежание таких ситуаций в системе команд машины желательно иметь единую команду "проверка-установка", или же реализовывать этот механизм в специальных системных функциях (примитивах), которые бы запрещали прерывания на протяжении всей операции проверки и установки. Реализация критических секций с использованием блокирующих переменных имеет существенный недостаток: в течение времени, когда один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет выполнять действия по циклическому опросу блокирующей переменной, бесполезно тратя процессорное время.

Семафоры и мьютексы.

Впервые механизм семафоров предложил Дейкстра (в 1965 г). Он ввел понятие семафоров Дейкстры и операций P и V с ними. Семафор Дейкстры представляет собой целочисленную переменную, с которой связана очередь ожидающих процессов. Пытаясь пройти через семафор, процесс пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, процесс проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), процесс останавливается и ставится в очередь к переменной. Закрытие семафора соответствует захвату ресурса, доступ к которому контролируется этим семафором. Процесс, закрывший семафор, захватывает ресурс. Если ресурс захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с ресурсом, процесс увеличивает значение семафора на единицу, открывая его. При этом первый из стоявших в очереди процессов активизируется, вычитает из значения семафора единицу, и снова закрывает семафор. Если же очередь была пуста, то ничего не происходит, просто семафор остается открытым. Тогда первый процесс, подошедший к семафору, успешно пройдет через него. Это действительно похоже на работу железнодорожного семафора, контролирующего движение поездов по одноколейной ветке. Наиболее простым случаем семафора является двоичный семафор. Начальное значение переменной такого семафора равно 1, и она может принимать только значения 1 и 0. Двоичный семафор соответствует случаю, когда с разделяемым ресурсом в каждый момент времени может работать только одна программа. Семафоры общего вида могут принимать любые неотрицательные значения. Это соответствует случаю, когда несколько процессов могут работать с ресурсом одновременно, или когда ресурс состоит из нескольких независимых, но равноценных частей - например, несколько одинаковых принтеров. При работе с такими семафорами часто разрешают процессам вычитать и добавлять к переменной значения, большие единицы. Это соответствует захвату/освобождению нескольких частей ресурса. Для формализации вышеописанных действий Дейкстра ввел понятия P и V операций. Пусть D – семафор. Операции P и V определяются следующим образом:

операция P(D) – уменьшение D на 1, если D больше 0. Если D=0 то процесс, выдавший, операцию P ждет, пока D не станет > 0. Когда D станет > 0 выполнение процесса возобновится;

операция V(D) – переменная D увеличивается на 1 одним неделимым действием; выборка, инкремент, запоминание нового значения D не могут быть прерваны, и к D нет доступа другим процессам во время операции; В частном случае, когда семафор D может принимать только значения 0 и 1, он превращается в блокирующую переменную. Операция P заключает в себе потенциальную возможность перехода процесса, который ее выполняет, в состояние ожидания, в то время как V-операция может при некоторых обстоятельствах активизировать другой процесс, приостановленный операцией P . С помощью этого средства могут решаться не только проблемы взаимного исключения, но и более общие задачи синхронизации процессов.

Мьютекс, как и семафор, обычно используется для управления доступом к данным.

В отличие от объектов-потоков, объектов-процессов и объектов-файлов, которые при переходе в сигнальное состояние переводят в состояние готовности все потоки, ожидающие этого события, объект-мьютекс «освобождает» из очереди ожидающих только один поток.

Работа мьютекса хорошо поясняется в терминах «владения». Пусть поток, который, пытаясь получить доступ к критическим данным, выполнил системный вызов Wait(X), где X — указатель на мьютекс. Предположим, что мьютекс находится в сигнальном состоянии, в этом случае поток тут же становится его владельцем, устанавливая его в несигнальное состояние, и входит в критическую секцию. После того как поток выполнил работу с критическими данными, он «отдает» мьютекс, устанавливая его в сигнальное состояние. В этот момент мьютекс свободен и не принадлежит ни одному потоку. Если какой-либо поток ожидает его освобождения, то он становится следующим владельцем этого мьютекса, одновременно мьютекс переходит в несигнальное состояние.

Соседние файлы в папке госы