Cистема управления данными Система управления данными играет центральную роль в ОС, поскольку она должна управлять и хранить информацию и программы, принадлежащие как пользователям, так и самой системе. При-чем, с концептуальной точки зрения, целесообразно не различать хранимую информацию и перифе-рийные устройства как источники или получатели информации во время выполнения программы, что тесно связывает систему управления данными (СУД) с системой управления вводом/выводом (СУВВ) в единое целое. Здесь имеется в виду обеспечение возможности взаимодействовать с устройствами ввода/вывода как с файлами. Основными понятиями СУД являются файл, том и каталог. Причем существует логический и физический аспект этих понятий. Логический файл - это организованная совокупность однородных элементов информации или однотипных записей для хранения информации в ИВС, которой присвоено имя. Физический файл - это область внешней памяти, хранящей информацию, и дескриптор файла, используемый для доступа к файлу и хранящий данные о физическом размещении и характеристиках файла. Файл состоит из записей или последовательности байт. Запись содержит информацию о свойст-вах одного объекта, значение которого определяется в виде полей (атрибутов). Одно или несколько полей записи, однозначно идентифицирующих запись файла, образуют ключ записи. Сменяемое устройство внешней памяти, используемое для хранения информации, называется томом памяти. Чтобы получить доступ к информации, нужно установить том на соответствующее периферийное устройство, связать его с СУД, указать ОС метку - имя тома. Сменные тома позволяют: • расширить объемы хранения информации в ВС; • производить обмен файлами между разными ЭВМ (на уровне носителей). Примерами томов являются: МЛ - тома с последовательным доступом и МД, дискеты - тома с прямым доступом. Сменный том в целях безопасности и удобства должен: • содержать всю информацию, позволяющую идентифицировать и физически локализо-вать файлы, содержащиеся в нем; • удовлетворять требованиям установки на любом совместимом стандартном устройстве. В соответствии с этим тома прямого доступа (ТПД) имеют: • специальную запись - метку тома (не обязательно иметь); • оглавление или каталог файлов тома, хранящий дескрипторы файлов, который сам яв-ляется файлом; • собственно файлы тома. Логическим или виртуальным томом памяти (ВТП) называется область внешней памяти (раз-дел) на физическом томе, организованный аналогично тому прямого доступа, то есть имеющий свою метку и совокупность хранящихся файлов. Появление ВТП обусловлено появлением накопителей на магнитном диске (НМД) большой емкости, многопользовательских режимов и концепции виртуаль-ных машин. Большая емкость ТПД, размещение на них файлов многих пользователей создали в СУД сле-дующие трудности: • конфликты одноименных файлов разных пользователей; • замедление работы ОС из-за поиска требуемого файла в оглавлении; • доступность чужих файлов, то есть их незащищенность от других пользователей. Это привело к появлению на ТПД иерархических, многоуровневых каталогов (справочников) файлов, где корневой, главный каталог - это оглавление тома, а подчиненные или каталоги нижнего уровня - это справочники группы файлов, объединенных по какому-либо признаку. Можно сказать, что каталог является виртуальным оглавлением раздела ТПД внешней памяти. Итак, файл, том и каталоги - это логические объекты, обрабатываемые пользователем и про-граммами ВС, и одновременно физические объекты, каждый из которых занимает некоторое про-странство ТПД. В соответствии с этим СУД подразделяется на два уровня представления информа-ции. 1. Система управления файлами (СУФ), которая обеспечивает удобное логическое пред-ставление и средства работы с файлами. 2. Система управления внешней памятью, которая обеспечивает эффективное размещение, физическое представление и надежное хранение данных на томах внешней памяти. Система управления файлами Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обес-печить совместное использование файлов несколькими пользователями и процессами. В широком смысле понятие "файловая система" включает: • совокупность всех файлов на диске; • наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске; • комплекс системных программных средств, реализующих управление файлами, в част-ности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами. СУФ реализует выполнение следующих базовых функций. 1. Организацию логической системы в виде томов памяти и каталогов файлов. 2. Управление томами, в том числе: • инициализацию (форматирование); • подключение (перевод в оперативное состояние); • отключение (перевод в автономное состояние). • Управление каталогами файлов: • создание каталогов; • переключение между каталогами; • удаление каталогов. • Манипуляции с файлами: • создание файла (определение имени, выделение места во внешней памяти); • удаление файла (освобождение имени и занимаемого файлами пространст-ва); • открытие файла (объявление ОС о намерении использовать файл с опреде-ленными функциями доступа и правами); • закрытие открытого файла (запрещение всякого доступа к файлу); • копирование и переименование файла. 5. Связь файлов и потоков ввода/вывода, соединение и переадресацию потоков. 6. Организацию логической структуры файлов и доступа к записям файлов в требуемом порядке. 7. Модификацию записей файлов: читать, писать, изменять, вставлять, добавлять, удалять записи. 8. Защиту файлов от несанкционированного доступа и управление правами доступа. Кроме того, может быть масса сервисных функций проверки и модификации различных харак-теристик файлов, каталогов, томов, зависящих от конкретной реализации СУФ. Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги. Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы со-стоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы. В разных файловых системах могут использоваться в качестве атрибутов разные характеристи-ки, например: • информация о разрешенном доступе; • пароль для доступа к файлу; • владелец файла; • создатель файла; • признак "только для чтения"; • признак "скрытый файл"; • признак "системный файл"; • признак "архивный файл"; • признак "двоичный/символьный"; • признак "временный" (удалить после завершения процесса); • признак блокировки; • длина записи; • указатель на ключевое поле в записи; • длина ключа; • время создания, последнего доступа и последнего изменения; • текущий размер файла; • максимальный размер файла. Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые по-зволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответст-вующим устройством. Специальные файлы так же, как и устройства ввода-вывода, делятся на блок-ориентированные и на байт-ориентированные. Для пользователей файл обозначается с помощью идентификаторов - внешних имен (могут быть и внутренние имена файлов). Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. До недавнего времени эти границы были весьма узкими. Так, в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в ОС UNIX System V имя не может содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлу действительно мнемоническое название, по которому даже через достаточно большой промежуток времени можно будет вспомнить, что со-держит этот файл. Поэтому современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например, Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа. При переходе к длинным именам возникает проблема совместимости с ранее созданными при-ложениями, использующими короткие имена. Чтобы приложения могли обращаться к файлам в соот-ветствии с принятыми ранее соглашениями, файловая система должна уметь предоставлять короткие эквивалентные имена (псевдонимы) файлам, имеющим длинные имена. Таким образом, одной из важных задач становится проблема генерации соответствующих коротких имен. Длинные имена поддерживаются не только новыми файловыми системами, но и новыми вер-сиями хорошо известных файловых систем. Например, в ОС Windows 95 используется файловая сис-тема VFAT, представляющая собой существенно измененный вариант FAT. Среди многих других усовершенствований одним из главных достоинств VFAT является поддержка длинных имен. Кроме проблемы генерации коротких эквивалентных имен, при реализации нового варианта FAT важной задачей была задача хранения длинных имен при условии, что принципиально метод хранения и структура данных на диске не должны были измениться. Для решения проблем поиска и размещения файлов в СУФ используются иерархические, много-уровневые каталоги файлов, двухуровневые имена файлов и средства фильтрации. Простой одноуровневый каталог представляет собой оглавление тома (используется в одно-пользовательских ОС - рис.11.1)
Рис.11.1. Простой одноуровневый каталог. Иерархический, многоуровневый каталог (древовидный или сетевой) - это совокупность катало-гов и дескрипторов файлов различной глубины (рис.11.2).
Рис.11.2. Иерархический многоуровневый каталог Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную струк-туру, а в UNIX'е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога. Каждый каталог группирует по определенным принципам файлы пользователей, которые могут быть защищены паролем. Для упрощения работы имеется понятие текущего каталога, определяющего список доступных файлов и подкаталогов и позволяющего обращаться к файлам по собственным именам. ОС обеспечивает определение нескольких текущих каталогов (путей доступа), которые в задан-ной последовательности просматривается при обращении к файлу по имени: PATH C:\; C:\nc; D:\ альтернативные маршруты. В процессе диалога ОС для группировки и удобства работы с файлами используются 2-х и 3-х компонентные идентификаторы: [ <префикс>:] <имя файла> [ .суффикс/расщирение] . Например, в MS-DOS C:\sys\forrmat.com. Такие средства классификации упрощают автоматическую обработку файлов. Обычно програм-мы работают со своими типами файлов, поэтому зачастую суффикс или расширение можно не указы-вать. Средства фильтрации позволяют определять операции над целым классом файлов, посредством указания вместо имени файла специальных символов (* или !). Например, имя *.exe представляет все файлы т екущего подкаталога, имеющие расширение exe. Важной характеристикой СУФ является обеспечение независимости программ от используемых ПУ и файлов. Для этого вводится понятие потока ввода/вывода как средства отсроченного установления связи программы с конкретными файлами и ПУ. Поток ввода/вывода - это объект, который обладает всеми характеристиками устройства вво-да/вывода, но не является реально существующим. Программа работает не с файлами, а потоками ввода/вывода. В операционной системе MS-DOS, например, по умолчанию в качестве входного потока данных рассматривается клавиатура, а выходной поток направляется на дисплей. Для переопределения потоков ввода/вывода используются следующие символы: < - для определения входного потока; >- для определения выходного потока; >> - для модификации (добавления) ранее определенного выходного потока. Выполнение команды DIR>LPT приведет выводу содержимого текущего каталога на принтер. Транспортировка потоков позволяет сцепить несколько программ по стандартному входу-выходу. По сути дела образуется буфер, позволяющий двум процессам связываться по схеме “произ-водитель – потребитель”. Таким образом, выходные данные одной программы являются входными для другой программы, обеспечивая естественное взаимодействие. Команда DIR|SORT выведет на дисплей отсортированный список файлов, полученный командой DIR.