Архитектура операционной системы 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 След. >|