Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 130 из 715

Ядро производит назначение файлу только что выбранного с диска индекса (под номером 471 на рисунке) и продолжает прерванную обработку.

Рисунок 4.13. Два массива номеров свободных индексов

алгоритм ifree /* освобождение индекса */

входная информация: номер индекса в файловой системе

выходная информация: отсутствует

{

 увеличить на 1 счетчик свободных индексов в файловой системе;

 if (суперблок заблокирован)  return;

 if (список индексов заполнен)  {

  if (номер индекса меньше номера индекса, запомненного для последующего просмотра)

   запомнить для последующего просмотра номер введенного индекса;

 }

 в противном случае сохранить номер индекса в списке индексов;

 return;

}

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

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

|< Пред. 128 129 130 131 132 След. >|

Java книги

Контакты: [email protected]