Операционные системы. Файловая организация данных. Каталоги

 

Операционная система (ОС) представляет собой систему программ, предназначенную для управления устройствами ЭВМ, управления обработкой и хранением данных, обеспечения пользовательского интерфейса.

Современные операционные системы для ПЭВМ отличаются друг от друга прежде всего ориентацией на машины определенного класса, поддерживаемыми режимами обработки, предоставляемыми сервисными возможностями. Примерами ОС для ПЭВМ являются CP/M,MS DOS,OS/2 Warp (IBM),Windows 95/98/2000/NT/XP (Microsoft).

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

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

Имена файлов в MS DOS должны удовлетворять следующим требованиям:

· имя должно содержать от одного до восьми символов;

· имя файла может иметь расширение, отделяемое от имени точкой и содержащее не более трех символов;

· для записи имен файлов и их расширений должны использоваться буквы латинского алфавита A…Z, цифры 0…9 и специальные знаки: - (минус), _ (подчеркивание), @, %, (, ), ', =, !, #;

· в качестве имен файлов не должны использоваться следующие буквенные сочетания: AUX, CON, PRN, NUL, COM1, COM2, LPT1, LPT2, LPT3.

Пример 7.1. Варианты правильной записи имен файлов:

basic.exe

prod.pas

prim.txt

Имя файла подбирается таким образом, чтобы по нему можно было легко определить содержимое. В частности, судя по именам, приведенным в примере 7.1, можно предположить, что в файле prod.pas хранится программа вычисления произведения.

Расширение имени, как правило, указывает на тип хранящихся в файлах данных. В следующей таблице представлены используемые в MS DOS типовые расширения имен файлов:

 

Таблица 7.1. Стандартные (типовые) расширения имен файлов
Типовое расширение Содержимое файла
arj Архивный файл, созданный архиватором ARJ
asm Текст программы на языке Ассемблера
bak Резервная копия файла
bat Командный файл
bin Бинарный (двоичный) файл с машинной программой или драйвером
com Выполнимая программа с абсолютным адресом загрузки
doc Файл документа
dbf Файлы баз данных СУБД dBase, Clipper
exe Исполняемая программа, требующая настройки, или самораспаковывающийся архив
for Исходный текст программы на языке Фортран
inf Информационный файл
ini Файл описания конфигурации программы
obj Программа в объектном коде
pas Исходный текст программы на языке Паскаль
sys Драйвер управления устройством

 

Типовые расширения имен удобны тем, что позволяют в ряде случаев обращаться к файлам только по имени. К примеру, при вызове программ и командных файлов для выполнения не требуется указывать типовые расширения exe, com и bat. С другой стороны, указав только расширение, можно выбрать все файлы определенного типа на диске с тем, чтобы выполнить некоторые действия над всей группой файлов (например, скопировать на другой диск, распечатать содержимое на принтере, удалить и т.д.).

Для обращения к группам файлов применяются групповые имена (или шаблоны имен), образуемые с использованием символов * и ?. Символ * в имени файла и его расширении трактуется операционной системой как любая последовательность символов, символ ? – как любой символ.

Пример 7.2. Варианты групповых имен файлов:

 

*.txt - все файлы типа txt;
a*.exe - все файлы типа exe, имена которых начинаются с буквы а;
pr*.pas - все файлы типа pas, имена которых начинаются с символов pr и заканчивающиеся одним произвольным символом (имя файла состоит ровно из трех символов);
*.* - все файлы;
prim.* - все файлы любых типов с именем prim;
uv?.* - файлы с именем из трех символов, первые два из которых фиксированы (uv), а третий – любой.

 

Групповое имя файла можно, к примеру, указывать в команде MS DOS DIR, используемой для вывода на экран дисплея оглавления диска. В этом случае на экран дисплея будут выводиться сведения не о всех файлах, хранящихся на диске, а только о фалах указанной группы. Например, команда C:>DIR *.com выведет список файлов на диске C файлов типа com, а команда C:>DIR prim.* - список файлов на диске С всех типов с именем prim.

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

A:razd.txt;

C:number.dat;

C:\DOS\SYS\format.exe.

Имя файла с приставкой-указателем устройства и цепочки каталогов называется путем или спецификацией файла. Полный путь файла (включающий имя привода и всю цепочку каталогов) определяет его местоположение в древовидной структуре каталогов. Пример такой структуры представлен на рис. 7.1.

 

Привод Подкаталоги Файлы

С:\ DOS\ format.exe

корневой . . .

каталог undelete.exe

 

NU\ nu.exe

. . .

nu.hlp

 

config.sys

. . .

autoexec.bat

 

Рис. 7.1. Пример древовидной структуры каталогов и файла

 

Отметим, что в среде MS DOS для любой выполняемой программы или отдельных ее компонентов (например, левой и правой панели оболочки Norton Commander) устанавливается текущий каталог. Если адресуемый файл находится в текущем каталоге, то достаточно указать только его имя. в противном случае необходимо указать путь поиска данного файла по дереву каталогов в команде PROMPT в файле автозапуска autoexec.bat.

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

При доступе к данным на диске ОС использует хранящуюся в нем таблицу размещения файлов – FAT (File Allocation Table), корневой каталог (root) и подкаталоги. Стартовый сектор (загрузочная запись), таблица размещения файлов, корневой каталог и остающееся свободным пространство памяти диска, называемое областью данных, являются элементами файловой структуры диска. Они создаются операционной системой в процессе инициализации диска. Ниже на рис. 7.2 показана структура размещения данных на диске:

 

Стартовый сектор
File Allocation Table (FAT)
Корневой каталог
Файлы, каталоги, свободное поле
Compressed Volume File (CVF)
 

Рис. 7.2. Элементы файловой структуры диска

 

Жесткие диски характеризуются возможностью предварительного разбиения их на разделы. Поэтому в начальных секторах жесткого диска содержится информация о количестве разделов, их местоположении и размерах. Разделы жесткого диска рассматриваются как автономные виртуальные диски. Каждый из них инициализируется отдельно, имеет собственное имя (C:, D:, E:,…) и элементы файловой структуры, такие же, как у гибких дисков.

В процессе работы компьютера содержимое диска меняется: добавляются новые файлы, удаляются ненужные, изменяется объем файлов и т.д. Для выполнения этих операций необходимо отслеживать распределение пространства диска между файлами. В MS DOS эта задача решается с помощью FAT. Для каждого файла в FAT создается цепочка элементов, каждый из которых указывает область фиксированной длины (кластер), занимаемую частью файла на диске. В каталоге, содержащем имя файла, имеется указатель к началу цепочки. При стирании файла элементы FAT и адресуемые ими области данных освобождаются (помечаются как свободные) и могут быть использованы для другого файла.

Достоинством такой организации является возможность осуществления прямого доступа к данным файла. Недостатком является постепенное фрагментирование диска при активной работе с файловой системой по уничтожению, созданию и изменению объема файлов. При этом занимаемое файлами пространство "разорвано" по всему диску. Фрагментирование значительно увеличивает время доступа к данным на диске.

Область данных занимает большую часть диска – от конца корневого каталога до последнего сектора. Участки памяти из области данных выделяются группами из одного или нескольких последовательных секторов, называемых кластерами. Размер сектора составляет 512 байтов.

FAT содержит информацию о расположении файлов, свободном пространстве на диске и неисправных блоках, а также код формата диска.

Каталог представляет собой справочник, содержащий сведения о местоположении, размере, дате и времени обновления файлов. Для каждого файла на диске имеется один элемент в определенном каталоге. Один элемент корневого каталога выделяется для метки диска. Для каждого каталога имеется элемент в его родительском каталоге. Кроме того, каждый каталог, за исключением корневого, содержит по одному элементу для специальных имен "." и "..". Эти элементы указывают начало цепочки в FAT соответственно для самого каталога и для его родительского каталога. Такая система описания каталогов обеспечивает возможность сокращенного написания пути к файлу, когда он проходит через родительский каталог. Здесь особенно важна возможность написания программ, просматривающих все дерево каталогов произвольной структуры.

Каждый каталог имеет длину 32 байта. В его структуру входят следующие элементы:

· поле имени (8 байт для MS DOS и 255 для Windows, начиная с Windows 95 и более поздних версий; недостающие символы заменяются пустыми позициями справа);

· расширение имени (3 байта);

· атрибуты файла (1 байт; каждый бит этого поля задает определенный атрибут: 0 – защищенный, 1 – скрытый1, 2 – системный, 3 – метка тома, 4 – каталог, 5 – архивный или обычный, 6 – не используется, 7 – не используется);

· резервное поле (10 байт);

· поле "время" (2 байта; его содержимое рассматривается как целое число без знака, вычисляемое по формуле: часы х 2048+минуты х х 32+секунды/2);

· поле "дата" (2 байта; его содержимое рассматривается как целое число без знака, вычисляемое по формуле: (год-1980)х512+месяц х 32+день; календарь поддерживается с 1980 по 2099 год);

· номер первого кластера файла (2 байта; содержимое этого файла одновременно служит указателем к первому кластеру файла в поле данных и к первому элементу в цепочке FAT);

· размер файла (4 байта).