Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОСЫ К ЭКЗАМЕНУ ОС.doc
Скачиваний:
23
Добавлен:
23.09.2019
Размер:
612.35 Кб
Скачать

36 Семафоры. Решение проблемы производителя и потребителя с помощью семафоров.

Дейкстра предложил использовать целочисленную переменную для подсчёта количества активаций, отложенных на будущие , он предложил учредить новый тип переменной – семафор. Значение семафора может быть равно 0, что будет свидетельствовать об отсутствии сохраненных активизаций или иметь какое-нибудь положительное значение, если ожидается не менее одной активизации. Дейкстра предложил использовать 2 операции down и up. Операция down выясняет, отличается ли значение семафора от 0, если отличается, она уменьшает его значение на 1и продолжает работу, если значение равно 0, процесс приостанавливается, не завершая в этот раз операцию down. Проверка значения, и его изменение, и приостановление процесса осуществляется как единое не делимое атомарное действие. Гарантируя что до окончания семафорной операции никакой другой процесс не может получить доступ к семафору до тех пор пока операция не будет завершена или заблокирована. Операция up увеличивает значение, адресуемое семафором, на 1, если с этим семафором связаны один или более приостановленных процессов, способны завершить ранее начатые операции down, система выбирает один из них и позволяет ему завершить его операцию down, после применение операции up в отношении семафор, с которым были связанны приостановленные процессы, значения семафора так и останется нулевым.а кол. приостан. процессов уменьш. на 1. Операция увеличения семафора на 1 и активации одного из процессов является так же неделимой , ни один из процессов не может быть заблокирован привыполнение операции up.

37 Мьютексы и мониторы.

Мьютекс – это переменная которая может находиться в одном из двух состояний: заблокированном или не заблокированным. Для их представления нужен один бит не заблокированное 0 а остальное заблокированное состояние, для работы с мьютексами используется 2 процедуры, когда потоку необходим доступ к критической области он вызывает процедуру мьютекс lock если мьютекс находиться в незаблокированном состояние вызов проходит удачно и вызывающий поток может свободно войти в критическую область, если мьютекс уже заблокирован вызывающий поток блокируется пока поток находящийся в критической области не завершит свою работу и не вызовет свою процедуру мьютекс unlock.Что бы облегчить написание безошибочных программ Хансен и Хоар предложили высоко уровневый синхронизационный примитив названый монитором. Монитор представляет собой коллекцию переменных и структур данных с груперованных вместе в специальные разновидности модуля или пакета процедур. У монитора есть свойства: в любой момент времени в мониторе может быть активен только один процесс. Монитор является конструкцией для языка программирования поэтому компилятор осведомлён об их особенастях и способен обрабатывать вызовы процедур монитора не так как вызовы всех остальных процедур.

38 Передача сообщений и барьеры.

Передача сообщения это метод взаимодействия процессов использует 2 приметива: send и receive, которы подобно семофорам и в отличии от мониторов являются системными вызовами а не конструкциями языка, они легко могут быть помещены в библиотечные процедуры. Что бы обезопаситься от утраты в сообщение отправитель и получатель должны договориться о том что как только сообщение будет полученье получатель должен отправить в ответь специально сообщения подтверждения. Не один из процессов не может перейти к следующей фазе пока все процессы не будут готовы перейти в следующей фазе, для этого используются барьеры поставленные в конце каждой фазы. Когда процесс достигает барьера он блокируется пока этого барьера не достигнут все остальные процессы.