Архитектура операционной системы UNIX


         

алгоритм brelse входная информация: заблокированный


Рисунок 3.4. Алгоритм выделения буфера


Рисунок 3.5. Поиск буфера - случай 1: буфер в хеш-очереди

алгоритм brelse входная информация: заблокированный буфер выходная информация: отсутствует { возобновить выполнение всех процессов при наступлении события, связанного с освобождением любого буфера; возобновить выполнение всех процессов при наступлении события, связанного с освобождением данного буфера; поднять приоритет прерывания процессора так, чтобы блокировать любые прерывания; если (содержимое буфера верно и буфер не старый) поставить буфер в конец списка свободных буферов в противном случае поставить буфер в начало списка свободных буферов понизить приоритет прерывания процессора с тем, чтобы вновь разрешить прерывания; разблокировать (буфер); }
Рисунок 3.6. Алгоритм высвобождения буфера

Перед тем, как перейти к остальным случаям, рассмотрим, что произойдет с буфером после того, как он будет выделен блоку. Ядро системы сможет читать данные с диска в буфер и обрабатывать их или же переписывать данные в буфер и при желании на диск. Ядро оставляет у буфера пометку "занят"; другие процессы не могут обратиться к нему и изменить его содержимое, пока он занят, таким образом поддерживается целостность информации в буфере. Когда ядро заканчивает работу с буфером, оно освобождает буфер в соответствии с алгоритмом brelse (Рисунок 3.6). Возобновляется выполнение тех процессов, которые были приостановлены из-за того, что буфер был занят, а также те процессы, которые были приостановлены из-за того, что список свободных буферов был пуст. Как в том, так и в другом случае, высвобождение буфера означает, что буфер становится доступным для приостановленных процессов несмотря на то, что первый процесс, получивший буфер, заблокировал его и запретил тем самым получение буфера другими процессами (). Ядро помещает буфер в конец списка свободных буферов, если только перед этим не произошла ошибка ввода-вывода или если буфер не помечен как "старый" - момент, который будет пояснен далее; в остальных случаях буфер помещается в начало списка. Теперь буфер свободен для использования любым процессом.


Содержание  Назад  Вперед