Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Processes - Metodicka (edited) with MPI - last....doc
Скачиваний:
59
Добавлен:
22.12.2018
Размер:
1.59 Mб
Скачать
      1. Планирование процессов.

Рассмотрим два активных процесса, разделяющих процессор, причем таких, что ни их процессы-предки, ни они сами не меняли составляющую P_NICE системным вызовом nice(). Тогда P_NICE=NZERO и оба процесса имеют начальное значение приоритета P_PRI=P_USER, так как для них обоих в начальный момент P_CPU=0. Пусть прерывание по таймеру происходит через N единиц времени, и каждый раз значение P_CPU увеличивается на единицу, а в вычисление приоритета составляющая P_CPU входит с коэффициентом 1/A. Таким образом, дополнительная единица в приоритете процесса, занимающего процессор, «набежит» через А таймерных интервалов. Значение P_CPU второго процесса остается неизменным, и его приоритет остается постоянным. Через NA единиц времени разница приоритетов составит единицу в пользу второго процесса и произойдет смена процессов на процессоре.

    1. Принципы организация свопинга.

В системе определенным образом выделяется пространство для области свопинга. Есть пространство оперативной памяти, в котором находятся процессы, обрабатываемые системой в режиме мультипрограммирования. Есть область на ВЗУ, предназначенная для откачки этих процессов по мере необходимости. Упрощенная схема планирования подкачки основывается на использовании некоторого приоритета, который называется P_TIME и также находится в контексте процесса. В этом параметре аккумулируется время пребывания процесса в состоянии мультипрограммной обработки, или в области свопинга. В поле P_TIME существует счётчик выгрузки (outage) и счётчик загрузки (inage).

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

Часть III. Реализация взаимодействия процессов.

В этой части будет рассмотрен весь спектр средств межпроцессного взаимодействия, которые предоставляет программисту ОС UNIX. Отметим, что многие из этих средств (такие как сигналы, средства IPC, сокеты, MPI) или их аналоги имеются и в других операционных системах. Таким образом, данное рассмотрение будет полезно в целом для формирования представления о многообразии механизмов взаимодействия процессов, теоретические основы которых были рассмотрены ранее.

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

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

Первая проблема представляет собой необходимость выбора пространства имен процессов-отправителей и получателей или имен некоторых объектов, через которые осуществляется взаимодействие. Эта проблема решается по-разному в зависимости от конкретного механизма взаимодействия. В системах, обеспечивающих взаимодействие процессов, функционирующих на различных компьютерах в сети используется адресация, принятая в конкретной сети ЭВМ (примером могут служить аппарат сокетов и MPI). В средствах взаимодействия процессов, локализованных в пределах одной ЭВМ, способ именования зависит от конкретного механизма взаимодействия. В частности, для ОС UNIX механизмы взаимодействия процессов можно разделить на те средства, которые доступны исключительно родственным процессам, и средства, доступные произвольным процессам7 (см. также Рис. 14).

При взаимодействии родственных процессов проблема именования решается за счет наследования потомками некоторых свойств своих прародителей. Например, в случае неименованных каналов процесс-родитель для организации взаимодействия создает канал. Дескрипторы, ассоциированные с этим каналом, наследуется сыновними процессами, тем самым создается возможность организации симметричного (ибо все процессы изначально равноправны) взаимодействия родственных процессов. Другой пример – взаимодействие процессов по схеме главный-подчиненный (трассировка процесса). Данный тип взаимодействия асимметричный: один из взаимодействующих процессов получает статус и права «главного», второй - «подчиненного». Главный – это родительский процесс, подчиненный – сыновний. В данном случае проблема именования снимается, так как идентификаторы процесса-сына и процесса-отца всегда доступны им обоим и однозначно определены.

При взаимодействии произвольных процессов не происходит наследования некоторых свойств процессов, которые могут использоваться для именования. Поэтому в данном случае обычно используются две схемы: первая – использование для именования идентификаторов взаимодействующих процессов (к примеру, аппарат передачи сигналов); вторая – использование некоторого системного ресурса, обладающего уникальным именем. Примером последнего могут являться именованные каналы, использующие для организации взаимодействия процессов файлы специального типа (FIFO-файлы).

Рис. 14 Классификация средств взаимодействия процессов ОС UNIX

Другая проблема организации взаимодействия – это проблема синхронизации взаимодействующих процессов. Любое взаимодействие процессов представимо в виде оказания одним процессом воздействия на другой процесс либо использования некоторых разделяемых ресурсов, через которые возможна организация обмена данными. Первое требование к средствам взаимодействия процессов – это атомарность (неразделяемость) базовых операций. Синхронизация должна обеспечить атомарность операций взаимодействий или обмена данными с разделяемыми ресурсами. К примеру, система должна блокировать начало чтения данных из некоторого разделяемого ресурса до того, пока начавшаяся к этому моменту операция записи по этому ресурсу не завершится.

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

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

Ниже будут рассмотрены конкретные средства взаимодействия процессов, предоставляемые ОС UNIX.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]