Методы взаимоисключений (53)

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

Задача должна быть решена чисто программным способом

Не должно существовать никаких предположений об относительных скоростях выполняющихся процессов

3. Если процесс исполняется в своем критическом участке, то не существует никаких других процессов, которые исполняются в своих соответствующих критических секциях. Условия взаимоисключения (mutual exclusion).

4. Процессы, которые находятся вне своих критических участков и не собираются входить в них, не могут препятствовать другим процессам входить в их собственные критические участки. Условия прогресса (progress).

5. Hе должно возникать бесконечного ожидания для входа процесса в свой критический участок. Условие ограниченного ожидания (bound waiting).

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

Семафоры и мониторы

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

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

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

Управление процессами и потоками. Взаимоблокировки. (6)

Основными функции подсистемы:

Создание

Для создания процесса должно произойти одно из следующих событий:

Инициализация ос

Выполнение запроса работающего процесса

Запрос пользователя на создание процесса

Инициирование пакетного задания

Создание ОС процесса для работы служб

Обеспечение ресурсами

процесс – контейнер для ресурсов, кроме процессорного времени. Оно распределяется между потоками.

Изоляция процессов

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

Планирование

Долгосрочное, среднесрочное, краткосрочное, ввода-вывода

Диспетчеризация потоков

Заключается в реализации найденного в результате планирования решения и проходит в

три этапа:

1) сохранение контекста текущего потока

2) загрузка контекста выбранного потока

3) запуск потока на выполнение

Организация межпроцессного взаимодействия

Синхронизация

Современные операционные системы предоставляют множество механизмов синхронизации, включая семафоры, критические области и события. Все эти механизмы работают с потоками, а не с процессами. Поэтому, когда поток блокируется на семафоре, другие потоки этого процесса могут продолжать работу.

Завершение и уничтожение процесса и потока

происходит благодаря одному из следующих событий:

1. обычный выход

2.  выход по ошибке

3.  выход по неисправимой ошибке

4.  уничтожение другим процессом – ОС предпринимает шаги, чтобы "зачистить следы" его пребывания в системе. Подсистема управления процессами закрывает все файлы, с которыми работал процесс, освобождает области оперативной памяти, отведенные под коды, данные и системные информационные структуры процесса. Выполняется коррекция всевозможных очередей ОС и список ресурсов, в которых имелись ссылки на завершаемый процесс.

Параллельное выполнение нескольких работ в рамках одного интерактивного приложения повышает эффективность работы пользователя

Взаимоблокировки. 4 способа решения проблемы:

Завершить или приостановить один из процессов

Аккуратно распределить ресурсы

Предотвратить проблему

Забить


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: