Операционные системы. А. Ю. Кручинин
Чтение книги онлайн.

Читать онлайн книгу Операционные системы - А. Ю. Кручинин страница 10

СКАЧАТЬ target="_blank" rel="nofollow" href="#b00000264.jpg"/>

      Рисунок 12 – Пакет потоков в пространстве пользователя (а); пакет потоков, управляемый ядром (б)

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

      2.3 Межпроцессное взаимодействие

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

      • передача информации от одного процесса другому;

      • контроль над деятельностью процессов (к примеру, гарантии, что два процесса не пересекутся в критических ситуациях);

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

      Эти же пункты, не считая первого, относятся и к потокам.

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

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

      • два процесса не должны одновременно находиться в критических областях;

      • в программе не должно быть предположений о скорости и количестве процессоров;

      • процесс, находящийся вне критической области, не может блокировать другие процессы;

      • невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.

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

      В абстрактном виде требуемое поведение процессов представлено на рисунке 13. Процесс А попадает в критическую область в момент времени T1. Чуть позже, в момент времени T2, процесс Б пытается попасть в критическую область, но ему это не удается, поскольку в критической области уже находится процесс А, а два процесса не должны одновременно находиться СКАЧАТЬ