Современные операционные системы

Современные операционные системы
Процессы и потоки  Синхронизированные методы в Java

Синхронизированные методы в Java

Синхронизированные методы в Java существенно отличаются от классических мониторов: в Java отсутствуют встроенные условные переменные. Вместо них этот язык предлагает две процедуры: wait и notify, которые являются эквивалентами sleep и wakeup, за исключением следующего: при использовании внутри синхронизированных методов они не могут попасть в состязательную ситуацию. Теоретически метод wait может быть прерван, для чего, собственно, и предназначен весь окружающий его код. Java требует, чтобы обработка исключений проводилась в явном виде. В нашем случае нужно просто представить, что использование метода go_to_sleep — это всего лишь способ приостановки работы.

Синхронизированные методы в Java читать полное описание.


Процессы и потоки  Автоматическая организация взаимного исключения

Автоматическая организация взаимного исключения

Может создаться впечатление, что операции так и signal похожи на операции sleep и makeup, которые, как мы видели ранее, приводят к фатальному состоянию состязательности. Конечно же, они очень похожи, но с одной весьма существенной разницей: sleep и makeup терпели неудачу, когда один процесс пытался заблоки-роваться, а другой пытался его активизировать. При использовании мониторов такая ситуация исключена. Автоматическая организация взаимного исключения в отношении процедур монитора гарантирует следующее: если, скажем, производитель, выполняя процедуру внутри монитора, обнаружит, что буфер полон, он будет иметь возможность завершить операцию wait, не испытывая волнений о том, что планировщик может переключиться на выполнение процесса потребителя еще до того, как операция так будет завершена.

Автоматическая организация взаимного исключения читать полное описание.


Процессы и потоки  Дополнение к мьютексам пакет Pthreads

Дополнение к мьютексам пакет Pthreads

В дополнение к мьютексам пакет Pthreads предлагает второй механизм синхронизации: условные переменные. Мьютексы хороши для разрешения или блокирования доступа к критической области. Условные переменные позволяют потокам блокироваться до выполнения конкретных условий. Эти два метода практически всегда используются вместе. Теперь давайте более пристально взглянем на взаимодействие потоков, мьютексов и условных переменных.

Дополнение к мьютексам пакет Pthreads читать полное описание.


Процессы и потоки  Проблемы разработки систем передачи сообщений

Проблемы разработки систем передачи сообщений

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

Проблемы разработки систем передачи сообщений читать полное описание.


Процессы и потоки  Важное свойство мониторов

Важное свойство мониторов

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

Важное свойство мониторов читать полное описание.