Скачиваний:
70
Добавлен:
09.05.2014
Размер:
812.54 Кб
Скачать

4.5.1. Непрерывное распределение

Файл занимает соседние сектора. Достоинство: может быть достигнут наивысшая скорость доступа.Недостаток: такое размещение сложно обеспечить, если не распределять память статически.

4.5.2. Распределение в разброс

Такое распределение возможно только в секторной организации. Файл может занимать любое количество секторов, находящихся в любом месте диска. При расположении в разброс необходим способ связи между секторами одного файла. В каталоге указан только адрес первого сектора, который необходимо связать с остальными. Существует несколько решений:

  1. организация цепей или списков

  2. способ связывания секторов, называемый индексированием

1. Организация цепей или списков. Секторы связываются в цепочки. Возможно два способа организации связей:

  1. Связи хранятся в самом секторе (последние несколько байт представляют собой ссылку или связку со следующим сектором). Связи могут быть двунаправленными.

  2. Связи хранятся отдельно (в секторе хранятся только данные, а связи находятся в FAT)

2. Индексирование кластеров.

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

№ блока

№ кластера

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

Применяется для индексирования больших FAT.

4.6. Связь программ с файлами.

4.6.1. Проблема обеспечения независимости программ от расположения и характеристик файлов

Программа работает с файлами, выполняя операции ввода/вывода, т.е. обменивается данными. Если в программе задано физическое имя (том, характеристики файла), то она будет жестко связана с характеристиками файлов и внешних устройств. Это приводит к проблемам при тиражировании программ. Необходимо было разработать идеологию, при которой программа связывалась бы с файлами только при ее исполнении. Возникла следующие идеи.

  1. Метод FCB. При создании программы для каждого файла, с которым программа работает, программист должен построить блок управления файлом (FCB).FCBпредставляет собой область пользовательской памяти определенной длины. ВFCBподдерживается необходимая для работы с файлом информация: устройство, имя, размер, дата, размер записи, текущая позиция в файле и т.д. Следует отметить, что не предусмотрено место для пути к файлу – доступны только файлы текущего каталога. Часть информации (устройство, имя) заполняется программой еще до открытия файла При открытии ОС заполняет другие поляFCB. Пользовательская программа задает параметры для системных функций ОС в поляхFCB, а они со своей стороны возвращают информацию только черезFCB. При этом методе обмен данными между программой и файлом осуществляется через буфер, или так называемую область обмена с диском (Disk Transfer Area - DTA). Адрес буфера поддерживается ОС в указателе наDTA. При запуске программы указатель наDTAуказывает на область в префиксе сегмента программы (Program Segment Prefix). Впоследствии программа может изменить указатель наDTA. Во всех случаях пользовательская программа записывает и читает записи файла через установленную в текущий моментDTA.

  2. Метод ФМ. При этом методе ОС строит блок управления файлом при его открытии. Структура этого блока подобна структуреFCB. Блок строится в рабочих областях ОС и его адрес неизвестен пользовательской программе. Блок (и соответствующий файл) идентифицируется двухбайтовым номером, который ОС возвращает программе после открытия файла – этот номер называется файловым манипулятором. Во всех дальнейших обращениях к системным функциям используется файловый манипулятор. Здесь, в отличии от методаFCB, можно указать не только устройство и имя файла, а полную файловую спецификацию, включающую и путь к файлу. Таким образом непосредственно доступны все файлы, а не только файлы текущего каталога. При открытии файла можно указать какие права доступа имеет программа – только для записи, только для чтения или для чтения и записи. Можно указать и режим совместного использования файла различными процессами. Очень полезна возможность наследования открытых одним процессом файлов другими, активированным им процессом (порожденным процессом). Только некоторые из системных функций, обслуживающих метод ФМ, используютDTA. Как правило, обмен данными между программой и файлами осуществляется при помощи буфера пользователя, адрес которого задается динамически как параметр используемой динамической функции. Это решение более гибко, чем использование статического буфера типаDTA.