- •Тема 1. История развития операционных систем. Типы операционных систем.
- •1. Понятие и эволюция операционных систем
- •1.1. Определение операционной системы
- •1.2. История развития операционных систем
- •Понятие и эволюция операционных систем
- •1.1 Определение операционной системы
- •1. 2 История развития операционных систем
- •Тема 2. Основные характеристики и принципы построения операционных систем.
- •1. Основные характеристики ос
- •2. Принципы построения ос
- •Основные характеристики ос
- •Принципы построения ос
- •Тема 3. Общая структура программного обеспечения и операционных систем эвм
- •Структура ос.
- •Управление процессами
- •Управление основной памятью
- •Управление внешней памятью
- •Сервисы операционных систем
- •Особенности методов построения
- •Тема 4.Диаграмма перехода процесса
- •Основные состояния процесса:
- •Дополнительные состояния процесса:
- •Операции над процессами
- •Основная концепция обработки прерываний
- •Тема 5. Контекст процесса и переключение контекста
- •Переключения контекста в ec эвм
- •Тема 6. Синхронизация и кооперация процессов
- •If q(s)? 0 очередь не пуста?
- •Тема 7. Тупики: условия возникновения тупиков, предотвращения тупиков
- •Модуль 5. Управление основной памятью
- •Тема 8.Управление реальной памятью
- •Тема 9. Понятие виртуальной памяти
- •Концепция виртуальной памяти
- •1.Признак обращения 0 - было
- •2.Признак модификации записи 0 - неизменен.
- •Тема 10. Страничная организация. Сегментная организация. Странично-сегментная организация. Двухуровневая страничная организация
- •Динамическая страничная организация
- •Сегментная организация виртуальной памяти
- •Комбинированная странично-сегментная организация памяти
- •Двухуровневая страничная организация
- •Тема 11. Управление процессорами и заданиями в однопроцессорном вычислительном комплексе. Алгоритмы планирования процессов
- •Тема 12. Управление процессорами и заданиями в мультипроцессорном вычислительном комплексе
- •Решение фирмы Сompaq?
- •Тема 13.Управление периферийными устройствами. Эволюция систем ввода-вывода, каналы ввода вывода. Регистры и команды ввода вывода.
- •Организация программного обеспечения ввода-вывода
- •Тема 14.Система управления файлами
- •Система управления файлами
- •Модуль 8. Управление данными
- •Тема 15. Способы доступа и организации файлов. Распределение файлов на диске
- •Способы доступа и организации файлов
- •Управление внешней памятью
- •Способы распределения памяти на диске
- •Тема 16. Требования и тенденции построения ос
- •Требования, предъявляемые к ос 90-х годов
- •Тенденции в структурном построении ос
- •Тема 17. Unix и ms Windows nt
If q(s)? 0 очередь не пуста?
THEN вывести процесс из очереди (выдать ресурс)
ELSE S:=S+1 освободить ресурс
Если семафор управляет одним ресурсом, то это двоичный семафор и Sпринимает значение{0,1}. Если он управляет группой ресурсов, то в переменнойSустанавливается число ресурсов. Для работы семафора необходимо один раз инициировать процесс и обрабатывать критические участки операциямиP(S) иV(S).
Рассмотрим использование семафоров на классическом примере взаимодействия двух процессов, выполняющихся в режиме мультипрограммирования, один из которых пишет данные в буферный пул, а другой считывает их из буферного пула. Пусть буферный пул состоит из Nбуферов, каждый из которых может содержать одну запись. Процесс "писатель" должен приостанавливаться, когда все буфера оказываются занятыми, и активизироваться при освобождении хотя бы одного буфера. Напротив, процесс "читатель" приостанавливается, когда все буферы пусты, и активизируется при появлении хотя бы одной записи.
Введем два семафора: e- число пустых буферов иf- число заполненных буферов. Предположим, что запись в буфер и считывание из буфера являются критическими секциями (как в примере с принт-сервером в начале данного раздела). Введем также двоичный семафорb, используемый для обеспечения взаимного исключения. Тогда процессы могут быть описаны следующим образом:
// Глобальные переменные
#define N 256
int e = N, f = 0, b = 1;
void Writer ()
{
while(1)
{
PrepareNextRecord(); /* подготовка новой записи */
P(e); /* Уменьшить число свободных буферов, если они есть */
/* в противном случае - ждать, пока они освободятся */
P(b); /* Вход в критическую секцию */
AddToBuffer(); /* Добавить новую запись в буфер */
V(b); /* Выход из критической секции */
V(f); /* Увеличить число занятых буферов */
}
}
void Reader ()
{
while(1)
{
P(f); /* Уменьшить число занятых буферов, если они есть */
/* в противном случае ждать, пока они появятся */
P(b); /* Вход в критическую секцию */
GetFromBuffer(); /* Взять запись из буфера */
V(b); /* Выход из критической секции */
V(e); /* Увеличить число свободных буферов */
ProcessRecord(); /* Обработать запись */
}
}
Достоинства:
1.Пассивное ожидание (постановка в очередь и автоматическая выдача ресурсов)
2.Возможность управления группой однородных ресурсов.
Рисунок 3. Критические участки с использованием операций на семафоре
Недостатки:
Неправильное, либо умышленное использование операций на семафоре допускает нарушение работоспособности параллельных систем.
Действительно, если в рассмотренном примере переставить местами операции P(e) и P(b) в программе "писателе", то при некотором стечении обстоятельств эти два процесса могут взаимно заблокировать друг друга. Так, пусть "писатель" первым войдет в критическую секцию и обнаружит отсутствие свободных буферов; он начнет ждать, когда "читатель" возьмет очередную запись из буфера, но "читатель" не сможет этого сделать, так как для этого необходимо войти в критическую секцию, вход в которую заблокирован процессом "писатели".
Монитор - это механизм организации параллелизма высокого уровня, который содержит множество переменных состояний, очередей и множество процедур, необходимых для реализации динамического распределения и доступа к общим ресурсам.
Рисунок 4. Схема использования монитора. Критический участок программируется в мониторе
Монитор представляет собой централизованный семафор или совокупность семафоров, спрятанных от пользователей процессов в одном системном процессе, и потому, недоступным пользовательским программам, которые не могут их нарушить. Процессы, которые использует монитор для синхронизации, не имеют прямого доступа к переменным состояния, и могут воспользоваться ресурсами только путем вызова процедур монитора (или макрокоманд).
Монитор при создании автоматически инициирует число ресурсов и включает процедуры, позволяющие блокировать и активизировать процессы. Вход в монитор находится под жестким контролем системы и только через монитор осуществляется взаимоисключение процессов. Если процесс обращается к монитору и требуемый ресурс занят, то процесс переводится в состояние ожидания. Со временем некоторый процесс обращается к монитору для возвращения ресурса и монитор оповещает процесс о том, что может выделить ресурс и покинуть очередь. Режимом ожидания управляет сам монитор, который для гарантии получения ресурса процессом повышает приоритеты процессов критических областей.
Достоинства монитора:
Логические возможности не меньше, чем у семафоров.
Упрощение написания параллельных программ. Достаточно знать процедуры организации параллельных вычислений.
Повышение надежности параллельных систем, так как полностью защищает управление ресурсом.
Обеспечение гарантированного получения ресурса.
Модуль 4. Управление асинхронными параллельными процессами