Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Файловая система операционной системы UNIX






 

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

Работу операционной системы UNIX можно представить в виде функционирования множества взаимосвязанных процессов. При загрузке системы сначала запускается ядро (процесс 0), которое в свою очередь запускает командный интерпретатор shell (процесс 1).

Взаимодействие пользователя с системой UNIX происходит в интерактивном режиме посредством командного языка. Оболочка операционной системы shell интерпретирует вводимые команды, запускает соответствующие программы (процессы), формирует и выводит ответные сообщения.

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

Дерево начинается в корневом каталоге, с добавлением связей, формирующих направленный ациклический граф. Имена файлов могут содержать до 14 символов, включающих в себя любые символы ASCII, кроме косой черты (использовавшейся в качестве разделителя компонентов пути) и символа NUL (использовавшегося для дополнения имен короче 14 символов). Символ NUL обозначается байтом 0.

 

Атрибуты файла  
Адрес блока 0
Адрес блока 1  
Адрес блока 2
Адрес блока3
Адрес блока 4  
Адрес блока 5  
Адрес блока 6  
Адрес блока 7  
Адрес блока указателей
Блок диска, содержащий дополнительные дисковые адреса

 

 
 
Рис. 5. Пример i-того узла

 

 


Корневой каталог обозначается символом «/», путь по дереву каталогов состоит из имен каталогов, разделенных символом «/», например: / usrlinclude / sys. В каждый момент времени с любым пользователем связан текущий каталог, то есть местоположение пользователя в иерархической файловой системе.

Каталог UNIX содержит по одной записи для каждого файла этого каталога. Каждая каталоговая запись проста, так как в системе UNIX используется схема i-узлов (рис.5.). Каталоговая запись состоит всего из двух полей: имени файла (14 байт) и номера i-узла для этого файла (рис.6.).

Каждый файл операционной системы UNIX может быть однозначно определен некоторой структурой данных, называемой описателем файла (дескриптором).

Он содержит всю информацию о файле: тип файла, режим доступа, идентификатор владельца, размер, адрес файла, даты последнего доступа и последней модификации, дату создания и пр.

Обращение к файлу происходит по имени. Путь к файлу от корневого каталога называется полным именем файла. Если обращение к файлу начинается с символа «/», то считается, что указано полное имя файла и его поиск начинается с корневого каталога, в любом другом случае поиск файла начинается с текущего каталога. У любого файла может быть несколько имен. Фактически имя файла является ссылкой на файл, специфицированный номером описателя.

 

       
   
 
 
Рис.6. Каталоговая запись файловой системы UNUX V7

 


I-узлы системы UNIX (рис.7.) содержат атрибуты: размер файла, три указателя времени (создания, последнего доступа и последнего изменения), идентификатор владельца, номер группы, информацию о защите и счетчик каталоговых записей, указывающих на данный i -узел. При добавлении новой связи к i -узлу счетчик в i -узле увеличивается на единицу. При удалении связи счетчик в i -узле уменьшается на единицу. Когда значение счетчика достигает нуля, i -узел освобождается, а блоки диска, которые занимал файл, возвращаются в список свободных блоков.

Для учета дисковых блоков файла используется обобщение схемы, позволяющее работать с очень большими файлами. Первые 10 дисковых адресов хранятся в самом i- узле. Для небольших файлов необходимая информация содержится прямо в i -узле, считываемом с диска при открытии файла.

Для файлов большего размера один из адресов в i -узле представляет собой адрес блока диска, называемого одинарным косвенным блоком. Этот блок содержит дополнительные дисковые адреса. Если и этого недостаточно используется другой адрес в i -узле, называемый двойным косвенным блоком и содержащий адрес блока, в котором хранятся адреса однократных косвенных блоков. Если и этого мало, используется тройной косвенный блок.

 

 

 
 

При открытии файла файловая система по имени файла находит его блоки на диске. Вначале файловая система открывает корневой каталог, i -узел которого располагается в фиксированном месте диска. По этому i -узлу система определяет положение корневого каталога, который может находиться в любом месте диска, например, в блоке 1. Затем файловая система считывает корневой каталог и ищет в нем первый компонент пути, чтобы определить номер i -узла файла.

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

Работа пользователя в системе начинается с того, что активизируется сервер терминального доступа getty (программа, организующая диалог работы с пользователем в многопользовательской операционной системе), который запускает программу login, запрашивающую у пользователя имя и пароль.

Далее происходит проверка аутентичности пользователя (подлинности регистрации пользователя в системе) в соответствии с той информацией, которая хранится в файле /etc/passwd. В этом файле хранятся записи, содержащие:

- регистрационное имя пользователя;

- зашифрованный пароль;

- идентификатор пользователя;

- идентификатор группы;

- информация о минимальном сроке действия пароля;

- общая информация о пользователе;

- начальный каталог пользователя;

- регистрационный shell пользователя.

Если пользователь зарегистрирован в системе и ввел правильный пароль, login запускает программу, указанную в /etc/passwd – регистрационный shell пользователя.

Пользователь системы – это объект, обладающий определенными правами, определяющими возможность запуска программ на выполнение, а также владение файлами. Единственный пользователь системы, обладающий неограниченными правами – это суперпользователь или администратор системы.

Система идентифицирует пользователей по идентификатору пользователя (UID – User Identifier). Каждый пользователь является членом одной или нескольких групп – списка пользователей, имеющих сходные задачи. Каждая группа имеет свой уникальный идентификатор группы (GID – Group Identifier) Принадлежность группе определяет совокупность прав, которыми обладают члены данной группы.

Права пользователя UNIX – это права на работу с файлами. Файлы имеют двух владельцев: пользователя (user owner) и группу (group owner). Соответственно, атрибуты защиты файлов определяют права пользователя-владельца файла, права члена группы-владельца (g) и права всех остальных (о). В каждый момент времени с любым пользователем связан текущий каталог, то есть местоположение пользователя в иерархической файловой системе.

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

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

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

Специальный файл – это файл, поставленный в соответствие некоторому внешнему устройству и имеющий специальную структуру. Его нельзя использовать для хранения данных как обычный файл или каталог, но над ним можно производить те же операции, что и над любым другим. При этом ввод/вывод информации в этот файл будет соответствовать вводу с внешнего устройства или выводу на него.

Канал – это программное средство, связывающее процессы операционной системы UNIX буфером ввода/вывода. Например, запуск процессов в виде $процесс_1|процесс_2 означает, что стандартный вывод процесса_1 будет, замкнут на стандартный ввод процесса_2. При этом сначала создается канал, а потом на выполнение одновременно запускаются оба процесса, и общее время их выполнения определяется более медленным процессом.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.