Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборка Часть2 / АВМиС / Лекции / =4Принципы построения фай-ловой системы.doc
Скачиваний:
75
Добавлен:
15.09.2014
Размер:
244.74 Кб
Скачать

Ленивая передача

Ленивая передача (lazy commit) — важная особенность NTFS. Она позволяет NTFS минимизировать затраты регистрации для поддержания высокой эффективности.

Ленивая передача подобна ленивой записи. Вместо использования ресурсов для немедленной отметки транзакции как успешно завершившейся, эта информация заносится в кэш и записывается в файл регистрации как фоновый процесс. Если происходит сбой до того, как информация о транзакции была зарегистрирована, NTFS произведет повторную проверку транзакции для определения ее успешности. Если NTFS не может гарантировать, что транзакция была завершена успешно, производится

откат транзакции. Никакие незавершенные модификации тома не позволяются.

Периодические контрольные точки файла регистрации

Каждые несколько секунд, NTFS проверяет кэш, чтобы определить состояние ленивой записи, и отмечает это состояние в качестве контрольной точки в файле регистрации (checkpoint). Если вслед за определением контрольной точки последует сбой, система имеет возможность приведения своего состояния к состоянию, зафиксированному контрольной точкой. Этот метод использует наиболее оптимальное время восстановления, сохраняя очередь событий, которая может потребоваться в процессе восстановления.

Внимание! Этот уровень предназначен для защиты метаданных. Данные пользователя в случае сбоя системы могут быть разрушены.

Средства для работы с файлами

OC поддерживает 2 группы функций для работы с файлами.

Первая группа функций для доступа к файлам использует специальный блок – FCB ( File Control Block – блок управления файлом ). Функции использующие FCB, были единственным средством для работы с файлами в MS-DOS версии 1.0. В последующих версиях эти функции сохранены, но практически не используются. Они не поддерживают иерархическую ( древовидную ) файловую структуру, поэтому ими можно пользоваться для доступа к файлам, находящимся только в текущем подкаталоге текущего диска.

Вторая группа функций, которая в настоящее время используется практически всеми программами, реализует так называемый префиксный доступ к файлам.

Если программе необходимо открыть или создать файл, она вызывает соответствующую функцию OC, передавая этой функции спецификацию файла следующим образом:

  1. В регистр DS:DX заносится адрес ASCII-строки, в которой указаны имя дисковода, путь, имя файла и расширение, а в конце строки – ноль.

Например:

C : \ C O M M A N D . C O M

43 3A 5c 43 4f 4d 4d 41 4e 44 2e 43 4f 4d 00

  1. Затем вызывается соответствующая функция прерывания int21h.

  2. Функция открывает ( создает ) файл и возвращает программе в регистре AX целое число, называемое префиксом ( handle ) или дескриптором файла. По сути, префикс указывает, где расположено описание открытого файла. При дальнейшей работе с открытым файлом операционной системе сообщается только префикс.

Для каждого открываемого файла ОС создает во внутренней памяти специальную структурную переменную, называемую описанием открытого файла. Это описание содержит:

  • флаги режима доступа к файлу;

  • текущее значение указателя записи-чтения и другую информацию для доступа к файлу.

Префиксы файлов и описания открытых файлов связаны через специальный массив ( типа char ) , называемый таблицей открытых файлов программы. Префикс – это индекс или порядковый номер элемента таблицы открытых файлов. Значение элемента этой таблицы является порядковым номером в массиве описания открытых файлов, то есть префикс – это косвенная ссылка на описание открытого файла.

Первые 5 байт элементов таблицы используются для ссылок на файлы (драйверы) стандартного ввода-вывода. В них записывается порядковый номер драйвера в специальной таблице драйверов символьных устройств.

Для каждой программы MS-DOS создаёт свою уникальную таблицу открытых файлов, но массив описания используется только один. Сама таблица открытых файлов первоначально хранится в специальной области памяти – префиксе сегмента программы ( Program Segment Prefix – PSP ).

При запуске программы все элементы таблицы открытых файлов, за исключением первых пяти, хранят значение FFh. По мере открытия файлов номера их описаний помещаются в таблицу открытых файлов.

Таблица открытых файлов

Смещение 18h в PSP

Соседние файлы в папке Лекции