Примитивы бывают что блокируют и не блокируют, иногда они называются соответственно синхронными и асинхронными. При использовании примитива, который блокирует, процесс, который выдал запрос на его выполнение, прекращается к полному завершению примитива. Например, вызов примитива ПОЛУЧИТЬ прекращает процесс, который вызывает, к получению сообщения.
При использовании примитива, который не блокирует, управления поворачивается процесса, который вызывает, немедленно, еще до того, как необходимая работа будет выполнена. Преимуществом этой схемы есть параллельное выполнение процесса, который вызывает, и процесса передачи сообщения. Обычно в ОС есть один из двух видов примитивов и очень редко - оба. Однако выигрыш в производительности при использовании примитивов, которые не блокируют, компенсируется серьезным недостатком: отправитель не может модифицировать буфер сообщения, пока сообщение не отправлено, а узнать, отправленное ли сообщение, отправитель не может. Отсюда сложности в построении программ, которые передают последовательность сообщений с помощью примитивов, которые не блокируют.
Есть два возможных выхода. Первое решение - это заставить ядро копировать сообщение в свой внутренний буфер, а потом решить процесса продолжить выполнение. С точки зрения процесса эта схема ничем не отличается от схемы вызова, который блокирует: как только процесс снова получает управление, он может повторно использовать буфер.
Второе решение состоит в прерывании процесса-отправителя после отправления сообщения, чтобы проинформировать его, что буфер снова доступный. Здесь не нужно копирования, которое экономит время, но прерывание пользовательского уровня делает программирование запутанным, сложным, может привести к возникновению гонок.
Вопросом, тесно связанным из что блокируют и не блокируют вызовами, есть вопросы тайм-аутов. В системе с вызовом , который блокирует , ПОСЛАТЬ при отсутствия ответа процесс , который вызывает , может заблокироваться навсегда. Для предотвращения такой ситуации в некоторых системах процесс , который вызывает , может задать временный интервал, на протяжении которого он ждет ответ. Если за это время сообщения не поступает, вызов ПОСЛАТЬ завершается с кодом ошибки.
Возможно стоит прочитать:
- А вот статистика, полученная годом позже, в ноябре 2007 года:
- Определить термин CMS довольно трудно
- Указатель текстов
- Область Cache Settings
- Default WYSIWYG Editor
- Лента новостей
- Алгоритм Token Ring
- Неделимые транзакции
- Примитивы, которые блокируют и не блокируют
- Современные архитектуры файловых систем
- Интерфейсы
- Пиктограмма Menus
- Четвертый период (1980 - действительное время)
- Эволюция ОС: Второй период (1955 - 1965)
- Многозадачность
- Распрелеяемые роли
- Модификация имени меню
- Коммерческие версии микроядер
- Основной и резервные контроллеры домена
- Семейство CORBA
- Интерфейс сервиса каталогов
- Очередь незавершенных работ
- Средства защиты объектов в NDS
- Третий период (1965 - 1980)
- Вопрос реализации нитей
- Инсталляция Joomla! на виртуальном сервере в сети
- Шаг 6: главная конфигурация
- Введите следующие параметры в инсталляции ХАМРР Lite:
- Изменения в деталях
- Проекты Google Summer of Code
- Алгоритм Token Ring
- Неделимые транзакции
- Примитивы, которые блокируют и не блокируют
- Современные архитектуры файловых систем
- Четвертый период (1980 - действительное время)
- Эволюция ОС: Второй период (1955 - 1965)
- Многозадачность
- Распрелеяемые роли
- Коммерческие версии микроядер
- Основной и резервные контроллеры домена
- Семейство CORBA
- Интерфейс сервиса каталогов
- Очередь незавершенных работ
- Средства защиты объектов в NDS
- Третий период (1965 - 1980)
- Вопрос реализации нитей
- Независимая от устройств прослойка операционной системы
- Примитивы, которые блокируют и не блокируют
- Разные уровни привилегий
- Алгоритмы планирования процессов
- Четвертый период (1980 - действительное время)
- Контекст и дескриптор процесса
- Многозадачность
- Особенности аппаратных платформ
- Файловая система AFS
- Семейство CORBA
- Современные модели
- Интерфейс сервиса каталогов
- Очередь незавершенных работ
- Средства защиты объектов в NDS
- Централизованный алгоритм
- Вопрос реализации нитей
- Независимая от устройств прослойка операционной системы
- Примитивы, которые блокируют и не блокируют
- Разные уровни привилегий
- Алгоритмы планирования процессов
- Четвертый период (1980 - действительное время)
- Контекст и дескриптор процесса
- Многозадачность
- Особенности аппаратных платформ
- Файловая система AFS
- Семейство CORBA
- Современные модели
- Интерфейс сервиса каталогов
- Очередь незавершенных работ
- Средства защиты объектов в NDS
- Централизованный алгоритм
- Вопрос реализации нитей
s#0