Презентацию к данной лекции Вы можете скачать здесь.
Файл – совокупность логически объединенных данных во внешней памяти. Управление файлами – одна из важных задач ОС, так как в виде файлов в системе хранится практически любая информация – программы и данные. В лекции рассмотрены следующие вопросы:
Файл (file) – это смежная область логического адресного пространства. Как правило, файлы хранятся во внешней памяти.
Немного о терминологии. Слово файл уже несколько десятков лет используется как русское – один из многочисленных примеров программистских неологизмов. Первоначально, когда около 50 лет назад появился данный английский термин, в русскоязычной литературе специалисты пытались ввести другую терминологию – слово file переводили как фонд и даже тека (в смысле хранилище ). Однако исторически сложилось иное решение – слово файл стало русским. В английском языке слово file имеет много других значений: например, подшитый в папку бумажный документ и даже стадо (например, слонов) – в последнем случае, как можно предположить, размер "файла" может быть очень велик. У всех в памяти название легендарного сериала " X files" (в вольном русском переводе – "Секретные материалы").
Фирма IBM в документации по своей системе IBM 360 в 1960-х гг. использовала иной термин – набор данных (data set) – для обозначения этого же понятия, однако он не пережил операционную систему, в которой использовался.
Каждый файл имеет свой тип, определяющий, какая информация хранится в файле. Основные типы файлов – программа (код) или данные. Данные подразделяются на числовые, символьные (текстовые) и двоичные ( произвольная информация).
В различных
Файлы можно условно подразделять на файлы простой и сложной структуры (хотя точка зрения на структуру файла зависит от той программы, которая его обрабатывает).
Файлы простой структуры состоят из последовательности записей (records) – элементарных единиц, в терминах которых выполняются операции обмена с файлом. Записи могут быть:
Файлы сложной структуры могут быть самого разного вида, например:
Сложная структура файла может быть смоделирована записями путем добавления соответствующих
Файлы интерпретируются операционной системой или программами их обработки.
Практически в любой системе файлов можно считать, что файл состоит из заголовка и памяти.В заголовке файла хранятся его атрибуты – общие свойства, описывающие содержимое файла, память файла – это его записи, строки, секции и т.д., содержащие собственно хранимую в нем информацию.
Различаются следующие основные
Имя (Name) – название файла в символьной форме, воспринимаемое пользователем.
Тип (Type) – тип хранимой в файле информации. Отдельный атрибут тип необходим для систем, которые поддерживают различные типы файлов. Например, в системе "Эльбрус" значением атрибута тип файла является число, кодирующее тип: 0 – данные, 2 – код, 3 – текст и т.д. Однако более общепринятым подходом является подход, принятый в системах MS DOS, Windows, UNIX: тип файла кодируется расширением имени, например, book.txt – текстовый файл (.txt), содержащий текст книги.
Размещение (Location) – указатель на размещение файла на устройстве.
Размер (Size) – текущий размер файла.
Защита (Protection) – управляющая информация, задающая полномочия чтения, изменения и исполнения файла.
Время и дата. Например, во всех системах хранится дата создания файла и дата последней модификации файла. Последняя играет важную роль при компиляции (сборке) больших программных проектов, так как утилиты для сборки проектов (например, make ) определяют по соотношению дат последней модификации файлов исходного кода и двоичного кода, следует ли перекомпилировать исходный файл.
В ОС UNIX дату модификации файла можно изменить командой touch f,
где f – имя файла. Touch дословно означает потрогать.
Кроме изменения времени модификации, больше никаких действий над файлом не производится.
Идентификация пользователя.В любой системе поддерживается понятие хозяин (создатель) файла (owner).Именно хозяин вправе задавать другим пользователям полномочия для работы с файлом.
Информация о файлах хранится в структуре директорий ( или справочников - directories),иногда, например, в системе Windows, называемых также папками (folders) – структурами во внешней памяти, содержащими символьные имена файлов и ссылки на них. Важнейшая концепция директории подробно рассматривается далее в данной лекции.
Хотя набор операций над файлами и особенно их обозначений различается от системы к системе, можно выделить следующие основные операции над файлами.
Для выполнения операций обмена с файлом ( read, write ), как правило, файл необходимо открыть.
В таблица 19.1 приведены некоторые наиболее употребительные типы файлов и соответствующие им расширения имен.
| тип файла | расширение имени | функциональность |
|---|---|---|
| exe, com, bin или отсутствует | готовая к выполнению программа в бинарном машинном коде | |
| обьектный модуль | откомпилированная программа в бинарном коде, но не слинкованная | |
| исходный код на языке программирования | с, сс, Java, pas, |
исходный код на различных языках (Си, |
| командный файл | bat, sh | файл с командами для |
| текст | txt, doc | текстовые данные, документы |
| документ для |
wp, tex, |
документ в формате какого-либо |
| библиотека | lib, a, so, dll, mpeg, mov, rm | библиотеки модулей для программирования |
| файл для печати или визуализации | ASCII или |
|
| архив | несколько файлов, сгруппированных в один файл, для |
|
| mpeg, mov, rm |
Смысл их ясен из приведенной таблицы. Следует заметить, что унифицированных расширений имен, принятых в различных ОС, очень мало – по-видимому, только .txt (текст) и расширения для исходных кодов на языках программирования, например, .c – Си, .p или . pas –
Традиционно различаются файлы последовательного доступа и прямого доступа.Файл
Подобная особенность связана с различием устройств, на которых размещены файлы (например, магнитная лента – по сути дела, последовательное устройство), однако необходимость организации последовательных или прямых файлов может быть связана с сутью задачи.
По-видимому,
Типичные операции
read next
write next
reset – установка на начало файла для чтения
– установка на начало файла для записи.
Типичные операции прямого доступа:
read n
write n
position to n – позиционирование на запись с номером n
read next
write next
, где n - относительный номер блока (записи).
Описанная трактовка
(рис 19.1) Файл последовательного доступа.
При необходимости можно смоделировать операции
| реализация для файла с прямым доступом | |
|---|---|
reset |
|
read next |
read |
write next |
write |
Указатель на текущую позицию, характерный для
Для ускорения доступа к файлу большого объема может использоваться индексный файл, содержащий ссылки на записи основного ( изображен пример основного файла, содержащего упорядоченные по фамилиям анкетные данные людей. Индексный файл для данного основного файла содержит ссылки на первые логические записи анкет с заданной фамилией, например, Smith.
(рис 19.2) Индексный файл и основной файл.
Директория (directory, folder) - узел, содержащий информацию о файлах – их имена и ссылки на файлы и на другие директории во внешней памяти. Таким образом, возможна организация иерархии директорий или их более сложных взаимосвязей, вплоть до произвольных графов. Как структура директорий, так и файлы хранятся на диске. С помощью директорий поддерживается именование файлов с помощью путей (paths) – многослоговых имен, состоящих из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней. Например, в системе Windows c:\doc\plan.txt –
Резервное копирование (back-up) файлов и директорий выполняется на специальные предназначенные для этого носители – например, на ленту (
Говоря о структуре директорий и именовании файлов, нельзя не упомянуть столь экзотическую систему файлов, как в МВК "Эльбрус". Это будет полезно читателям, чтобы сравнить и лучше оценить разнообразие подходов к системам файлов.
Основные концепции системы файлов МВК "Эльбрус" – это файлы, контейнеры, справочники. Понятие контейнера в "Эльбрусе" близко к современным понятиям тома и контейнера в системах Windows и Solaris: контейнер – это хранилище файлов на одном или нескольких дисках. Понятие справочника близко к понятию директории в традиционных файловых системах.
Файл в "Эльбрусе" состоит из заголовка и памяти. В заголовке хранятся
Существенным отличием файловой системы "Эльбруса" является то, что возможно создание файла и управление им без присваивания ему имени, т.е. без отображения его в справочниках (директориях). Такой временный файл создается в программе, ссылка на файл хранится в глобальной или локальной переменной, и по окончании выполнения программы файл уничтожается, если на него не была сохранена ссылка в справочнике на диске. Кроме того, файлы могут ссылаться друг на друга (по прямой "физической" файловой ссылке, а не c помощью символьных путей) через справочники внешних ссылок (СВС).СВС имеется у каждого файла. Его элементы адресуются по номерам, а не по именам. Типичный пример: файл объектного кода (ФОК) ссылается через свой СВС на файл дополнения к файлу объектного кода (ДФОК),содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах. Выражаясь современным языком, ДФОК содержит метаданные. Эта взаимосвязь используется при диагностике ошибок времени выполнения и для многих других целей.
К недостаткам файловой системы "Эльбруса" можно отнести усложненную структуру файлов, большое число атрибутов, зависимость
(рис 19.3) Организация файловой системы.
Файловые системы организуются на дисках. Каждый диск поделен на разделы (partitions) – смежные области дисковой памяти, имеющие свои логические имена (обычно в виде первых букв латинского алфавита). Однако возможна и организация раздела, занимающего несколько дисков. Для деления диска на разделы рекомендуем утилиту Partition Magic. В разделах хранятся директории и файлы. Каждый раздел имеет корневую директорию, у которой при необходимости могут быть организованы поддиректории, на которые она ссылается.
Следует иметь в виду, что в разных разделах могут быть установлены различные операционные системы, использующие разное форматирование и разные файловые системы для своей работы. Даже если на компьютере установлена только одна ОС, различные разделы могут использовать различные типы файловых систем, например, в Windows раздел A может использовать файловую систему
Над директориями определен ряд операций, которые аналогичны друг другу во всех операционных системах, хотя по именам могут отличаться. Операции над директориями доступны как из командного языка, так и через специализированный API. В своем изложении мы будем использовать команды для работы с файлами. Аналогичные действия могут быть выполнены с помощью
Установка текущей (рабочей) директории. При работе с директориями основным является понятие текущей (рабочей) директории, которая устанавливается в cd (change directory),например, если в данный момент текущей является корневая директория диска C:, то команда:
cd doc
установит в качестве текущей поддиректорию doc.
Поиск файла. Как уже отмечалось, поиск файла выполняется с помощью
символьного пути (path),образованного последовательностью имен директорий,
например, C:\doc\plan.txt. Если требуется найти файл в
type
выводит содержимое файла plan.txt в
Создание файла.Как правило, создание файла в
Java-компилятор создает в
Многие программы создают в
Создание директории.В рабочей директории можно создать другую директорию. На
mkdir tmp.
Удаление файла из del (в Windows) или rm (в UNIX). Удаление уничтожает
только ссылку на файл из директории, но не сам файл. Если на него есть другие
ссылки, он сохраняется. Типичной ошибкой пользователей является поспешное неверное
Вывод содержимого директории.Команда dir (в Windows) и ls (в UNIX) выводит содержимое директории на консоль. С помощью
ls doc > doc_list.txt
Переименование файла. Имя файла в директории можно изменить, если
новое имя уже не встречается в директории. В UNIX это делается командой mv, например:
mv old_file.txt new_file.txt
Создание символической ссылки.Из элемента директории можно создать символическую ссылку на другую директорию. Это может оказаться необходимым,
если требуется смоделировать структуру директорий, созданную на другом компьютере,
например, на компьютере заказчика, так как системные файлы в программном продукте,
например, make-файлы для его сборки, ссылаются на определенные ln, например:
cd /my_dir ln –s /doc doc
Создается символическая ссылка из директории my_dir на директорию /doc,
под тем же именем doc. Таким образом, пути /doc и / my_dir/doc
указывают на одну и ту же директорию. В UNIX такой прием используется очень часто.
Обход файловой системы. Более сложная операция осуществляет
find . –name
выполняет поиск в
и выводит на консоль полный
В системе "Эльбрус", как уже было сказано в разделе Особенности системы файлов в "Эльбрусе", создание файла – отдельная операция, не связанная с директорией (справочником) вообще. Только если явно создан элемент справочника, и в него записана ссылка на созданный файл, то она сохраняется, пока сохраняется ссылка на сам справочник.
Структуру директорий рекомендуется организовывать логически, т .е. в соответствии с логикой программы, хранения и использования данных. У такой организации директорий – две основные цели: эффективность (обеспечить быстрый поиск файла) и именование (обеспечить удобство для пользователей, например, в случае, если несколько пользователей называют два разных файла в своих директориях одним и тем же именем, в соответствии с его назначением). Директории позволяют осуществить логическую группировку файлов по их назначению, свойствам и т.д. (например, почта, документы, Java-код, игры).
В связи с этим, одноуровневая организация директорий для всех пользователей не рекомендуется, так как могут возникнуть проблемы с удобной группировкой файлов и с совпадением имен. Одноуровневая структура директорий изображена на рис 19.4.
(рис 19.4) Одноуровневая организация директорий.
При двухуровневой организации директорий в многопользовательской системе появляется возможность иметь одинаковые имена файлов сходного назначения для различных пользователей. При такой организации создается главная директория, в которой хранятся персональные поддиректории пользователей. В каждой из них, в свою очередь, хранятся файлы конкретного пользователя. Двухуровневая схема изображена на рис 19.5.
(рис 19.5) Двухуровневая организация директорий.
Однако данная организация не поддерживает возможность дальнейшей группировки файлов.
Наиболее общей и удобной, рекомендуемой читателям, является ).
(рис 19.6) Древовидная структура директорий.
Именно древовидная структура директорий обеспечивает эффективный поиск, возможность группировки и поддержку уже рассмотренных понятий текущей (рабочей) директории и
Различаются абсолютный и относительный путь. Абсолютный путь указывает полный ${SYSDIR}/sh, где макрос SYSDIR задает конкретный путь к системной директории на данном компьютере.
Пример древовидной структуры директорий приведен на рис 19.6.
Примеры операций над директориями (в обозначениях рис 19.6):
cd / – установка
type list – вывод на консоль содержимого одного из ее файлов.
Если /mail, то поддиректория count создается командой:
mkdir count
) возникает вследствие использования различными пользователями одних и тех же файлов и директорий.
(рис 19.7) Структура директорий в виде ациклического графа.
При этом может возникнуть ситуация, когда у одного и того же файла (директории) два различных имени ( aliasing ).
В рис 19.7, если в директории dict удалить ссылку list,
то образуется подвисшая ссылка (dangling pointer).Возможные решения данной проблемы:
Структура директорий в виде произвольного графа создает еще более серьезные проблемы, например, как гарантировать отсутствие циклов в графе директорий. Пример структуры директорий в виде произвольного графа приведен на рис 19.8.
(рис 19.8) Структура директорий в виде произвольного графа.
Циклические ссылки на файлы могут возникнуть из-за ошибок в программе, связанной с обработкой файлов. Если при этом она тестируется и многократно запускается, то это может привести к переполнению внешней памяти на диске (или в
Файловая система –
В системе UNIX имеются команды ; automount и autodirect,
управляющие монтированием. Команда позволяет явно задать точку монтирования
и файловую систему, монтируемую в эту точку. Список всех смонтированных файловых систем
хранится в системном текстовом файле /etc/mnttab (в разных диалектах пути к этому
файлу и даже его имя могут различаться). Команда automount запускается при загрузке
операционной системы и создает системный процесс-automountd, который
по содержимому указанного системного файла автоматически монтирует указанные в
нем файловые системы при загрузке ОС и следит за их постоянной смонтированностью.
Команда autodirect позволяет смоделировать пути к "виртуальным"
директориям, которых физически на данной машине не существует, и указать в системном
файле /etc/vfstab их "заменители" (в виде путей к реальным
директориям, размещенным на локальной машине), что весьма полезно в случае
получения большого проекта от заказчика с абсолютными путями, не существующими на Вашей машине.
На рис 19.9 изображены дерево смонтированных систем с директориями пользователей (a) и еще не смонтированная файловая система (b) с директориями новых пользователей.
(рис 19.9) Дерево смонтированных систем и еще не смонтированная файловая система.
Если по команде или automount в качестве точки
users, то
возникает картина, изображенная на рис 19.10.
(рис 19.10) Точка монтирования файловой системы.
В многопользовательских системах общий доступ к файлам (sharing) необходим. Общий доступ может быть обеспечен через некоторую систему защиты (protection). В распределенных системах файлы могут использоваться совместно через сеть. Управление общим доступом к файлам в разных ОС различно: например, в Windows утилита Explorer обеспечивает возможность установки общего доступа к заданному файлу или папке с помощью share.
Network File System (NFS) – распространенная система общего доступа к файлам через локальную сеть, которая подробно рассмотрена в лекции 20.
Интересная возможность общего доступа к файлам имеется в системе Solaris: файловая система, отданная в общий доступ командой share, может адресоваться с помощью пути вида /net/hostname/filesystem, где hostname – имя машины; filesystem – имя файловой системы на ней. Это очень удобно, но может создать проблемы при переносе проекта в другую локальную сеть (как любой абсолютный путь – в данном случае путь содержит имя машины).
Создатель файла должен иметь возможность управлять cписком допустимых операций над файлом и списком пользователей, которым они разрешены. Это и обеспечивают механизмы
Для управления
Различаются следующие режимы доступа: read, write, execute (RWX).
Различаются также три класса пользователей: владелец файла (owner), группа, к которой он принадлежит (group) и весь остальной "мир" пользователей (public). Группы пользователей создаются системным администратором.
Для каждого класса пользователей признаки защиты RWX кодируются тремя битами (или одним восьмеричным числом). Таким образом, набор полномочий для работы с файлом для всех трех категорий пользователей кодируется 9 битами, или тремя восьмеричными цифрами. Например, команда:
chmod 740 my_file
задает для файла my_file следующие полномочия: для владельца – 7 (111): чтение, запись и выполнение; для группы – 4 (100): только чтение; для остальных пользователей – 0 (000): никаких действий над файлом не разрешено.
Для директории полномочия "X" (execute) означает возможность входа в нее командой cd.
В данном разделе начнем рассматривать принципы и методы реализации файловых систем, изложение которых продолжено в . В данной и следующей лекциях будут рассмотрены следующие вопросы:
Файл - логическая единица
(рис 19.11) Многоуровневая файловая система.
На верхнем уровне абстракции работают пользовательские программы, использующие высокоуровневые примитивы вида WriteLine(F, X).Уровнем ниже располагаются модули интерфейса
Блок управления файлом (File control block - FCB) – структура в памяти, содержащая информацию о файле. Типовая структура блока управления файлом представлена в таблица 3.
| полномочия для работы с файлом |
| даты создания, доступа и модификации файла |
| размер файла |
| блоки данных файла |
При открытии файла и при дальнейшем выполнении операций над ним ОС хранит в памяти целый ряд системных структур, изображенных на рис 19.12.
(рис 19.12) Структуры ОС в памяти для управления файловой системой.
При открытии файла, при исполнении операции, где указывается
Network File System (NFS) – широко распространенная система общего доступа к файлам через локальную сеть.
Абсолютный путь - полный
Атрибуты файла – общие свойства, описывающие содержимое файла.
Блок – логическая единица информации (часть) файла, как правило, объединяющая несколько записей, с целью оптимизации
Блок управления файлом (File control block - FCB) – структура в памяти, содержащая информацию о файле и используемая операционной системой.
Директория (справочник, папка) - directory, folder – структура во внешней памяти, содержащая символьные имена файлов и других директорий и ссылки на них.
Дополнение к файлу объектного кода (ДФОК):в системе "Эльбрус" - файл, содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах (метаданные).
Заголовок файла – головная запись файла, в которой содержатся его атрибуты.
Запись (record) – элементарная единица, часть файла, в терминах которых выполняются операции обмена с файлом.
Защита (Protection) – управляющая информация, задающая полномочия чтения, изменения и исполнения файла.
Контейнер (в системе "Эльбрус") – хранилище файлов на одном или нескольких дисках.
Монтирование – подсоединение отдельного
Набор данных (data set) - термин фирмы IBM для обозначения файла.
Общий доступ (sharing) – возможность доступа к файлам и директориям различным пользователям, в том числе – по локальной сети.
Относительный путь -
Память файла - его записи, содержащие собственно хранимую в нем информацию.
Путь (path) – многослоговое имя файла или директории, состоящее из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней.
Раздел (partition) – смежная область дисковой памяти, имеющая свое логическое имя (обычно одна из первых букв латинского алфавита).
Резервное копирование (back-up) – копирование файлов и директорий на внешние носители – ленту (
Символическая ссылка – ссылка из элемента одной директории на другую директорию или файл, уже имеющий другой
Cправочник внешних ссылок (СВС) – в системе "Эльбрус": справочник, имеющийся у каждого файла и используемый для хранения его внешних ссылок на другие файлы; элементы СВС адресуются по номерам, а не по именам.
Точка монтирования (mount point) – узел в дереве файловых систем, к которому подсоединяется новая файловая система при монтировании.
Файл (file) – смежная область логического адресного пространства, как правило, хранящаяся во внешней памяти.
Файл объектного кода (ФОК) – в системе "Эльбрус": файл, в котором хранится двоичный код исполняемой программы.
Файловая система –
Файл – смежная область логического адресного пространства, хранящаяся, как правило, во внешней памяти. В файле могут храниться данные или программа. Файл делится на записи постоянной или переменной длины. Возможны файлы сложной структуры, интерпретируемые программами, их создавшими (например, документ в Microsoft Word). Файлы интерпретируют ОС и обрабатывающие их программы.
Основные
Основные операции над файлом: создание, запись, чтение, позиционирование, удаление, сокращение, открытие и закрытие.
Тип файла в большинстве ОС указывается с помощью расширения его имени.
Различаются прямой (по номеру блока) и последовательный (с помощью сдвига текущей позиции) доступ к файлам.
Индексные файлы используются для ускорения поиска в больших основных файлах.
Директория – системная структура во внешней памяти, содержащая ссылки на файлы или другие директории.
Файловая система в "Эльбрусе" отличается тем, что файл может быть создан без явной ссылки на него из справочника (директории). Файлы и справочники хранятся в контейнерах – хранилищах из одного или нескольких дисков. Файлы могут ссылаться друг на друга через справочники внешних ссылок, имеющися у каждого файла. Недостатки файловой системы "Эльбруса" – сложность структуры файлов, большое число атрибутов, зависимость операций над файлами от типа
Файлы и директории в файловой системе хранятся в разделах – смежных областях дисковой памяти, имеющих свои логические имена.
Основные операции над директорией: поиск файла, создание файла,
Различные способы логической организации директорий: одноуровневая, двухуровневая, древовидная, в виде
Общий доступ к файлам и директориям необходим в многопользовательских системах, в том числе – в локальных сетях. Общий доступ контролируется некоторой системой защиты. Система
Система защиты управляет полномочиями пользователей по выполнению различных действий над файлами. В ОС UNIX задаются полномочия чтения, записи и исполнения для трех групп пользователей - владельца, его группы и всех остальных.
Для реализации файловой системы ОС организует блок управления файлом, содержащий основные
Реализация системы файлов имеет иерархическую структуру, на верхнем уровне которой – пользовательские программы, на нижнем – драйверы и устройства ввода-вывода.
Для управления открытием,
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.