Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Хранение длинного именных имён.



Требование совместимости, кот-м должна удовлетворять система Win’s означает что невозможно просто изменить существующий формат хранения данных на диске, кот-ый применяется в FAT. VFAT поддерживает как длинные так и короткие имена. 32х битный элемент каталога идентичен тому формату, который поддерживают предыдущие версии.

Метод работы с длинными именами файлов строится на использовании байта атрибута элемента каталога для коротких имен файлов. Установка младших 4х битов этого байта задает элементу каталога атрибуты: только чтение, скрытый, системный, метка тома.

Добавление метки тома дает не имеющее смысла сочетание и защищает элемент каталога от изменения. Windows использует для формирования длинного имени несколько последовательных коротких имен, защищая каждое при помощи атрибута 0Fh сегмент длинного имени располагается так:

Каждый 32х байтный элемент описывающий длинное имя содержит порядковый номер, защитный байт атрибута, и контрольную сумму. Порядковый номер позволяет виндовозу узнать о непоследовательном или некорректном изменении структуры каталога. Контрольная сумма вычисляется по связанному с данным файлом короткому имени, и если короткое имя изменится вне структуры винды то ОС поймет что элементы длинного имени больше не имеют смысла. Система хранит длинные имена файлов в виде символов таблиц юникод(2байта на символ). Поле тип нигде не используется. 

Для того, чтобы распространить использование длинных имен файлов на все типы приложений, Microsoft расширила набор функций прерывания MS DOS Int 21h для работы с длинными именами файлов, блокировки устройств с заменяемыми носителями и блокировки дисков. Расширение состояло в добавлении новых функций, которые полностью эквивалентны функциям Win32 API, и в совершенствовании существующих функций MS DOS, которые работают с именами. Обращения к новым и к модифицированным функциям Int 21h продолжают использовать стандартные для MS-DOS соглашения о передаче и возвращении параметров через регистры. Эти функции по-прежнему реализованы в виде 16-разрядного кода.

Прежде, чем использовать функции поддержки длинных имен файлов, программа должна выполнить несколько проверок. Во-первых, необходимо проверить версию MS-DOS. Если значение, возвращаемое функцией 30h прерывания Int 21h меньше 7, то функции использовать нельзя. Затем нужно проверить, работает ли программа под управлением Windows - в режиме DOS -приложений эти функции также использовать нельзя. Далее следует проверить, поддерживаются ли длинные имена файлов для данного устройства. Новая функция 71A0h прерывания Int 21h позволяет получить информацию об устройстве. В регистре ВХ возвращаются флаги, описывающие данное устройство.



Функции блокировки диска

Поскольку виндос многозадачная ОС к одному и тому же диску одновременно могут обращаться несколько приложений. Программы, изменяющие стр-ру файловой системы, могут подтвердить данные хранящиеся на диске. Чтобы предотвратить потери данных, система берет на себя управление всеми запросами на прямую доступом к диску. Дисковые утилиты и другие проги, напрямую изменяющие системные области диска должны перед внесением каких либо измен-ий в файловую систему применять монопольную блокировку тома. Это предотвращает случ.запись на диск др. приложениями в момент, когда дисковая утилита модифицирует файловую систему. Обычно виндос не разрешает примен-ие операций записи если диск не заблокирован данным приложением. Ф-ии и прерыв-я с помощью кот-ых прога пытается напрямую записать данные на незаблокированный том возвращает код ошибки errorwriteprotect. Если прилож-е попыт-ся напрямую считать данные с тома, система может вернуть данные из внутр.кеша а не с самого носителя. Система также перехватывает все попытки прямого доступа к портам вв дискового контроллера. Чтобы изменить стандартн.повед-е системы прога запрашивает монопольное исполн-е тома через inpu output ф-ции блок-ки и разблок-ки. Поскольку система сбрасывает внутр. кеша на диск инфо на нем отражает фактическое состояние тома. Блок-ка тома обеспечения непротиворечивости данных т.к. др.процессы не могут что-л. модиф-ть на таком томе. Виндос обеспечивает 4 уровня монопольной блокировки тома.


 

12) Правила блокировки диска

Уровни блокировки

Нулевой уровень.

Блокировка данного уровня невозможна для диска, на котором открыты файлы или описатели. Поэтому приложение никогда не получит блокировку нулевого уровня на томе с системными файлами

Шаг 1. Необходимо получить блокировку нулевого уровня

Шаг 2. Вызов функции блокировки тома

Шаг 3. Сброс данных из КЭШа на диск

Шаг 4. Получение блокировки нулевого уровня

Шаг 5. Выполнение операций файлового ввода-вывода

Шаг 6. Вызов функции блокировки тома. Ужесточение блокировки нулевого уровня

Шаг 7. Форматирование диска

Первый уровень. Блокир-ка данного уровня устанавл-ся, чтобы не позволить др.процессам заблокир-ть тот же диск. Так же на этом уровне для приложений устанавл-тся права доступа.Второй уровень. Блокир-ка данного уровня запрещает другим процессам запись на диск, но разрешает чтение с диска.Третий уровень. Блокир-ка данного уровня запрещает другим процессам как чтение, так и запись на диск.

Правила блокировки дисков

• Если на диске нет открытых файлов, то прямая запись выполняется при установленной блокировке нулевого уровня. В противном случае используется иерархия блокировок 1-3 уровня.

• Приложение не должно перемещать файл подкачки

• Для уменьшения времени блокировки уровня 3 приложение на этом уровне должно выполнять только дисковый ввод-вывод.

• Приложение должно обращаться к диску через низкоуровневые функции.


 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 205; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь