Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция «файлы С Точки Зрения Пользователя» По Системному По (Морозов Б. А.).doc
Скачиваний:
6
Добавлен:
07.10.2014
Размер:
135.17 Кб
Скачать

11.2 Имена файлов

Файлы – абстрактные объекты. Они предоставляют пользователям возможность сохранять информацию, скрывая от него детали того, как и где она хранится и то, как диски в действительности работают. Вероятно, одна из наиболее важных характеристик любого абстрактного механизма – способ именования объектов, которыми он управляет. Когда процесс создает файл, он дает файлу имя. После завершения процесса файл продолжает существовать и через свое имя может быть доступен другим процессам. Многие ОС поддерживают имена из двух частей(имя+расширение), например progr.c(файл, содержащий текст программы на языке Си) или autoexec.bat (файл, содержащий команды интерпретатора командного языка).  Тип расширения файла позволяет ОС организовать работу с ним различных  прикладных  программ в соответствии  с  заранее оговоренными соглашениями. Обычно ОС накладывают некоторые ограничения, как на используемые в имени символы, так и на длину имени.  Например, в ОС Unix учитывается регистр при вводе имени  файла (case sensitive), а в MS-DOS – нет.  В популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени). Современные файловые системы, как правило, поддерживают более удобные для пользователя длинные символьные имена файлов.  Так, в соответствии со стандартом POSIX,  в ОС UNIX  допускаются имена длиной до 255 символов, та же самая длина устанавливается для имен файлов и в ОС  Windows NT для файловой системы NTFS.

11.3 Структура файлов

Как уже говорилось,  программист воспринимает файл  в виде набора логических записей.  Логическая запись - это наименьший элемент данных, которым может оперировать программа при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами (обычно блоками), операционная система обеспечивает программисту доступ к отдельной логической записи. ОС поддерживают несколько вариантов структуризации файлов. Первый из них, файл, как неструктурированная последовательность байтов. Например, в файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей. ОС не осуществляет никакой интерпретации этих байтов.  Тем не менее,  ОС с файловыми системами данного типа должны поддерживать, по крайней мере, одну структуру - выполняемый файл - для запуска программ.  Этой схеме присущи максимальная  гибкость и универсальность. Используя базовые системные вызовы (или функции библиотеки ввода/вывода), пользователи могут, как угодно структурировать файлы. В частности, многие СУБД хранят свои базы данных в обычных файлах. Первый  шаг в структурировании  - хранение файла в видепоследовательности записей фиксированной длины, каждая из которых имеет внутреннюю структуру. Центральная  идея этой схемы  - операция чтения проводится над записью и операция записи - переписывает или добавляет запись целиком.  Ранее были записи по 80 байт (соответствовало числу позиций в перфокарте) или  по 132 символа (ширина принтера). В ОС CP/M файлы были последовательностями 128-символьных записей. С введением CRT терминалов эта идея утратила популярность. Третий способ представления файлов -последовательность записей переменной длины, каждая из которых содержит  ключевое поле в фиксированной позиции внутри записи. Базисная операция в данном случае - считать запись с каким-либо  значением ключа.  Записи могут располагаться в файле последовательно (например, будучи отсортированы по значению ключевого поля) или в более сложном порядке.

Рис. 11..  Файл, как последовательность записей переменной длины

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