Главная страница

Процессы. Процессы и потоки. Процессы и потоки


Скачать 0.73 Mb.
НазваниеПроцессы и потоки
АнкорПроцессы
Дата09.03.2023
Размер0.73 Mb.
Формат файлаppt
Имя файлаПроцессы и потоки.ppt
ТипПрограмма
#975992
страница6 из 8
1   2   3   4   5   6   7   8

Состояние состязания (2)





Процессы находятся в состязательной ситуации.


Пример №2.
Студент в столовой.





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





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

Критические области





Для правильной совместной работы параллельных процессов и эффективного использования общих данных необходимо выполнение четырех условий:
1. Два процесса не должны одновременно находиться в критических областях.
2. В программе не должно быть предположений о скорости или количестве процессоров.
3. Процесс, находящийся вне критической области, не может блокировать другие процессы.
4. Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.

Критические области


Взаимное исключение использования критических областей




Взаимное исключение с активным ожиданием





Запрещение прерываний
Переменные блокировки
Строгое чередование
Алгоритм Петерсона
Команда TSL
Семафоры
Мьютексы
Мониторы
Передача сообщений
Барьеры





способы реализации

Запрещение прерываний





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

Запрещение прерываний (пример)





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

Переменные блокировки





Рассмотрим одну совместно используемую переменную блокировки, изначально равную 0.
Если процесс хочет попасть в критическую область, он предварительно считывает значение переменной блокировки.
Если переменная равна 0, процесс изменяет ее на 1 и входит в критическую область.
Если же переменная равна 1, то процесс ждет, пока ее значение сменится на 0.

Переменные блокировки (недостатки)





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

Строгое чередование





Третий метод реализации взаимного исключения.

Строгое чередование





Переменная turn=0 отслеживает, чья очередь входить в критическую область.
Вначале процесс 0 проверяет значение turn, считывает 0 и входит в критическую область.
Процесс 1 также проверяет значение turn, считывает 0 и после этого входит в цикл, непрерывно проверяя, когда же значение turn будет равно 1.
Постоянная проверка значения переменной в ожидании некоторого значения называется активным ожиданием. Активное ожидание используется только в случае, когда есть уверенность в небольшом времени ожидания.
Блокировка, использующая активное ожидание, называется спин-блокировкой.

1   2   3   4   5   6   7   8


написать администратору сайта