Взаимодействие процессов.

Дисциплина диспетчерезации.

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

Одной из самых очевидных дисциплин является простая круговая диспетчерезация(Round robin scheduling). Ее суть в следующем – все активные процессы считаются равноправными и образуют круговую очередь. Каждый процесс получает от системы квант времени по истечении которого планировщик выбирает для выполнения следующий процесс из очереди. Длительность кванта может зависеть от одного из нижеперечисленных событий или их комбинаций:

1. Выполнения процесса завершено

2. Процесс перешел в состояние ожидания

3. Процессор потребовался для обслуживания процесса, имеющего более высокий приоритет.

4. Завершился заранее выделенный процессу квант времени.

5. Произошла ошибка.

 

05.12.2012

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

1. Буфер заполнен – ожидает процесс – производитель.

2. Буфер пуст – ожидает процесс – потребитель

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

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

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

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

1. Создание

2. Просмотр

3. чтение

4. закрытие

Записывающий процесс:

1. открыть

2. записать

3. закрыть

Имя очереди которое присваивается создающим процессом имеет вид полной спецификации файлов. Ожидание элементов в очереди организуется с помощью семафора, сигнализирующего о записи элемента в очередь. Для работы с очередью определены такие дополнительные функции:

1. Определение количества элементов в очереди в текущий момент.

2. Очистка очереди с создавшим его процессом

Сигналы – является механизмом передачи требования от одного процесса к другому на немедленное выполнение действия, обработчик сигнала создается процессом и помещается вначале первого потока процесса. Является аналогом обработка прерывания при передаче управления обработчику передается адрес возврата и тип принятого сигнала. Процесс посылающий сигнал типа «Флаг» может передать дополнительную информацию обработчику сигнала. Характер выполняемых действий при возникновении сигнала:

1. Обработка системной ошибки, при появлении сигнала

2. Блокирование сигнала

3. Передача управления подпрограмме

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

процессами, то он удаляется из системы.

Управление семафором осуществляется функциями:

1. Установка семафора с целью сигнализации

2. Ожидание вызывающим потоком пока семафора не будет выключен

3. Ожидания потоком выключения одного из нескольких семафоров