Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

30. Файловые дескрипторы и трансляция имён

Прикладные процессы работают с файлами и модифицируют их. При работе с фалами мы работаем либо с файловыми дескрипторами, либо с именами. Ядро же различает файлы по индексному дескриптору => требуется установка соответствия между файловыми дескрипторами и индексными дескрипторами. В большинстве случаев используется трансляция имен.

Системные вызов, требующие трансляции имен: exec(), chown(), chgrp(), chmod(), rmdir, mkdir, mknode, open(), link()…

Для трансляции имен существенно указывать полный или относительный путь к файлу.

Если есть точка монтирования, то для проведения трансляции необходимо выполнить vfs_root() для перехода через точку монтирования, в результате которого получается vnode корневой системы.

Трансляция продолжается до тех пор, пока не будут просмотрены все имена. В результате завершения операции трансляции – возвращении виртуального дескриптора.

Доступ к ФС из процесса.

В системной таблице содержится следующая информация:

F_flag = fread;

F_cont=2;

F_vnode=03564; *

F_offset=0x32;

F_flag = fwrite;

F_cont=1;

F_vnode=03304; **

F_offset=0x16;

Окончательная таблица.

Виртуальная ФС позволяет пройти от пользовательского процесса до устройства.

Файловые дескрипторы получаются процессом в результате системных вызовов из пользовательских приложений. Файловый дескриптор – индекс в таблице файловых дескрипторов каждого из процессов. Хранится эта таблица в u_area каждого процесса.

Существует системная таблица, в которую переписывается информация из всех таблиц ФД всех активных процессов. Поскольку эта системная таблица одна на всех – возможны повторения. Каждая активная запись представляет открытый файл и адресует область таблицы. Существует суммарная таблица виртуальных дескрипторов, где каждый файл упоминается 1 раз. Делается соответствующая запись и по этим записям имеется возможность обратиться к реальной ФС, используя вышеописанные структуры.

31. Физическая организация fat

Логический раздел состоит из:

· Загрузочного сектора с программой начальной загрузки (512 байт)

· Основной копии FAT (размер зависит от объема диска)

· Копии FAT

· Корневого каталога фиксированного размера (32 сектора – 16 Кбайт), куда можно занести 512 записей о НД. Каждая запись – 32 байта.

· Область данных – вся остальная область раздела.

FAT поддерживает 2 типа НД – файл и каталог. Память распределяется только из области данных, порциями в кластер.

Таблица FAT – массив индексных указателей, каждому указателю соответствует один кластер. Указатель может иметь значения:

· Кластер свободен

· Кластер принадлежит файлу и не последний

· Кластер – последний в файле

· Кластер сбойный

· Кластер резервный

Размер указателя бывает 12, 16 или 32 разряда, что позволяет ссылаться на 4096, 65536 или более 4 млр. Кластеров.

FAT12 – для дисков до 16 Мбайт, FAT16 – для дисков до 512 Мбайт (максимально -4Гбайт), FAT32 – для дисков с практически неограниченным размером (до 128 Тбайт). Используемый метод хранения адресной информации не очень надежен, так как сбой в списке индексов приводит к потере всего хвоста файла.

В FAT16, как и FAT 12, используются имена 8+3 символа, но в ОС Win32 возможно применение длинных имен, из 255 символов UNICODE (по 2 байта на символ). Первые 8+3 символа хранятся в этом случае также в основной записи каталога а последующие символы – по 13 штук (26 байт) + 6 служебных байт – отдельными порциями за основной записью. Аналогично устроена ФС FAT32.