Автор работы: Пользователь скрыл имя, 11 Июля 2013 в 19:30, реферат
В ходе сеанса работы с системой пользователь создает и изменяет собственные данные, например, документы, изображения, тексты программ. В простейшем случае пользователь может на¬брать текст, распечатать его, получив твердую копию документа, и завершить свой сеанс работы с системой. При этом пользователь получает результат своей работы — распечатку, а набранный текст представляет собой промежуточные данные, которые не нужно хранить.
2.1. Организация хранения данных на диске
2.2. Каталоги
2.3. Операции над файлами и каталогами
Простые ОС могут поддерживать файловые системы, имеющие только один каталог — корневой, в котором хранятся файлы. Более сложные ОС поддерживают работу с деревом каталогов практически неограниченной вложенности. Естественным ограничением глубины вложенности дерева каталогов является длина полных имен файлов, находящихся на нижнем уровне вложенности дерева.
Полное имя файла — текстовая строка, в которой через специальные символы-разделители указаны имена всех каталогов, задающие путь от корневого каталога до самого файла. В качестве разделителя в UNIX-системах используется символ прямой косой черты «/». Например, для файла file6 полным именем будет /dir1/dir3/dir5/file6. Здесь первая косая черта обозначает корневой каталог, т.е. полным именем файла file1, находящегося в корневом каталоге, будет /file1.
Путь, задаваемый полным именем, называется абсолютным путем файла или каталога. Такое название обусловлено тем, что путь задается относительно абсолютной точки отсчета — корневого каталога. Чтобы определить понятие относительного пути, нужно ввести понятие текущего каталога. В информационное окружение сеанса работы пользователя входит информация о каталоге, с которым пользователь работает в данный момент времени.
Имена файлов
и каталогов, находящихся в текущем
каталоге,
могут быть указаны напрямую, без задания
полного имени. На-
пример, если текущим каталогом является
dir4, то к файлам
filе4 и file5 можно обращаться, используя
только их собственные имена file4 и f ile5
вместо указания полного имени.
Относительный путь определяется по отношению к текущему каталогу, при этом имя самого каталога обычно не указывается. Тем не менее в UNIX-системах для указания того, что путь считается от текущего каталога, часто используют мнемоническое обозначение «.». Если текущим каталогом является dir3, то относительно него относительный путь к файлу file6 будет задаваться именем ./dir5/file6.
Для задания в пути родительского каталога используется мнемоника «..». Например, если текущим каталогом является каталог dir7, то относительное имя файла file1 будет выглядеть как . ./. ./file1. Первые две точки указывают на каталог, родительский для dir7 — каталог dir4, а вторые две точки — на каталог, родительский для dir4 — каталог dir1.
Системные файлы в ОС семейства UNIX распределены по отдельным каталогам. Это позволяет структурировать различные файлы по их назначению. Большинство UNIX-систем имеет стандартную структуру системных каталогов (рис. 2.7). Так, в UNIX-системах обычно выделяются отдельные каталоги для хранения ядра (/boot), системных библиотек (/lib), системных утилит (/bin), системных настроек (/etc), пользовательских программ (/usr), пользовательских данных (/home). Более подробно структура стандартных каталогов UNIX-систем рассмотрена в подразд. 6.1.
Для решения
нашей прикладной задачи «Контроль
знаний» также потребуется
Пусть каталог, хранящий все данные и программы комплекса «Контроль знаний», будет подкаталогом корневого (рис. 2.8) и имеет имя check.
РИС 2.8
Данные приложения будут распределены по двум каталогам — в каталоге check будут содержаться каталоги для хранения рабочих областей студентов (students) и преподавателя (teacher). Задания, предназначенные для выполнения основных действий в системе, будут помещены в каталог scripts. Полные имена каталогов будут иметь следующий вид:
/check
/check/students
/check/teacher
/check/scripts
Рабочая область каждого студента также будет представлять собой каталог, имя которого будет совпадать с учетным именем студента в системе. В каталоге каждого студента выделяется отдельный подкаталог ready для выполненных работ.
Рабочая область преподавателя будет содержать по одному каталогу для каждой темы, причем темы будут нумероваться, а имена каталогов будут иметь вид theme1, theme2 и т.д. Для собранных у студентов работ в рабочей области преподавателя будет выделен отдельный каталог с именем works.
2.3. Операции над файлами и каталогами
Для доступа к файлам ОС предоставляет набор системных вызовов, реализующих основные функции работы с файлами (табл. 2.1) [11].
Таблица 2.1. Системные вызовы для работы с файлами | |||
Системный вызов |
Описание | ||
Create |
При вызове создается пустой файл, не содержащий данных. Вызов производится перед первой записью в файл | ||
Delete |
Удаляет имя файла. Если не существует других имен файлов, связанных с блоком данных, то удаляется сам блок данных и освобождается дисковое пространство | ||
Open |
Такой вызов должен быть
произведен перед началом работы
с любым файлом. Основная цель вызова
— считывание параметров файла в
оперативную память, выделение части
дискового буфера ввода/вывода для
файла и назначение файлу временного
пользовательского | ||
Close |
Сбрасывает данные, находящиеся в буфере ввода/вывода в область диска, хранящую набор данных файла, освобождает ресурсы буфера, удаляет временный пользовательский идентификатор | ||
Read |
Предназначен для считывания заданного количества байт из файла в заданную область памяти. Чтение начинается с так называемой текущей позиции в файле. После считывания данных текущая позиция перемещается на байт, следующий за считанными данными | ||
Write |
Предназначен для записи данных в файл, начиная с текущей позиции. Если текущая позиция совпадает с концом файла, размер набора данных, связанного с файлом, увеличивается. Если текущая позиция находится в середине файла, то данные, содержащиеся в нем, затираются | ||
Append |
Вызов представляет собой урезанную форму вызова Write. Единственная его функция — добавление данных в конец файла | ||
Seek |
Предназначен для перемещения текущей позиции в файле в заданное место. Обычно позиция задается количеством байт с начала файла | ||
Get Attributes |
Предназначен для получения атрибутов файла, например, даты его создания. Более подробно об атрибутах см. подразд. 4.4 | ||
Set Attributes |
Предназначен для установки атрибутов файла | ||
Rename |
Предназначен для изменения имени файла. Этот вызов присутствует в ОС не всегда, поскольку практически того же эффекта можно достичь при помощи копирования файла под новым именем и последующего удаления старого файла или при помощи создания жесткой ссылки на набор данных и удаления ненужной более ссылки |
Для доступа к каталогам ОС предоставляет набор системных вызовов, реализующих примерно те же функции, что и для работы с файлами (табл. 2.2). Однако существуют значительные отличия, связанные с тем, что содержимое каталогов невозможно прочесть как последовательный текст.
Таблица 2.2. Системные вызовы для работы с каталогами | |
Системный вызов |
Описание |
Create |
Создает пустой каталог, содержащий только элементы «.» и «. .» |
Delete |
Удаляет пустой каталог, не содержащий никаких других файлов и подкаталогов, кроме элементов «.» и «. .» |
OpenDir |
Вызов должен быть произведен перед началом работы с любым каталогом. Основная цель вызова — считывание параметров каталога в оперативную память. В целом вызов аналогичен вызову Open для файла |
CloseDir |
Высвобождает память, выделенную под параметры каталога, считанные вызовом OpenDir |
ReadDir |
Предназначен для считывания элемента каталога. В отличие от вызова Read для файла единицей информации для этого вызова является структура данных, определяющая свойства файла |
Rename |
Аналогичен вызову Rename для файла |
Link |
Создает жесткую ссылку на файл в каталоге |
Unlink |
Удаляет жесткую ссылку на файл в каталоге. Если удаляется последняя ссылка на файл, то исчезает возможность доступа к набору данных этого файла, а занимаемое набором данных дисковое пространство считается свободным |
Для работы с файлами пользователь использует некоторый формальный язык. В зависимости от гибкости языка пользователю либо предоставляется набор синтаксических конструкций языка, соответствующих системным вызовам, указанным выше, либо часть системных вызовов маскируется конструкциями языка.
Одним из типичных способов работы с файлами в UNIX-системах является использование для этой цели командного интерпретатора UNIX и предоставляемого им языка команд. Обзору возможностей командного интерпретатора посвящена следующая глава.
1 Существовали ОС, в которых данные на диске рассматривались как структурированные. Примером могут служить индексно-последовательные файлы в ОС ЕС (OS/360).