Архитектура Unix

       

. Алгоритм чтения дискового блока



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



алгоритм bread /* чтение блока */ входная информация: номер блока в файловой системе выходная информация: буфер, содержащий данные { получить буфер для блока (алгоритм getblk); если (данные в буфере правильные) возвратить буфер; приступить к чтению с диска; приостановиться (до завершения операции чтения); возвратить (буфер); }


Алгоритм записи содержимого буфера в дисковый блок (Рисунок 3.15) похож на алгоритм чтения. Ядро информирует дисковод о том, что есть буфер, содержимое которого должно быть выведено, и дисковод планирует операцию ввода-вывода блока. Если запись производится синхронно, вызывающий процесс приостанавливается, ожидая ее завершения и освобождая буфер в момент возобновления своего выполнения. Если запись производится асинхронно, ядро запускает операцию записи на диск, но не ждет ее завершения. Ядро освободит буфер, когда завершится ввод-вывод.









Содержание раздела