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

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

8 представлен алгоритм bmap пересчета смещения в байтах от начала файла в номер физического блока на диске.

Рисунок 4.6. Блоки прямой и косвенной адресации в индексе

10 блоков прямой адресации по 1 Кбайту каждый = 10 Кбайт

1 блок косвенной адресации с 256 блоками прямой адресации = 256 Кбайт

1 блок двойной косвенной адресации с 256 блоками косвенной адресации = 64 Мбайта

1 блок тройной косвенной адресации с 256 блоками двойной косвенной адресации = 16 Гбайт

Рисунок 4.7. Объем файла в байтах при размере блока 1 Кбайт

алгоритм bmap /* отображение адреса смещения в байтах от начала логического файла на адрес блока в файловой системе */

входная информация:

 (1) индекс

 (2) смещение в байтах

выходная информация:

 (1) номер блока в файловой системе

 (2) смещение в байтах внутри блока

 (3) число байт ввода-вывода в блок

 (4) номер блока с продвижением

{

 вычислить номер логического блока в файле исходя из заданного смещения в байтах;

 вычислить номер начального байта в блоке для ввода-вывода; /* выходная информация 2 */

 вычислить количество байт для копирования пользователю; /* выходная информация 3 */

 проверить возможность чтения с продвижением, пометить индекс; /* выходная информация 4 */

 определить уровень косвенности;

 do (пока уровень косвенности другой)  {

  определить указатель в индексе или блок косвенной адресации исходя из номера логического блока в файле;

  получить номер дис�

|< Пред. 112 113 114 115 116 След. >|

Java книги

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