Свидерко Михаил Русланович

студент 2 курса института инфокоммуникаций и программной инженерии
Одесской национальной академии связи им. А.С. Попова

 

ОСОБЕННОСТИ ФАЙЛОВОЙ СТРУКТУРЫ СИСТЕМЫ UNIX

UNIX-подобные операционные системы (ОС) зарекомендовали себя как быстродействующие, безопасные, простые и эффективные, позволяющие работать с процессами, задавать им приоритеты, следить за выполнением, работать с большими объемами файлов и данных.

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

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

Вся файловая система UNIX представляет собой иерархическую (древовидную) структуру, в вершине находится каталог, который называется корневым и обозначается «/» [1]. Именно в корневом каталоге находятся каталоги с предопределенными именами и таким же наполнением:

– каталог “bin” хранит в себе исполняемые файлы, реализующие команды общего назначения, например, команда «cat», отвечающая за вывод содержимого файла / каталога / чего-угодно;

– каталог “etc” хранит в себе файлы пользователей;

– каталог “tmp” хранит в себе временные файлы, необходимые для работы системы в текущий период (после окончания работы они, возможно, будут удалены);

– каталог “mnt” предназначен для установки связи между другими устройствами, например, для чтения и записи с флэш-накопителя;

– каталог “usr” содержит информацию для работы пользователей.

Все открытые файлы фигурируют в ядре ОС в виде файловых дескрипторов, которые представляют собой некоторые целые числа – номера строк в таблице ссылок на открытые файлы процесса. Например, при первом запуске процесса ему предоставляется доступ ко всем трем потокам: stdinstdoutи stderr, которые интерпретируются как файловые дескрипторы 0, 1 и 2 соответственно. Пользователь может запускать один и тот же файл с разных терминалов. Если в ранних версиях UNIX число одновременных процессов достигало 19, то сейчас это число ограничивается лишь объемом памяти в системе.

Система UNIX использует простую байт-ориентированную модель при работе с файлами. Для того чтобы произвести операции ввода-вывода с файлом, пользователь предварительно должен его открыть и только после этого вызывать функции read или write по отношению к дескриптору [1].

Поиск файлов по обширному дереву каталогов осуществляется с помощью утилиты find, в которой указывают путь к искомому файлу, имя, опции и критерии поиска. Например, с помощью find можно отобрать старые, большие или неиспользуемые файлы. Опция -mtime <n> в команде find позволит отобрать файлы, модифицированные n дней назад, а -ctime <n> проверяет время последнего изменения файлового дескриптора [2]. Поскольку при выполнении утилита find направляет свой вывод в стандартный поток вывода, поэтому полученный список имен файлов можно передавать другим командам.  

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

chmod 777 <имя файла>

Каждый файл может иметь одну или несколько ссылок (link) на него, относящихся как к одному, так и нескольким каталогам. Ссылки на файлы являются "жесткими" связями. При обращении к файлу надо указывать полный путь к нему. Удаление файла по одной из ссылок приводит к удалению только элемента каталога, сам же файл сохраняется и может быть доступен по другим ссылкам [3]. Физический файл удаляется только при удалении последней ссылки на него.

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

Список использованной литературы:

  1. Вахалия Ю. UNIX изнутри. / Ю. Вахалия – СПб.: Питер, 2003. – 844 с.
  2. UNIX: инструментальные средства / Пик Д., О’Райли Т., Лукидик М. – К.: BHV, 1999. – 994 с.
  3. Стивенс Р. UNIX. Профессиональное программирование / Р. Стивенс, С. Раго. – СПб.: Символ-Плюс, 2007. – 1040 с.

 

Научный руководитель: доцент Трофименко Е. Г.