- •1.Классификация программного обеспечения. Функции операционных систем.
- •2.Примеры операционных систем. Требования, предъявляемые к операционной системе на примере операционной системы управления химическим реактором.
- •3.Механизмы выполнения программ: понятия активности, контекста активности, точки наблюдения.
- •4.Механизмы выполнения программ: стек выполнения, алгоритм вызова процедур.
- •Приоритет и маскировка прерываний
- •Общая организация ввода/вывода
- •Адресация периферийных устройств
- •Управление периферийными устройствами
- •Принципы работы канала ввода-вывода. Буферный ввод-вывод.
- •Организация простейшей ос для одного пользователя исходя из метода нисходящей декомпозиции (мнд)
- •Система управления файлами.
- •Машина ввода вывода.
- •Стратегия выбора буфера.
- •Далее 4 и 5 работа
- •Взаимодействие совокупности процессов
- •Синхронизация процессов
- •Блокировка памяти
- •Проверка и установка
- •Монитор Хоара
- •Семафоры
- •Состав цепи доступа
- •Структура представлений. Дескрипторы
Взаимодействие совокупности процессов
Рассмотрим теперь выполнение совокупности процессов и их взаимодействие. Понятия, введенные в разд. , обобщаются следующим образом:
Определение 4.4
Трасса совокупности процессов - последовательность событий, составленных из данных о начале и конце каждого действия, при выполнении всех соответствующих программ.
Контексты разных процессов могут иметь общие части.
Определение 4.5
Два процесса называются независимыми, если их контексты не пересекаются.
Пусть имеются две разные программы P и Q со своими сегментами процедур и данных. Соответствующие им процессы обозначим p и q. Выполнение совокупности процессов (p,q) может происходить следующими путями, представленными на Рис. 4 .2.
Рис. 4.2. Совместное выполнение совокупности процессов.
По схеме 1 сначала полностью выполняется
один процесс, а затем - второй. Схема
этого типа является схемой последовательного
выполнения процессов p
и q. Она описывается
неравенством
.
По схеме 2 поочередно выполняется последовательность инструкций p, потом последовательность инструкций q, затем вновь последовательность следующих инструкций p и т.д., пока не окончатся оба процесса. Эта схема - схема псевдопараллельного выполнения. Процессы выполняются на одном процессоре.
По схеме 3 оба процесса выполняются одновременно на различных процессорах.
Схемы 2-го и 3-го типов описываются
неравенствами
и
.
Очевидно, при взаимодействии совокупности процессов, если они не являются независимыми, возникает проблема разделения ими общих ресурсов. Несмотря на то, что физические и логические ресурсы можно разделять, они обычно доступны в каждый момент только одному процессу.
Определение 4.6
Ресурс, который допускает обслуживание только одного пользователя за один раз, называется критическим ресурсом.
В схеме 2 взаимодействия процессов процессор является критическим ресурсом для процессов p и q.
Если несколько процессов хотят пользоваться критическим ресурсом в режиме разделения, им следует синхронизировать свои действия таким образом, чтобы этот ресурс всегда находился в распоряжении не более чем одного из них. Если один процесс пользуется в данный момент критическим ресурсом, то все остальные процессы, которым нужен этот ресурс, временно получают отказ и должны ждать, пока он не освободится. Внутри каждого процесса можно выделить места, в которых происходит обращение к критическим ресурсам. Эти места называются критическими участками. Критические участки должны быть взаимно исключаемыми.
Приведем пример критического участка. Пусть имеются два процесса p и q, каждый из которых изменяет значение одной общей переменной n. Например, переменной n может быть состояние банковского счета, на который p и q осуществляют вклады. Запишем соответствующие действия в программах p и q:
(процесс p)
(процесс q)
.
Распишем теперь эти действия в виде инструкций, обозначая соответствующие регистры Rp и Rq.
Листинг 4.1
ПРОЦЕСС p ПРОЦЕСС q (1) mov Rp,n ;загрузить n в Rp (1') mov Rq,n (2) add Rp,10 ;Rp:=Rp+10 (2') add Rq,20 (3) mov n,Rp ;заслать Rp в n (3') mov n,Rq
Если в результате функционирования
этих двух процессов действия будут
выполнены в следующем порядке:
1,1',2,2',3,3',
то счет увеличится лишь на 20 единиц, а
10 единиц будут потеряны. Чтобы избежать
этого, действия
и
должны выполняться в режиме
взаимного исключения.
Эти действия образуют критические
секции.
Другим характерным примером взаимодействия процессов является буферный ввод-вывод, в котором два процесса, выполняемых центральным процессором и каналом ввода-вывода, обмениваются информацией через общий буфер. Здесь процессы, находящиеся в отношении кооперации для выполнения общей цели - ввода-вывода информации, «конфликтуют» между собой за обладание разделяемым критическим ресурсом - буфером ввода-вывода. Конфликты могут выражаться в следующем:
попытка чтения из буфера, в котором нет ни одной записи;
попытка записи в переполненный буфер;
попытка чтения данных из буфера одним процессом, в то время как другой процесс выполняет запись в буфер.
Однако, так как группы операций, которые обращаются к разделяемому критическому ресурсу, являются критическими участками, то задачу обладания разделяемым критическим ресурсом можно свести к задаче взаимного исключения.
В общем случае проблему взаимного
исключения можно сформулировать в
следующей форме. Пусть
- последовательность циклических
процессов, программа каждого из которых
содержит критическую секцию (Листинг 4 .2).
Листинг 4.2
<инициализация> {--выполняется один
раз до начала всех процессов}
ПРОГРАММА
ПРОЦЕССА
while
true do
begin
<ПРОЛОГ>;
<КРИТИЧЕСКАЯ
СЕКЦИЯ>;
<ЭПИЛОГ>;
<ОСТАВШАЯСЯ
ЧАСТЬ ПРОГРАММЫ>;
end
