Операционные системы. Теория и практика. Замятин А.В. - 78 стр.

UptoLike

Составители: 

78
роятность возникновения взаимоблокировки и сравнить ее с вероятно-
стью ущерба от других отказов аппаратного и программного обеспече-
ния. Подход большинства современных ОС (Unix, Windows и др.) состо-
ит в том, чтобы игнорировать данную проблему в предположении, что
маловероятный случайный тупик предпочтительнее, чем внедрение
сложных и дорогостоящих средств борьбы с тупиками, и жертвовать
производительностью системы или удобством пользователей (например,
ограничивать пользователей в числе процессов, открытых файлов и т.п.)
не стоит.
3.3.6 Механизмы межпроцессного взаимодействия
Помимо решения задачи синхронизации процессов и потоков, в ОС
требуется обеспечение и обмена данными между ними. Если речь идет о
необходимости обмена данными между потоками одного процесса, то
решение этой задачи не представляет никакой сложности, т.к. они име-
ют общее адресное пространство и файлы, и получают беспрепятствен-
ный доступ к данным друг друга. Другое дело обмен данными пото-
ков, выполняющихся в рамках разных процессов. В этом случае обмену
препятствуют развитые средства ОС по защите процессов друг от друга,
находящихся к тому же в разных адресных пространствах.
Операционная система имеет доступ ко всем областям памяти, по-
этому она может играть роль посредника в информационном обмене по-
токов: при возникновении необходимости в обмене данными поток об-
ращается с запросом к ОС, по которому ОС, пользуясь своими привиле-
гиями, создает различные системные средства связи, такие, например,
как каналы, очереди сообщений или разделяемую память. Эти средства
(как и рассмотренные выше средства синхронизации процессов), отно-
сят к классу средств межпроцессного взаимодействия.
Следует помнить, что многие из средств межпроцессного обмена
данными выполняют также и функции синхронизации: в том случае, ко-
гда данные для процесса-получателя отсутствуют, последний перево-
дится в состояние ожидания средствами ОС, а при поступлении данных
от процесса-отправителя процесс-получатель активизируется.
Каналы. Один из методов взаимодействия между процессами по-
лучил название канал связи, конвейер или транспортер (англ. pipe)
однонаправленный механизм передачи данных (неструктурированного
потока байтов) между процессами без необходимости создания файла на
диске. Канал представляет собой буфер в оперативной памяти, поддер-
живающий очередь байт согласно FIFO. Для программиста, использу-
ющего канал, этот буфер выглядит как безымянный файл, в который
можно писать и читать, осуществляя тем самым обмен данными.