Обзор методов доступа к файлам
Network File System (NFS) – широко распространенная система общего доступа к файлам через локальную сеть .
Абсолютный путь - полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории.
Атрибуты файла – общие свойства, описывающие содержимое файла.
Блок – логическая единица информации (часть) файла, как правило, объединяющая несколько записей, с целью оптимизации операций ввода-вывода .
Блок управления файлом (File control block - FCB) – структура в памяти, содержащая информацию о файле и используемая операционной системой.
Директория (справочник, папка) - directory, folder – структура во внешней памяти, содержащая символьные имена файлов и других директорий и ссылки на них.
Дополнение к файлу объектного кода (ДФОК):в системе "Эльбрус" - файл , содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах ( метаданные ).
Заголовок файла – головная запись файла, в которой содержатся его атрибуты.
Запись (record) – элементарная единица , часть файла, в терминах которых выполняются операции обмена с файлом.
Защита (Protection) – управляющая информация , задающая полномочия чтения, изменения и исполнения файла.
Контейнер (в системе "Эльбрус") – хранилище файлов на одном или нескольких дисках.
Монтирование – подсоединение отдельного поддерева еще не смонтированной файловой системы к какой-либо вершине (точке монтирования) общего дерева доступных файловых систем.
Набор данных (data set) - термин фирмы IBM для обозначения файла.
Общий доступ (sharing) – возможность доступа к файлам и директориям различным пользователям, в том числе – по локальной сети.
Относительный путь - путь доступа к файлу относительно некоторой текущей директории .
Память файла - его записи, содержащие собственно хранимую в нем информацию.
Путь (path) – многослоговое имя файла или директории, состоящее из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней.
Раздел (partition) – смежная область дисковой памяти, имеющая свое логическое имя (обычно одна из первых букв латинского алфавита).
Резервное копирование (back-up) – копирование файлов и директорий на внешние носители – ленту ( стример ), flash- память , внешний переносной жесткий диск , компакт- диск ( CD , DVD ), с целью их сохранности.
Символическая ссылка – ссылка из элемента одной директории на другую директорию или файл , уже имеющий другой путь доступа .
Cправочник внешних ссылок (СВС) – в системе "Эльбрус": справочник, имеющийся у каждого файла и используемый для хранения его внешних ссылок на другие файлы; элементы СВС адресуются по номерам, а не по именам.
Точка монтирования (mount point) – узел в дереве файловых систем, к которому подсоединяется новая файловая система при монтировании.
Файл (file) – смежная область логического адресного пространства, как правило, хранящаяся во внешней памяти.
Файл объектного кода (ФОК) – в системе "Эльбрус": файл , в котором хранится двоичный код исполняемой программы.
Файловая система – поддерево директорий на некоторой машине, расположенных в одном разделе.
Распределение пространства
В операционной системе файлам всегда выделяется дисковое пространство.
Три типа методов выделения пространства:
- Связанное распределение
- Индексированное распределение
- Смежное Распределение
Обычные файлы
- Эти типы файлов хранят информацию о пользователях.
- Это могут быть текстовые, исполняемые программы и базы данных.
- Это позволяет пользователю выполнять такие операции, как добавление, удаление и изменение.
Файлы каталогов
- Каталог содержит файлы и другую связанную информацию об этих файлах. В основном это папка для хранения и организации нескольких файлов.
Обычно используемые термины в файловых системах
Этот элемент хранит одно значение, которое может быть статическим или переменной длины.
Последовательный доступ
Этот тип метода доступа основан на простом последовательном доступе. В этом методе доступа для каждого файла создается индекс с прямым указателем на разные блоки памяти. В этом методе Индекс ищется последовательно, и его указатель может напрямую обращаться к файлу. Несколько уровней индексации могут быть использованы для обеспечения большей эффективности доступа. Это также уменьшает время, необходимое для доступа к одной записи.
Функции файла
- Создайте файл, найдите место на диске и сделайте запись в каталоге.
- Запись в файл, требуется позиционирование в файле
- Чтение из файла предполагает размещение в файле
- Удалить запись каталога, восстановить дисковое пространство.
- Перестановка: переместить положение чтения / записи.
Краткие итоги
Файл – смежная область логического адресного пространства, хранящаяся, как правило, во внешней памяти. В файле могут храниться данные или программа . Файл делится на записи постоянной или переменной длины. Возможны файлы сложной структуры, интерпретируемые программами, их создавшими (например, документ в Microsoft Word ). Файлы интерпретируют ОС и обрабатывающие их программы.
Основные атрибуты файла : имя, тип, ссылка на размещение на устройстве, размер, признаки защиты, время создания, чтения и модификации. Информация о файлах хранится в структуре директорий.
Основные операции над файлом: создание, запись , чтение, позиционирование , удаление, сокращение, открытие и закрытие.
Тип файла в большинстве ОС указывается с помощью расширения его имени.
Различаются прямой ( по номеру блока) и последовательный (с помощью сдвига текущей позиции) доступ к файлам. Последовательный доступ может быть смоделирован операциями прямого доступа.
Индексные файлы используются для ускорения поиска в больших основных файлах.
Директория – системная структура во внешней памяти, содержащая ссылки на файлы или другие директории.
Файловая система в "Эльбрусе" отличается тем, что файл может быть создан без явной ссылки на него из справочника (директории). Файлы и справочники хранятся в контейнерах – хранилищах из одного или нескольких дисков. Файлы могут ссылаться друг на друга через справочники внешних ссылок, имеющися у каждого файла. Недостатки файловой системы "Эльбруса" – сложность структуры файлов, большое число атрибутов, зависимость операций над файлами от типа внешнего устройства .
Файлы и директории в файловой системе хранятся в разделах – смежных областях дисковой памяти, имеющих свои логические имена.
Основные операции над директорией: поиск файла, создание файла , удаление файла , создание поддиректории, вывод содержимого директории, переименование файла , создание символической ссылки , обход файловой системы.
Различные способы логической организации директорий: одноуровневая, двухуровневая, древовидная, в виде ациклического графа, в виде произвольного графа. Рекомендуется древовидная структура директорий, так как она позволяет организовать поддиректории для каждого пользователя, использовать файлы с одинаковыми именами в директориях различных пользователей и организовывать директории тематически. Структура директорий в виде ациклического графа возникает вследствие совместного использования узлов несколькими поддиректориями. Структура директорий в виде произвольного графа может привести к наличию циклов, обнаружение которых – очень неэффективная и нежелательная операция.
Монтирование файловой системы – это ее подсоединение к узлу уже существующих, активных и используемых файловых систем (точке монтирования).
Общий доступ к файлам и директориям необходим в многопользовательских системах, в том числе – в локальных сетях. Общий доступ контролируется некоторой системой защиты. Система NFS наиболее распространена как система общего доступа к файлам в локальной сети.
Система защиты управляет полномочиями пользователей по выполнению различных действий над файлами. В ОС UNIX задаются полномочия чтения, записи и исполнения для трех групп пользователей - владельца, его группы и всех остальных.
Для реализации файловой системы ОС организует блок управления файлом, содержащий основные атрибуты файла .
Реализация системы файлов имеет иерархическую структуру, на верхнем уровне которой – пользовательские программы, на нижнем – драйверы и устройства ввода-вывода.
Для управления открытием, закрытием файлов и операциями обмена ОС хранит в памяти общую таблицу открытых файлов и таблицы открытых файлов для каждого процесса.
Модуль 8. Управление данными
Тема 15. Способы доступа и организации файлов. Распределение файлов на диске
С точки зрения внутренней структуры (логической организации) файл - это совокупность однотипных записей, каждая из которых информирует о свойствах одного объекта. Записи могут быть фиксированной длины, переменной длины или неопределенной длины. Записи переменной длины в своем составе содержат длину записи, а неопределенной длины – специальный символ конца записи.
При этом каждая запись может иметь идентификатор, представляющий собой ключ, который может быть сложным и состоять из нескольких полей.
Существует три способа доступа к данным, расположенным во внешней памяти:
- Физически последовательный по порядку размещения записи в файле.
- Логически последовательный в соответствии с упорядочением по значению ключей. Для выполнения упорядочения создается специальный индексный файл, в соответствии с которым записи представляются для обработки.
- Прямой - непосредственно по ключу или физическому адресу записи.
Для организации доступа записи должны быть определенным образом расположены и взаимосвязаны во внешней памяти. Есть несколько способов логической организации памяти.
Записи располагаются в физическом порядке и обеспечивают доступ в физической последовательности. Таким образом, для обработки записи с номером N+1 необходимо последовательно обратиться к записям с номером 1, 2,….,N. Это универсальный способ организации файла периферийного устройства. Используется так же для организации входного/выходного потока.
Индексно-последовательный.
Записи располагаются в логической последовательности в соответствии со значением ключей записи. Физически записи располагаются в различных местах файла. Логическая последовательность файла фиксируется в специальной таблице индексов, в которой значение ключей связывается с физическим адресом записи. При такой организации доступ к записям осуществляется логически последовательно в порядке возрастания или убывания значения ключа или по значению ключа.
Место записи в файле, ее физический адрес, определяется алгоритмом преобразования для ключа. Доступ к записям возможен только прямой. Алгоритм преобразования ключа называется хешированием. Ключ, использующий алгоритм хеширования, преобразуется в номер записи.
Это организация, при которой осуществляется прямой доступ по порядковому номеру записи или по физическому адресу.
Организация, в которой файл состоит из последовательных подфайлов (разделов), первый из которых является оглавлением и содержит имена и адреса остальных подфайлов. При такой организации осуществляется комбинированныйдоступ: индексный прямой к разделу и последовательный в разделах.
Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции:
- создание файла;
- уничтожение файла;
- открытие файла;
- закрытие файла;
- чтение файла;
- запись в файл;
- дополнение файла;
- поиск в файле;
- получение атрибутов файла;
- установление новых значений атрибутов;
- переименование;
- выполнение файла;
- чтение каталога;
- и другие операции с файлами и каталогами.
В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции. В некоторых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа. Например, в системе UNIX все пользователи подразделяются на три категории: владельца файла, членов его группы и всех остальных. Различают два основных подхода к определению прав доступа:
- избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;
- мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.
Физически том дисковой памяти - это отдельный носитель внешней памяти, представляющий собой совокупность блоков данных. Блок - это единица физической передачи данных (единица обмена данных с устройством). Запись - это единица ввода/вывода программы. Блок может содержать несколько логических записей, что минимизирует число операций ввода/вывода (рис.1).
Рисунок 1. Коэффициент блокирования 7
Физически файл - это совокупность выделенных блоков памяти (область внешней памяти). Существует два вида организации накопителей на магнитном диске:
1.Трековый, в котором весь диск подразделяется на треки (дорожки) фиксированной длины, на которых размещаются блоки переменного размера. Адресом блока является тройка:
Единицей выделения памяти является трек или цилиндр. Цилиндр представляет собой область памяти, образованную всеми дорожками, доступными на магнитных поверхностях без перемещения магнитных головок.
2.Секторный, в котором диск разбивается на блоки фиксированного размера, обычно кратного 256 байтам. Адресом блока является его порядковый номер на носителе.
Работа с дисковой памятью включает в себя 4 основные процедуры:
- Инициализация тома (форматирование).
- Выделение и освобождение памяти файлу.
- Уплотнение внешней памяти (дефрагментация).
- Копирование, восстановление томов для обеспечения целостности.
- форматирования диска на дорожки (сектора);
- определения сбойных участков диска;
- присвоения метки тому;
- создания оглавления тома;
- записи ОС, если это необходимо.
Выделение и освобождение места для файлов на томе аналогично стратегии размещения ОП.
- Непрерывное распределение памяти, когда файлу выделяется непрерывный участок памяти. Для задания адреса файла в этом случае достаточно указать только номер начального блока. Достоинство этого метода - простота. Очевидный недостаток - проблема расширения файла и фрагментация. Уплотнение или дефрагментация используется для восстановления памяти.
- Секторное или блочное распределение, когда файлу выделяется логически связанные блоки, физически размещенные в любом месте. При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла также может быть задан одним числом - номером первого блока. В отличие от предыдущего способа, каждый блок может быть присоединен в цепочку какого-либо файла и, следовательно, фрагментация отсутствует. Файл может изменяться во время своего существования, наращивая число блоков. Недостатком является сложность реализации доступа к произвольно заданному месту файла: для того чтобы прочитать пятый по порядку блок файла, необходимо последовательно прочитать четыре первых блока, прослеживая цепочку номеров блоков.
Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является использование связанного списка индексов. С каждым блоком (кластером) связывается некоторый элемент - индекс. Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен файлу, то индекс этого блока содержит номер следующего блока данного файла. При этом для каждого файла в каталоге имеется поле, в котором отмечается номер начального индекса для кластера, входящего в файл. Последний индекс содержит специальный маркер конца файла. Такая физическая организация сохраняет все достоинства предыдущего способа и снимает отмеченный недостаток: для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока.
В некоторых файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются промежуточным программным слоем-подсистемой буферизации. Подсистема буферизации представляет собой буферный пул, располагающийся в оперативной памяти, и комплекс программ, управляющих этим пулом и позволяющий выполнять опережающее считывание блоков файла при последовательном доступе. Каждый буфер пула имеет размер, равный одному блоку. При поступлении запроса на чтение некоторого блока подсистема буферизации просматривает свой буферный пул и, если находит требуемый блок, то копирует его в буфер запрашивающего процесса. Операция ввода-вывода считается выполненной, хотя физического обмена с устройством не происходило. Очевиден выигрыш во времени доступа к файлу. Если же нужный блок в буферном пуле отсутствует, то он считывается с устройства и одновременно с передачей запрашивающему процессу копируется в один из буферов подсистемы буферизации. При отсутствии свободного буфера на диск вытесняется наименее используемая информация. Таким образом, подсистема буферизации работает по принципу кэш-памяти. Кроме того, буферизация позволяет одновременно обрабатывать программой текущий блок и читать/писать в другие буфера следующий блок.
В таблица 19.1 приведены некоторые наиболее употребительные типы файлов и соответствующие им расширения имен.
Смысл их ясен из приведенной таблицы. Следует заметить, что унифицированных расширений имен, принятых в различных ОС, очень мало – по -видимому, только .txt (текст) и расширения для исходных кодов на языках программирования, например, .c – Си , .p или . pas – Паскаль и др. Объектные модули называются по -разному (в Windows – .obj, в UNIX - .o ), библиотеки – тоже: статически линкуемые в Windows - .lib, в UNIX - .a ; динамически линкуемые в Windows - .dll, в UNIX – .so.Интересно отметить, что для исполняемого кода в Windows есть стандартное расширение - .exe,а в UNIX – нет, зато есть весьма экзотическое полное стандартное имя: a.out (assembler output).Унифицированы расширения имен для различных текстовых процессоров: . doc - Microsoft Word , .pdf – Adobe Acrobat и др.
Методы доступа к файлам
Традиционно различаются файлы последовательного доступа и прямого доступа. Файл последовательного доступа – это файл , доступ к которому возможен только позиционированием на начало и конец и затем операциями обмена вида считать или обновить следующую ( предыдущую ) запись. Файл прямого доступа – это файл , для которого возможен непосредственный доступ по номеру записи и операция обмена с явным указанием номера записи. В любом случае, при выполнении обмена с файлом всегда существует некоторая текущая позиция по файлу, указывающая на некоторую запись , на позицию перед началом или после конца файла. В операциях над файлом последовательного доступа произвольная установка позиции не допускается, а разрешены только операции , автоматически передвигающие текущую позицию на следующую (предыдущую) запись .
Подобная особенность связана с различием устройств, на которых размещены файлы (например, магнитная лента – по сути дела, последовательное устройство), однако необходимость организации последовательных или прямых файлов может быть связана с сутью задачи.
По -видимому, последовательный доступ используется чаще: именно так происходит ввод данных, вывод результатов на печать или на экран.
Аннотация: В настоящей лекции вводится понятие и рассматриваются основные функции и интерфейс файловой системы.
Специальные файлы
- Эти файлы также называются файлами устройств. Он представляет физические устройства, такие как принтеры, диски, сети, флэш-накопители и т. Д.
БАЗА ДАННЫХ:
Сбор связанных данных называется базой данных. Отношения между элементами данных являются явными.
Методы доступа к файлам
Доступ к файлам – это процесс, который определяет способ доступа к файлам и их чтения в память. Как правило, один метод доступа всегда поддерживается операционными системами. Хотя есть некоторые операционные системы, которые также поддерживают методы множественного доступа.
Три метода доступа к файлам:
- Последовательный доступ
- Прямой произвольный доступ
- Индекс последовательного доступа
Специальный символьный файл
Это аппаратный файл, который читает или записывает данные символьно, например, мышь, принтер и т. Д.
ФАЙЛЫ:
Файлы – это набор похожих записей, который рассматривается как единое целое.
Свойства файловой системы
Вот важные свойства файловой системы:
- Файлы хранятся на диске или в другом хранилище и не исчезают при выходе пользователя из системы.
- Файлы имеют имена и связаны с разрешением доступа, которое разрешает контролируемый обмен.
- Файлы могут быть организованы или более сложные структуры, чтобы отразить отношения между ними.
Введение
История систем управления данными во внешней памяти начинается еще с магнитных лент, но современный облик они приобрели с появлением магнитных дисков. До этого каждая прикладная программа сама решала проблемы именования данных и их структуризации во внешней памяти . Это затрудняло поддержание на внешнем носителе нескольких архивов долговременно хранящейся информации. Историческим шагом стал переход к использованию централизованных систем управления файлами . Система управления файлами берет на себя распределение внешней памяти , отображение имен файлов в адреса внешней памяти и обеспечение доступа к данным.
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную работу с данными, хранящимися во внешней памяти , и обеспечить пользователю удобный интерфейс при работе с такими данными. Организовать хранение информации на магнитном диске непросто. Это требует, например, хорошего знания устройства контроллера диска, особенностей работы с его регистрами. Непосредственное взаимодействие с диском - прерогатива компонента системы ввода-вывода ОС, называемого драйвером диска. Для того чтобы избавить пользователя компьютера от сложностей взаимодействия с аппаратурой, была придумана ясная абстрактная модель файловой системы. Операции записи или чтения файла концептуально проще, чем низкоуровневые операции работы с устройствами.
Основная идея использования внешней памяти состоит в следующем. ОС делит память на блоки фиксированного размера, например, 4096 байт. Файл , обычно представляющий собой неструктурированную последовательность однобайтовых записей, хранится в виде последовательности блоков (не обязательно смежных); каждый блок хранит целое число записей. В некоторых ОС (MS-DOS) адреса блоков, содержащих данные файла , могут быть организованы в связный список и вынесены в отдельную таблицу в памяти. В других ОС (Unix) адреса блоков данных файла хранятся в отдельном блоке внешней памяти (так называемом индексе или индексном узле). Этот прием, называемый индексацией , является наиболее распространенным для приложений, требующих произвольного доступа к записям файлов . Индекс файла состоит из списка элементов, каждый из которых содержит номер блока в файле и сведения о местоположении данного блока. Считывание очередного байта осуществляется с так называемой текущей позиции, которая характеризуется смещением от начала файла . Зная размер блока, легко вычислить номер блока, содержащего текущую позицию. Адрес же нужного блока диска можно затем извлечь из индекса файла . Базовой операцией, выполняемой по отношению к файлу , является чтение блока с диска и перенос его в буфер , находящийся в основной памяти.
Файловая система позволяет при помощи системы справочников ( каталогов , директорий ) связать уникальное имя файла с блоками вторичной памяти, содержащими данные файла . Иерархическая структура каталогов , используемая для управления файлами , может служить другим примером индексной структуры. В этом случае каталоги или папки играют роль индексов, каждый из которых содержит ссылки на свои подкаталоги. С этой точки зрения вся файловая система компьютера представляет собой большой индексированный файл . Помимо собственно файлов и структур данных, используемых для управления файлами ( каталоги , дескрипторы файлов , различные таблицы распределения внешней памяти ), понятие " файловая система " включает программные средства , реализующие различные операции над файлами .
Перечислим основные функции файловой системы.
- Идентификация файлов . Связывание имени файла с выделенным ему пространством внешней памяти .
- Распределение внешней памяти между файлами . Для работы с конкретным файлом пользователю не требуется иметь информацию о местоположении этого файла на внешнем носителе информации. Например, для того чтобы загрузить документ в редактор с жесткого диска, нам не нужно знать, на какой стороне какого магнитного диска, на каком цилиндре и в каком секторе находится данный документ.
- Обеспечение надежности и отказоустойчивости. Стоимость информации может во много раз превышать стоимость компьютера.
- Обеспечение защиты от несанкционированного доступа.
- Обеспечение совместного доступа к файлам , так чтобы пользователю не приходилось прилагать специальных усилий по обеспечению синхронизации доступа.
- Обеспечение высокой производительности.
Иногда говорят, что файл - это поименованный набор связанной информации, записанной во вторичную память. Для большинства пользователей файловая система - наиболее видимая часть ОС. Она предоставляет механизм для онлайнового хранения и доступа как к данным, так и к программам для всех пользователей системы. С точки зрения пользователя, файл - единица внешней памяти , то есть данные, записанные на диск, должны быть в составе какого-нибудь файла .
Важный аспект организации файловой системы - учет стоимости операций взаимодействия с вторичной памятью. Процесс считывания блока диска состоит из позиционирования считывающей головки над дорожкой, содержащей требуемый блок, ожидания, пока требуемый блок сделает оборот и окажется под головкой, и собственно считывания блока. Для этого требуется значительное время (десятки миллисекунд). В современных компьютерах обращение к диску осуществляется примерно в 100 000 раз медленнее, чем обращение к оперативной памяти. Таким образом, критерием вычислительной сложности алгоритмов, работающих с внешней памятью , является количество обращений к диску.
В данной лекции рассматриваются вопросы структуры, именования, защиты файлов ; операции , которые разрешается производить над файлами ; организация файлового архива (полного дерева справочников). Проблемы выделения дискового пространства, обеспечения производительной работы файловой системы и ряд других вопросов, интересующих разработчиков системы, вы найдете в следующей лекции.
Тип файла
Это относится к способности операционной системы различать различные типы файлов, такие как текстовые, двоичные и исходные файлы. Однако в операционных системах, таких как MS_DOS и UNIX, есть файлы следующих типов:
Общие сведения о файлах
Имена файлов
Файлы представляют собой абстрактные объекты. Их задача - хранить информацию, скрывая от пользователя детали работы с устройствами. Когда процесс создает файл , он дает ему имя. После завершения процесса файл продолжает существовать и через свое имя может быть доступен другим процессам.
Правила именования файлов зависят от ОС. Многие ОС поддерживают имена из двух частей (имя+расширение), например progr.c ( файл , содержащий текст программы на языке Си) или autoexec.bat ( файл , содержащий команды интерпретатора командного языка). Тип расширения файла позволяет ОС организовать работу с ним различных прикладных программ в соответствии с заранее оговоренными соглашениями. Обычно ОС накладывают некоторые ограничения, как на используемые в имени символы, так и на длину имени файла . В соответствии со стандартом POSIX, популярные ОС оперируют удобными для пользователя длинными именами (до 255 символов).
Типы файлов
Важный аспект организации файловой системы и ОС - следует ли поддерживать и распознавать типы файлов . Если да, то это может помочь правильному функционированию ОС, например не допустить вывода на принтер бинарного файла .
Основные типы файлов : регулярные (обычные) файлы и директории (справочники, каталоги ). Обычные файлы содержат пользовательскую информацию. Директории - системные файлы , поддерживающие структуру файловой системы. В каталоге содержится перечень входящих в него файлов и устанавливается соответствие между файлами и их характеристиками ( атрибутами ). Мы будем рассматривать директории ниже.
Напомним, что хотя внутри подсистемы управления файлами обычный файл представляется в виде набора блоков внешней памяти , для пользователей обеспечивается представление файла в виде линейной последовательности байтов. Такое представление позволяет использовать абстракцию файла при работе с внешними устройствами, при организации межпроцессных взаимодействий и т. д. Так, например, клавиатура обычно рассматривается как текстовый файл , из которого компьютер получает данные в символьном формате. Поэтому иногда к файлам приписывают другие объекты ОС, например специальные символьные файлы и специальные блочные файлы , именованные каналы и сокеты, имеющие файловый интерфейс. Эти объекты рассматриваются в других разделах данного курса.
Далее речь пойдет главным образом об обычных файлах.
Обычные (или регулярные) файлы реально представляют собой набор блоков (возможно, пустой) на устройстве внешней памяти , на котором поддерживается файловая система. Такие файлы могут содержать как текстовую информацию (обычно в формате ASCII), так и произвольную двоичную (бинарную) информацию.
Текстовые файлы содержат символьные строки, которые можно распечатать, увидеть на экране или редактировать обычным текстовым редактором.
Другой тип файлов - нетекстовые, или бинарные, файлы . Обычно они имеют некоторую внутреннюю структуру. Например, исполняемый файл в ОС Unix имеет пять секций: заголовок, текст, данные, биты реаллокации и символьную таблицу. ОС выполняет файл , только если он имеет нужный формат. Другим примером бинарного файла может быть архивный файл . Типизация файлов не слишком строгая.
Обычно прикладные программы, работающие с файлами , распознают тип файла по его имени в соответствии с общепринятыми соглашениями. Например, файлы с расширениями .c , .pas , .txt - ASCII-файлы, файлы с расширениями .exe - выполнимые, файлы с расширениями .obj , .zip - бинарные и т. д.
Атрибуты файлов
Кроме имени ОС часто связывают с каждым файлом и другую информацию, например дату модификации, размер и т. д. Эти другие характеристики файлов называются атрибутами . Список атрибутов в разных ОС может варьироваться. Обычно он содержит следующие элементы: основную информацию (имя, тип файла ), адресную информацию (устройство, начальный адрес, размер), информацию об управлении доступом (владелец, допустимые операции) и информацию об использовании (даты создания, последнего чтения, модификации и др.).
Список атрибутов обычно хранится в структуре директорий (см. следующую лекцию) или других структурах, обеспечивающих доступ к данным файла .
Атрибуты файла
Файл имеет имя и данные. Кроме того, он также хранит метаинформацию, такую как дата и время создания файла, текущий размер, дата последнего изменения и т. Д. Вся эта информация называется атрибутами файловой системы.
Вот некоторые важные атрибуты файла, используемые в ОС:
- Имя: это единственная информация, хранящаяся в удобочитаемой форме.
- Идентификатор : каждый файл идентифицируется уникальным номером тега в файловой системе, называемой идентификатором.
- Расположение: указывает на местоположение файла на устройстве.
- Тип: Этот атрибут необходим для систем, которые поддерживают файлы различных типов.
- Размер . Атрибут, используемый для отображения текущего размера файла.
- Защита . Этот атрибут назначает и контролирует права доступа на чтение, запись и выполнение файла.
- Время, дата и безопасность: используется для защиты, безопасности, а также для мониторинга
Файловые каталоги
Один каталог может содержать или не содержать несколько файлов. Он также может иметь подкаталоги внутри основного каталога. Информация о файлах поддерживается каталогами. В ОС Windows это называется папками.
Индексированное распределение
- Каталог содержит адреса блоков индекса конкретных файлов.
- Создается индексный блок со всеми указателями для определенных файлов.
- Все файлы должны иметь отдельные индексные блоки для хранения адресов дискового пространства.
Краткие итоги
Файл – смежная область логического адресного пространства, хранящаяся, как правило, во внешней памяти. В файле могут храниться данные или программа . Файл делится на записи постоянной или переменной длины. Возможны файлы сложной структуры, интерпретируемые программами, их создавшими (например, документ в Microsoft Word ). Файлы интерпретируют ОС и обрабатывающие их программы.
Основные атрибуты файла : имя, тип, ссылка на размещение на устройстве, размер, признаки защиты, время создания, чтения и модификации. Информация о файлах хранится в структуре директорий.
Основные операции над файлом: создание, запись , чтение, позиционирование , удаление, сокращение, открытие и закрытие.
Тип файла в большинстве ОС указывается с помощью расширения его имени.
Различаются прямой ( по номеру блока) и последовательный (с помощью сдвига текущей позиции) доступ к файлам. Последовательный доступ может быть смоделирован операциями прямого доступа.
Индексные файлы используются для ускорения поиска в больших основных файлах.
Директория – системная структура во внешней памяти, содержащая ссылки на файлы или другие директории.
Файловая система в "Эльбрусе" отличается тем, что файл может быть создан без явной ссылки на него из справочника (директории). Файлы и справочники хранятся в контейнерах – хранилищах из одного или нескольких дисков. Файлы могут ссылаться друг на друга через справочники внешних ссылок, имеющися у каждого файла. Недостатки файловой системы "Эльбруса" – сложность структуры файлов, большое число атрибутов, зависимость операций над файлами от типа внешнего устройства .
Файлы и директории в файловой системе хранятся в разделах – смежных областях дисковой памяти, имеющих свои логические имена.
Основные операции над директорией: поиск файла, создание файла , удаление файла , создание поддиректории, вывод содержимого директории, переименование файла , создание символической ссылки , обход файловой системы.
Различные способы логической организации директорий: одноуровневая, двухуровневая, древовидная, в виде ациклического графа, в виде произвольного графа. Рекомендуется древовидная структура директорий, так как она позволяет организовать поддиректории для каждого пользователя, использовать файлы с одинаковыми именами в директориях различных пользователей и организовывать директории тематически. Структура директорий в виде ациклического графа возникает вследствие совместного использования узлов несколькими поддиректориями. Структура директорий в виде произвольного графа может привести к наличию циклов, обнаружение которых – очень неэффективная и нежелательная операция.
Монтирование файловой системы – это ее подсоединение к узлу уже существующих, активных и используемых файловых систем (точке монтирования).
Общий доступ к файлам и директориям необходим в многопользовательских системах, в том числе – в локальных сетях. Общий доступ контролируется некоторой системой защиты. Система NFS наиболее распространена как система общего доступа к файлам в локальной сети.
Система защиты управляет полномочиями пользователей по выполнению различных действий над файлами. В ОС UNIX задаются полномочия чтения, записи и исполнения для трех групп пользователей - владельца, его группы и всех остальных.
Для реализации файловой системы ОС организует блок управления файлом, содержащий основные атрибуты файла .
Реализация системы файлов имеет иерархическую структуру, на верхнем уровне которой – пользовательские программы, на нижнем – драйверы и устройства ввода-вывода.
Для управления открытием, закрытием файлов и операциями обмена ОС хранит в памяти общую таблицу открытых файлов и таблицы открытых файлов для каждого процесса.
Модуль 8. Управление данными
Тема 15. Способы доступа и организации файлов. Распределение файлов на диске
С точки зрения внутренней структуры (логической организации) файл - это совокупность однотипных записей, каждая из которых информирует о свойствах одного объекта. Записи могут быть фиксированной длины, переменной длины или неопределенной длины. Записи переменной длины в своем составе содержат длину записи, а неопределенной длины – специальный символ конца записи.
При этом каждая запись может иметь идентификатор, представляющий собой ключ, который может быть сложным и состоять из нескольких полей.
Существует три способа доступа к данным, расположенным во внешней памяти:
- Физически последовательный по порядку размещения записи в файле.
- Логически последовательный в соответствии с упорядочением по значению ключей. Для выполнения упорядочения создается специальный индексный файл, в соответствии с которым записи представляются для обработки.
- Прямой - непосредственно по ключу или физическому адресу записи.
Для организации доступа записи должны быть определенным образом расположены и взаимосвязаны во внешней памяти. Есть несколько способов логической организации памяти.
Записи располагаются в физическом порядке и обеспечивают доступ в физической последовательности. Таким образом, для обработки записи с номером N+1 необходимо последовательно обратиться к записям с номером 1, 2,….,N. Это универсальный способ организации файла периферийного устройства. Используется так же для организации входного/выходного потока.
Индексно-последовательный.
Записи располагаются в логической последовательности в соответствии со значением ключей записи. Физически записи располагаются в различных местах файла. Логическая последовательность файла фиксируется в специальной таблице индексов, в которой значение ключей связывается с физическим адресом записи. При такой организации доступ к записям осуществляется логически последовательно в порядке возрастания или убывания значения ключа или по значению ключа.
Место записи в файле, ее физический адрес, определяется алгоритмом преобразования для ключа. Доступ к записям возможен только прямой. Алгоритм преобразования ключа называется хешированием. Ключ, использующий алгоритм хеширования, преобразуется в номер записи.
Это организация, при которой осуществляется прямой доступ по порядковому номеру записи или по физическому адресу.
Организация, в которой файл состоит из последовательных подфайлов (разделов), первый из которых является оглавлением и содержит имена и адреса остальных подфайлов. При такой организации осуществляется комбинированныйдоступ: индексный прямой к разделу и последовательный в разделах.
Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции:
- создание файла;
- уничтожение файла;
- открытие файла;
- закрытие файла;
- чтение файла;
- запись в файл;
- дополнение файла;
- поиск в файле;
- получение атрибутов файла;
- установление новых значений атрибутов;
- переименование;
- выполнение файла;
- чтение каталога;
- и другие операции с файлами и каталогами.
В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции. В некоторых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа. Например, в системе UNIX все пользователи подразделяются на три категории: владельца файла, членов его группы и всех остальных. Различают два основных подхода к определению прав доступа:
- избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;
- мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.
Физически том дисковой памяти - это отдельный носитель внешней памяти, представляющий собой совокупность блоков данных. Блок - это единица физической передачи данных (единица обмена данных с устройством). Запись - это единица ввода/вывода программы. Блок может содержать несколько логических записей, что минимизирует число операций ввода/вывода (рис.1).
Рисунок 1. Коэффициент блокирования 7
Физически файл - это совокупность выделенных блоков памяти (область внешней памяти). Существует два вида организации накопителей на магнитном диске:
1.Трековый, в котором весь диск подразделяется на треки (дорожки) фиксированной длины, на которых размещаются блоки переменного размера. Адресом блока является тройка:
Единицей выделения памяти является трек или цилиндр. Цилиндр представляет собой область памяти, образованную всеми дорожками, доступными на магнитных поверхностях без перемещения магнитных головок.
2.Секторный, в котором диск разбивается на блоки фиксированного размера, обычно кратного 256 байтам. Адресом блока является его порядковый номер на носителе.
Работа с дисковой памятью включает в себя 4 основные процедуры:
- Инициализация тома (форматирование).
- Выделение и освобождение памяти файлу.
- Уплотнение внешней памяти (дефрагментация).
- Копирование, восстановление томов для обеспечения целостности.
- форматирования диска на дорожки (сектора);
- определения сбойных участков диска;
- присвоения метки тому;
- создания оглавления тома;
- записи ОС, если это необходимо.
Выделение и освобождение места для файлов на томе аналогично стратегии размещения ОП.
- Непрерывное распределение памяти, когда файлу выделяется непрерывный участок памяти. Для задания адреса файла в этом случае достаточно указать только номер начального блока. Достоинство этого метода - простота. Очевидный недостаток - проблема расширения файла и фрагментация. Уплотнение или дефрагментация используется для восстановления памяти.
- Секторное или блочное распределение, когда файлу выделяется логически связанные блоки, физически размещенные в любом месте. При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла также может быть задан одним числом - номером первого блока. В отличие от предыдущего способа, каждый блок может быть присоединен в цепочку какого-либо файла и, следовательно, фрагментация отсутствует. Файл может изменяться во время своего существования, наращивая число блоков. Недостатком является сложность реализации доступа к произвольно заданному месту файла: для того чтобы прочитать пятый по порядку блок файла, необходимо последовательно прочитать четыре первых блока, прослеживая цепочку номеров блоков.
Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является использование связанного списка индексов. С каждым блоком (кластером) связывается некоторый элемент - индекс. Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен файлу, то индекс этого блока содержит номер следующего блока данного файла. При этом для каждого файла в каталоге имеется поле, в котором отмечается номер начального индекса для кластера, входящего в файл. Последний индекс содержит специальный маркер конца файла. Такая физическая организация сохраняет все достоинства предыдущего способа и снимает отмеченный недостаток: для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока.
В некоторых файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются промежуточным программным слоем-подсистемой буферизации. Подсистема буферизации представляет собой буферный пул, располагающийся в оперативной памяти, и комплекс программ, управляющих этим пулом и позволяющий выполнять опережающее считывание блоков файла при последовательном доступе. Каждый буфер пула имеет размер, равный одному блоку. При поступлении запроса на чтение некоторого блока подсистема буферизации просматривает свой буферный пул и, если находит требуемый блок, то копирует его в буфер запрашивающего процесса. Операция ввода-вывода считается выполненной, хотя физического обмена с устройством не происходило. Очевиден выигрыш во времени доступа к файлу. Если же нужный блок в буферном пуле отсутствует, то он считывается с устройства и одновременно с передачей запрашивающему процессу копируется в один из буферов подсистемы буферизации. При отсутствии свободного буфера на диск вытесняется наименее используемая информация. Таким образом, подсистема буферизации работает по принципу кэш-памяти. Кроме того, буферизация позволяет одновременно обрабатывать программой текущий блок и читать/писать в другие буфера следующий блок.
В таблица 19.1 приведены некоторые наиболее употребительные типы файлов и соответствующие им расширения имен.
Смысл их ясен из приведенной таблицы. Следует заметить, что унифицированных расширений имен, принятых в различных ОС, очень мало – по -видимому, только .txt (текст) и расширения для исходных кодов на языках программирования, например, .c – Си , .p или . pas – Паскаль и др. Объектные модули называются по -разному (в Windows – .obj, в UNIX - .o ), библиотеки – тоже: статически линкуемые в Windows - .lib, в UNIX - .a ; динамически линкуемые в Windows - .dll, в UNIX – .so.Интересно отметить, что для исполняемого кода в Windows есть стандартное расширение - .exe,а в UNIX – нет, зато есть весьма экзотическое полное стандартное имя: a.out (assembler output).Унифицированы расширения имен для различных текстовых процессоров: . doc - Microsoft Word , .pdf – Adobe Acrobat и др.
Смежное Распределение
- Каждый файл использует непрерывное адресное пространство в памяти.
- Здесь ОС назначает адрес диска в линейном порядке.
- В методе смежного размещения внешняя фрагментация является самой большой проблемой.
Произвольный доступ
Метод произвольного доступа также называется прямым произвольным доступом. Этот метод позволяет получить доступ к записи напрямую. Каждая запись имеет свой собственный адрес, по которому можно напрямую получить доступ для чтения и записи.
Последовательный доступ
В этом типе метода доступа к файлам доступ к записям осуществляется в определенной заранее определенной последовательности. В методе последовательного доступа информация, хранящаяся в файле, также обрабатывается одна за другой. Большинство компиляторов получают доступ к файлам, используя этот метод доступа.
Файловая структура
Файловая структура должна быть предопределенным форматом таким образом, чтобы операционная система понимала. Он имеет исключительно определенную структуру, основанную на его типе.
Три типа структуры файлов в ОС:
- Текстовый файл: это последовательность символов, организованная в виде строк.
- Объектный файл: это серия байтов, которая организована в блоки.
- Исходный файл: это набор функций и процессов.
Цель системы управления файлами
Вот основные цели системы управления файлами:
- Он обеспечивает поддержку ввода-вывода для различных типов устройств хранения.
- Минимизирует шансы потерянных или уничтоженных данных
- Помогает ОС стандартизировать подпрограммы интерфейса ввода / вывода для пользовательских процессов.
- Он обеспечивает поддержку ввода / вывода для нескольких пользователей в многопользовательской системной среде.
Организация файлов и доступ к ним
Программист воспринимает файл в виде набора однородных записей. Запись - это наименьший элемент данных , который может быть обработан как единое целое прикладной программой при обмене с внешним устройством. Причем в большинстве ОС размер записи равен одному байту. В то время как приложения оперируют записями, физический обмен с устройством осуществляется большими единицами (обычно блоками). Поэтому записи объединяются в блоки для вывода и разблокируются - для ввода. Вопросы распределения блоков внешней памяти между файлами рассматриваются в следующей лекции.
ОС поддерживают несколько вариантов структуризации файлов .
Последовательный файл
Простейший вариант - так называемый последовательный файл . То есть файл является последовательностью записей. Поскольку записи, как правило, однобайтовые, файл представляет собой неструктурированную последовательность байтов.
Обработка подобных файлов предполагает последовательное чтение записей от начала файла , причем конкретная запись определяется ее положением в файле . Такой способ доступа называется последовательным (модель ленты). Если в качестве носителя файла используется магнитная лента, то так и делается. Текущая позиция считывания может быть возвращена к началу файла ( rewind ).
Файл прямого доступа
В реальной практике файлы хранятся на устройствах прямого (random) доступа, например на дисках, поэтому содержимое файла может быть разбросано по разным блокам диска, которые можно считывать в произвольном порядке. Причем номер блока однозначно определяется позицией внутри файла .
Здесь имеется в виду относительный номер, специфицирующий данный блок среди блоков диска, принадлежащих файлу . О связи относительного номера блока с абсолютным его номером на диске рассказывается в следующей лекции.
Естественно, что в этом случае для доступа к середине файла просмотр всего файла с самого начала не обязателен. Для специфицирования места, с которого надо начинать чтение, используются два способа: с начала или с текущей позиции, которую дает операция seek. Файл , байты которого могут быть считаны в произвольном порядке, называется файлом прямого доступа .
Таким образом, файл , состоящий из однобайтовых записей на устройстве прямого доступа, - наиболее распространенный способ организации файла . Базовыми операциями для такого рода файлов являются считывание или запись символа в текущую позицию. В большинстве языков высокого уровня предусмотрены операторы посимвольной пересылки данных в файл или из него.
Подобную логическую структуру имеют файлы во многих файловых системах, например в файловых системах ОС Unix и MS-DOS. ОС не осуществляет никакой интерпретации содержимого файла . Эта схема обеспечивает максимальную гибкость и универсальность. С помощью базовых системных вызовов (или функций библиотеки ввода/вывода) пользователи могут как угодно структурировать файлы . В частности, многие СУБД хранят свои базы данных в обычных файлах .
Другие формы организации файлов
Известны как другие формы организации файла , так и другие способы доступа к ним, которые использовались в ранних ОС, а также применяются сегодня в больших мэйнфреймах (mainframe), ориентированных на коммерческую обработку данных.
Другой способ представления файлов - последовательность записей переменной длины, каждая из которых содержит ключевое поле в фиксированной позиции внутри записи (см. рис. 11.1). Базисная операция в данном случае - считать запись с каким-либо значением ключа. Записи могут располагаться в файле последовательно (например, отсортированные по значению ключевого поля) или в более сложном порядке. Метод доступа по значению ключевого поля к записям последовательного файла называется индексно-последовательным.
В некоторых системах ускорение доступа к файлу обеспечивается конструированием индекса файла . Индекс обычно хранится на том же устройстве, что и сам файл , и состоит из списка элементов, каждый из которых содержит идентификатор записи, за которым следует указание о местоположении данной записи. Для поиска записи вначале происходит обращение к индексу, где находится указатель на нужную запись. Такие файлы называются индексированными, а метод доступа к ним - доступ с использованием индекса.
Предположим, у нас имеется большой несортированный файл , содержащий разнообразные сведения о студентах, состоящие из записей с несколькими полями, и возникает задача организации быстрого поиска по одному из полей, например по фамилии студента. Рис. 11.2 иллюстрирует решение данной проблемы - организацию метода доступа к файлу с использованием индекса.
Следует отметить, что почти всегда главным фактором увеличения скорости доступа является избыточность данных.
Способ выделения дискового пространства при помощи индексных узлов, применяемый в ряде ОС (Unix и некоторых других, см. следующую лекцию), может служить другим примером организации индекса.
В этом случае ОС использует древовидную организацию блоков, при которой блоки, составляющие файл , являются листьями дерева, а каждый внутренний узел содержит указатели на множество блоков файла . Для больших файлов индекс может быть слишком велик. В этом случае создают индекс для индексного файла (блоки промежуточного уровня или блоки косвенной адресации).
Файл представляет собой набор коррелированной информации, которая записывается во вторичном или энергонезависимом хранилище, таком как магнитные диски, оптические диски и ленты. Это метод сбора данных, который используется в качестве средства для ввода и получения вывода из этой программы.
В общем случае файл представляет собой последовательность битов, байтов или записей, значение которых определяется создателем файла и пользователем. Каждый файл имеет логическое расположение, где он находится для хранения и поиска.
Из этого руководства по операционной системе вы узнаете:
Связанное распределение
- Каждый файл содержит список ссылок.
- Каталог содержит ссылку или указатель в первом блоке файла.
- При этом методе нет внешней фрагментации
- Этот метод размещения файлов используется для файлов с последовательным доступом.
- Этот метод не идеален для файлов прямого доступа.
RECORD:
Тип записи – это сложный тип данных, который позволяет программисту создавать новый тип данных с желаемой структурой столбцов. Он группирует один или несколько столбцов для формирования нового типа данных. Эти столбцы будут иметь свои собственные имена и тип данных.
Читайте также: