Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Процессам часто бывает необходимо взаимодействовать между собой. Например, в конвейере ядра выходные данные первого процесса должны передаваться второму и т. д. по цепочке. Поэтому необходимо правильно организованное взаимодействие между процессами, по возможности не использующее прерываний. Проблема разбивается на три пункта. Первый – это передача информации от одного процесса другому. Второй связан с контролем над деятельностью процессов: как гарантировать, что два процесса не пересекутся в критических ситуациях (представьте себе два процесса, каждый из которых пытается завладеть последним мегабайтом памяти). Третий касается согласования действий процессов: если процесс А должен поставлять данные, а процесс В выводить их на печать, то процесс В должен подождать и не начинать печатать, пока не поступят данные от процесса А. Важно понимать, что два из трех описанных пунктов в равной мере относятся и к потокам. Первый — передача информации — в случае потоков проблемой не является, поскольку у потоков общее адресное пространство (передача информации между потоками с разным адресным пространством уже является проблемой передачи информации между процессами). Остальные два с тем же успехом касаются потоков: те же проблемы, и те же решения.
Теперь рассмотрим некоторые примитивы межпроцессного взаимодействия, применяющиеся вместо циклов ожидания, в которых лишь напрасно расходуется процессорное время. Эти примитивы блокируют процессы в случае запрета на вход
в критическую область. Одной из простейших является пара примитивов sleep и
wakeup. Примитив sleep — системный запрос, в результате которого вызывающий
процесс блокируется, пока его не запустит другой процесс. У запроса wakeup есть
один параметр — процесс, который следует запустить. Также возможно наличие
одного параметра у обоих запросов — адреса ячейки памяти, используемой для
согласования запросов ожидания и запуска.
Дата публикования: 2015-01-26; Прочитано: 1136 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!