Особенности операционной системы 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, завершая свою работу и указывая на возникновение ошибки.