Особенности операционной системы UNIX
Рефераты >> Информатика >> Особенности операционной системы UNIX

Многие прикладные подсистемы и программы, составляющие верхний уровень

системы, такие как командный процессор shell, редакторы, SCCS (система обра-2ботки исходных текстов программ) и пакеты программ подготовки документации,

постепенно становятся синонимом понятия "система UNIX". Однако все они поль-

зуются услугами программ нижних уровней и в конечном счете ядра с помощью

набора обращений к операционной системе. В версии V принято 64 типа обраще-

ний к операционной системе, из которых немногим меньше половины используются

часто. Они имеют несложные параметры, что облегчает их использование, пре-

доставляя при этом большие возможности пользователю. Набор обращений к опе-

рационной системе вместе с реализующими их внутренними алгоритмами составля-

ют "тело" ядра, в связи с чем рассмотрение операционной системы UNIX сводится к подробному изучению и анализу обращений к системе и их взаимодействия между собой. Короче говоря, ядро реализует функции, на которых основывается выполне-ние всех прикладных программ в системе UNIX, и им же определяются эти функции. Использование терминов "система UNIX","ядро" или "система", имеется ввиду ядро операционной системы UNIX, что и должно вытекать из контекста.

3. ОБЗОР С ТОЧКИ ЗРЕНИЯ ПОЛЬЗОВАТЕЛЯ

3.1 Файловая система

Файловая система UNIX характеризуется:

· иерархической структурой,

· согласованной обработкой массивов данных,

· возможностью создания и удаления файлов,

· динамическим расширением файлов,

· защитой информации в файлах,

· трактовкой периферийных устройств (таких как терминалы и ленточные ус- тройства) как файлов.

Файловая система организована в виде дерева с одной исходной вершиной,

которая называется корнем (записывается: "/"); каждая вершина в древовидной

структуре файловой системы, кроме листьев, является каталогом файлов, а фай-

Рисунок 1.2. Пример древовидной структуры файловой системы

лы, соответствующие дочерним вершинам, являются либо каталогами, либо обыч-

ными файлами, либо файлами устройств. Имени файла предшествует указание пути

поиска, который описывает место расположения файла в иерархической структуре

файловой системы. Имя пути поиска состоит из компонент, разделенных между

собой наклонной чертой (/); каждая компонента представляет собой набор символов, составляющих имя вершины (файла), которое является уникальным для каталога (предыдущей компоненты), в котором оно содержится. Полное имя пути поиска начинается с указания наклонной черты и идентифицирует файл (вершину), поиск которого ведется от корневой вершины дерева файловой системы с обходом тех ветвей дерева файлов, которые соответствуют именам отдельных компонент. Так, пути "/etc/passwd", "/bin/who" и "/usr/src/cmd/who.c" указывают на файлы, являющиеся вершинами дерева, изображенного на Рисунке 1.2, а пути "/bin/passwd" и "/usr/ src/date.c" содержат неверный маршрут. Имя пути поиска необязательно должно начинаться с корня, в нем следует указывать маршрут относительно текущего для выполняемого процесса каталога, при этом предыдущие символы "наклонная черта" в имени пути опускаются. Так, например, если мы находимся в каталоге "/dev", то путь "tty01" указывает файл, полное имя пути поиска для которого "/dev/tty01".

Программы, выполняемые под управлением системы UNIX, не содержат никакой

информации относительно внутреннего формата, в котором ядро хранит файлы

данных, данные в программах представляются как бесформатный поток байтов.

Программы могут интерпретировать поток байтов по своему желанию, при этом

любая интерпретация никак не будет связана с фактическим способом хранения

данных в операционной системе. Так, синтаксические правила, определяющие за-

дание метода доступа к данным в файле, устанавливаются системой и являются

едиными для всех программ, однако семантика данных определяется конкретной

программой. Например, программа форматирования текста troff ищет в конце

каждой строки текста символы перехода на новую строку, а программа учета

системных ресурсов acctcom работает с записями фиксированной длины. Обе

программы пользуются одними и теми же системными средствами для осуществле-

ния доступа к данным в файле как к потоку байтов, и внутри себя преобразуют

этот поток по соответствующему формату. Если любая из программ обнаружит,

что формат данных неверен, она принимает соответствующие меры.

Каталоги похожи на обычные файлы в одном отношении; система представляет

информацию в каталоге набором байтов, но эта информация включает в себя име-

на файлов в каталоге в объявленном формате для того, чтобы операционная сис-

тема и программы, такие как ls (выводит список имен и атрибутов файлов),

могли их обнаружить.

Права доступа к файлу регулируются установкой специальных битов разреше-

ния доступа, связанных с файлом. Устанавливая биты разрешения доступа, можно

независимо управлять выдачей разрешений на чтение, запись и выполнение для

трех категорий пользователей: владельца файла, группового пользователя и

прочих. Пользователи могут создавать файлы, если разрешен доступ к каталогу.

Вновь созданные файлы становятся листьями в древовидной структуре файловой

системы.

Для пользователя система UNIX трактует устройства так, как если бы они

были файлами. Устройства, для которых назначены специальные файлы устройств,

становятся вершинами в структуре файловой системы. Обращение программ к уст-

ройствам имеет тот же самый синтаксис, что и обращение к обычным файлам; се-

мантика операций чтения и записи по отношению к устройствам в большой степе-

ни совпадает с семантикой операций чтения и записи обычных файлов. Способ

защиты устройств совпадает со способом защиты обычных файлов: путем соответ-

ствующей установки битов разрешения доступа к ним (файлам). Поскольку имена

устройств выглядят так же, как и имена обычных файлов, и поскольку над

устройствами и над обычными файлами выполняются одни и те же операции, большинству программ нет необходимости различать внутри себя типы обрабатываемых файлов.

Например, рассмотрим программу на языке Си (Рисунок 1.3), в которой соз-

дается новая копия существующего файла. Предположим, что исполняемая версия

программы имеет наименование copy. Для запуска программы пользователь вводит

с терминала:

copy oldfile newfile

где oldfile - имя существующего файла, а newfile - имя создаваемого файла.

Система выполняет процедуру main, присваивая аргументу argc значение количест-ва параметров в списке argv, а каждому элементу массива argv значение парамет-ра, сообщенного пользователем. В приведенном примере argc имеет значение 3, элемент argv[0] содержит строку символов "copy" (имя программы условно являет-ся нулевым параметром), argv[1] - строку символов "oldfile", а argv[2] - строку символов "newfile". Затем программа проверяет, правильное ли количество параметров было указано при ее запуске. Если это так, запускается операция open (открыть) для файла oldfile с параметром "read-only" (только для чтения), в случае успешного выполнения которой запускается операция creat (открыть) для файла newfile. Режим доступа к вновь созданному файлу описывается числом 0666 (в восьмиричном коде), что означает разрешение доступа к файлу для чтения и записи для всех пользователей. Все обращения к операционной системе в случае неудачи возвращают код -1; если же неудачно завершаются операции open и creat, программа выдает сообщение и запускает операцию exit (выйти) с возвращением кода состояния, равного 1, завершая свою работу и указывая на возникновение ошибки.


Страница: