Взаимодействие процессов. Транспортеры, очереди, сигналы, семафоры. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Взаимодействие процессов. Транспортеры, очереди, сигналы, семафоры.



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

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

Очереди могут обеспечить передачу или использование общих данных без перемещения данных, а с передачей элемента очереди, содержащего указатель данных и объем массива данных. Очередь используется вместе с механизмом общей памяти. Элемент очереди может быть считан с уничтожением или без уничтожения этого элемента. Чтение элемента может осуществляться в соответствии с механизмом очереди, например, fifo или стека. Чтение элементов очереди осуществляется только процессом, создавшим очередь. Все другие процессы могут только записать элемент в очередь. Создающий очередь процесс может выполнять следующие действия над очередью: 1)создание очереди; 2)просмотр очереди; 3)чтение очереди; 4)закрытие очереди. Записывающий процесс осуществляет действия: 1)открыть очередь; 2)записать в очередь; 3)закрыть очередь. Имя очереди, которое присваивается создающим процессом, имеет вид полной спецификации файла. Ожидание элемента в очередь организуется с помощью семафора, сигнализирующего о записи элемента в очередь. Дополнительные функции для работы с очередью: 1)определение количества элементов в очереди в текущий момент; 2)очистка очереди, создавшим ее процессом. Преимущества очереди: 1)передача данных осуществляется по указателю без копирования; 2)гибкие изменения порядка передачи и доступа; 3)возможность просмотра элементов очереди без их удаления.

Сигналы – это механизм передачи требования от одного процесса к другому на немедленное выполнение действия. Обработчик сигнала создается процессом с перемещается в начало первого потока процесса. При передаче управления обработчику передается адрес возврата и тип принятого сигнала. Процесс, посылающий сигнал типа флаг может передавать дополнительную информацию обработчику сигналов. Характер выполняемых действий при выполнении сигнала: 1)обработка системной ошибки при появлении сигнала; 2)блокирование сигнала; 3)передача управления подпрограмме.

Семафоры являются механизмом передачи сообщения от одного потока к другому о наступлении некоторого события. Различают семафоры системные и оперативной памяти. Семафоры оперативной памяти – двойное слово в памяти системы, его описатель (адрес, место в памяти), такие семафоры не создаются, а устанавливаются в определенном состоянии. Процессы, использующие семафоры оперативной памяти, должны иметь доступ к соответствующему сегменту памяти. ОС такие семафоры не обслуживает и не сообщает об их освобождении или захвате. При создании семафора или его открытии возвращается описатель семафора, включающий его имя. ОС контролирует завершение каждого процесса, владеющего системным семафором, и освобождает его для процессов. Если семафор свободен, то он захватывается, вызывающими его процессами. Если семафор занят, то вызывающий его поток переходит в режим ожидания освобождения семафора и ожидает истечения времени. Если семафор освобожден всеми использующими его процессами, то он удаляется из системы. Управление семафором реализуется с помощью функций: 1)установки семафора с целью сигнализации; 2)ожидания, вызывающим потоком, пока семафор не будет выключен; 3)ожидания потоков выключения одного из нескольких семафоров.

ОС использует разные термины для определения способов межпроцессорного взаимодействия. В OS/2, MS Windows существует специальный термин (механизм) для взаимодействия процессов в реальном времени (DDE – Dynamic Data Exchange). Этот интерфейс позволяет хранить объекты, созданные одной программой, в объектах, созданных другой программой, а также редактировать, печатать их без нарушения целостности информации и связей. Одним из наиболее простых, удобных и интуитивно понятных интерфейсов межпрограммного взаимодействия является буфер обмена.


8)Планирование работы процессора. Стратегии планирования процессора.

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

Используются следующие критерии, позволяющие сравнивать алгоритмы краткосрочных планировщиков:

1. утилизация CPU (использование) CPU utilization. Утилизация CPU теоретически может находиться пределах от 0 до 100%. В реальных системах утилизация CPU колеблется в пределах 40% для легко загруженного CPU, 90% для тяжело загруженного CPU.

2. пропускная способность CPU throughput. Пропускная способность CPU может измеряться количеством процессов, которые выполняются в единицу времени.

3. время оборота (turnaround time) для некоторых процессов важным критерием является полное время выполнения, то есть интервал от момента появления процесса во входной очереди до момента его завершения. Это время названо временем оборота и включает время ожидания во входной очереди, время ожидания в очереди готовых процессов, время ожидания в очередях к оборудованию, время выполнения в процессоре и время ввода - вывода.

4. время ожидания (waiting time). Под временем ожидания понимается суммарное время нахождения процесса в очереди готовых процессов.

5. время отклика (response time) для сугубо интерактивных программ важным показателем является время отклика или время, прошедшее от момента попадания процесса во входную очередь до момента первого обращения к терминалу.

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

1) Первый пришел - первый обслуживается FIFO. first come - first served (FCFS).

Операционная система использует process control block для переключения процессора с одного процесса на другой. FCFS является наиболее простой стратегией планирования процессов и заключается в том, что процессор передается тому процессу, который раньше всех других его запросил. Когда процесс попадает в очередь готовых процессов, process control block присоединяется к хвосту очереди. Среднее время ожидания для стратегии FCFS часто весьма велико и зависит от порядка поступления процессов в очередь готовых процессов. Стратегии FCFS присущ так называемый “эффект конвоя”. В том случае, когда в компьютере имеется один большой процесс и несколько малых, то все процессы собираются в начале очереди готовых процессов, а затем в очереди к оборудованию. Таким образом, “эффект конвоя” приводит к снижению загруженности как процессора, так и периферийного оборудования.

2) Стратегия - наиболее короткая работа! SJF

SJF — Shortest Job First. Одним из методов борьбы с “эффектом конвоя” является стратегия, позволяющая процессу из очереди выполняться первым.

Легко посчитать, что при использовании FCFS - стратегии среднее время ожидания для тех же процессов равно 10.25 мс, таким образом стратегия SJF снижает время ожидания очереди. Наибольшая трудность в практической реализации SJF заключается в невозможности заранее определить величину времени последующего обслуживания. Поэтому стратегия SJF часто применяется в долгосрочных планировщиках, обслуживающих пакетный режим. В этом случае вместо величины времени последующего обслуживания используется допустимое максимальное время выполнения задания, которое программист должен специфицировать перед отправкой задания в пакет.

3)Приоритетное планирование.

Описанные ранее стратегии могут рассматриваться как частные случаи стратегии приоритетного планирования. Эта стратегия предполагает, что каждому процессу приписывается приоритет, определяющий очередность предоставления ему CPU. Например, стратегия FCFS предполагает, что все процессы предполагает, что все процессы имеют одинаковые приоритеты, а стратегия SJF предполагает, что приоритет есть величина, обратная времени последующего обслуживания. Приоритет — это целое положительное число, находящееся в некотором диапазоне, например от 0 до 7, от 0 до 4095. Будем считать, что чем меньше значение числа, тем выше приоритет процесса. Приоритеты определяются исходя из совокупности внутренних и внешних по отношению к операционной системе факторов.

Внутренние факторы:

1. требования к памяти

2. количество открытых файлов

3. отношение среднего времени ввода - вывода к среднему времени CPU и так далее

Внешние факторы:

1. важность процесса

2. тип и величина файлов, используемых для оплаты

3. отделение, выполняющее работы и так далее

Внутренние факторы могут использоваться для автоматического назначения приоритетов самой операционной системой, а внешние для принудительного, с помощью оператора. Главный недостаток приоритетного планирования заключается в возможности блокирования на неопределенно долгое время низкоприоритетных процессов. Известен случай, когда в 1973 году в Массачусетском технологическом институте MIT при остановке компьютера IBM 7094 в очереди готовых процессов были обнаружены процессы, представленные в 1967 и все еще не выполненные. Для устранения отмеченного недостатка используются следующие методы: процессы, время ожидания которых превышает фиксированную величину, например 15 минут, автоматически получают единичное приращение приоритета.

4) “Карусельная” стратегия планирования. RR-Round Robin.

Round Robin стратегия применяется в системах разделения времени. Определяется небольшой отрезок времени, названный квантом времени (10..100 мс). Очередь готовых процессов рассматривается как кольцевая. Процессы циклически перемещаются по очереди, получая CPU на время, равное одному кванту. Новый процесс добавляется в хвост очереди. Если процесс не завершился в пределах выделенного ему кванта времени, его работа принудительно прерывается, и он перемещается в хвост очереди. Свойства Round Robin стратегии сильно зависят от величины временного кванта q. Чем больше временной квант, тем дольше Round Robin стратегия приближается к FCFS стратегии (для рассмотренного примера, если q>24 мс, то -> FCFS). При очень малых значениях временного кванта Round Robin стратегия называют разделением процессора — processor sharing. Теоретически это означает, что каждый из N процессов работает со своим собственным процессором, производительность процессора равна 1/N от производительности физического процессора.

5)планирование с использованием многоуровневой очереди.(Multilevel queue scheduling).

Эта стратегия разработана для ситуации, когда процессы могут быть легко классифицированы на несколько групп, например, часто процессы разделяют на две группы: интерактивные (процессы переднего плана) и пакетные (фоновые). Интерактивные и пакетные процессы имеют различные требования к краткосрочному планировщику, например по отношению ко времени отклика. Стратегия многоуровневой очереди разделяет очередь готовых процессов на несколько очередей, в каждой из которых находятся процессы с одинаковыми свойствами, и каждый из которых может планироваться индивидуальной стратегией, например Round Robin стратегия для интерактивных процессов и FCFS для пакетных процессов. Взаимодействие очередей осуществляется по следующим правилам: ни один процесс с более низким приоритетом не может быть запущен, пока не выполнятся процессы во всех очередях с более высоким приоритетом. Работа процесса из очереди с более низким приоритетом может быть приостановлена, если в одной из очередей с более высоким приоритетом появился процесс.

6)Программирование с использованием многоуровневой очереди с обратными связями (multilevel feedback queue sheduling).

Обычная многоуровневая очередь не допускает перемещения процессов между очередями. Многоуровневая очередь с обратными связями предполагает, что процессы при определенных условиях могут перемещаться между очередями. Процессы первоначально попадают в очередь 0, где каждому из них предоставляется квант времени, равный 8 мс. Те процессы, которые не успели выполниться в течение этого времени, перемещаются в очередь 1. Процессы из очереди 1 начинают обрабатываться только тогда, когда очередь 0 становиться пустой. Те процессы, которые не выполнились в очереди 1 (q=16 мс) перемещаются в очередь 2. Процессы из очереди 2 будут обрабатываться только в том случае, если становятся пустыми очереди 0 и 1.



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 929; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.202.4 (0.011 с.)