Автор: Пользователь скрыл имя, 11 Января 2012 в 21:28, лекция
Мы не станем рассматривать самый низший уровень этой схемы – аппаратное обеспечение, а начнем на ступеньку выше – с посредника, находящегося между аппаратным обеспечением и медицинской программой, называемого операционной системой. Большинство из вас знакомо с двумя из операционных систем – Windows и MS DOS. Как вы увидите далее, это не единственные и не самые лучшие ОС, хотя и наиболее распространенные.
Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файла, а также выполняет запись/чтение данных файла. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы (в том числе и доступ к периферийным устройствам), права доступа к файлам определяют привилегии пользователя в системе.
Файловая подсистема обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.
Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:
Очевидно, что в общем случае число активных процессов превышает число процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. Операционная система управляет доступом процессов к вычислительным ресурсам, создавая ощущение одновременного выполнения нескольких задач.
Специальная задача ядра, называемая планировщиком процессов (scheduler), разрешает конфликты между процессами в конкуренции за системные ресурсы (процессор, память, устройства ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода/вывода, или по прошествии кванта времени. В этом случае планировщик выбирает следующий процесс с наивысшим приоритетом и запускает его на выполнение.
Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. В случае, если для всех процессов недостаточно памяти, ядро перемещает части процесса или нескольких процессов во вторичную память (как правило, в специальную область жесткого диска), освобождая ресурсы для выполняющегося процесса. Все современные системы реализуют так называемую виртуальную память: процесс выполняется в собственном логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью.
Модуль межпроцессного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.
Подсистема ввода/вывода выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (дискам, магнитным лентам, терминалам и т. д.). Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств — специальными модулями ядра, непосредственно обслуживающими внешние устройства.
Файлы в UNIX играют ключевую роль, что не всегда справедливо для других операционных систем. Дело в том, что возможности пользователей в системе в большинстве случаев определяются правами доступа к тем или иным файлам. Файлы обеспечивают доступ к периферийным устройствам компьютера, включая диски, принтеры, терминалы, сетевые адаптеры и даже память. Для приложений UNIX доступ в дисковому файлу "неотличим" от доступа, скажем, к принтеру. Наконец, все программы, которые выполняются в системе, являются исполняемыми файлами.
Как и во многих современных операционных системах, в UNIX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой. Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя "/". Имена всех остальных файлов содержат путь — список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. В UNIX все доступное пользователям файловое пространство объединено в единое дерево каталогов. Таким образом, полное имя любого файла начинается с "/" и не содержит идентификатора устройства (дискового накопителя, CD-ROM или удаленного компьютера в сети), на котором он фактически хранится.
/ – корневой
каталог, все остальные файлы и каталоги
располагаются в рамках структуры, порожденной
корневым каталогом, назависимо от физического
местоположения.
/bin – программы общего пользования /dev – специальные файлы устройств /etc – системные конфигурационные файлы, наиболее важные из них – скрипты инициализации системы /lib – библиотечные модули компилятора С и других языков /mnt – обычное место монтирования внешних файловых систем /home – домашние каталоги пользователей /usr – каталоги сервисных подсистем (печати, почты, …) /var – временные файлы, протоколы, … |
Однако это не означает, что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут располагаться на различных устройствах и даже иметь различную внутреннюю структуру (например, FFS, MSDOS, NTFS).
Заметим, что имя файла является атрибутом файловой системы, а не набора некоторых данных на диске, который не имеет имени как такового. Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах — inode), содержащие все характеристики файла и позволяющие операционной системе выполнять операции, заказанные прикладной задачей: открыть файл, прочитать или записать данные, создать или удалить файл. В частности, метаданные содержат указатели на дисковые блоки хранения данных файла. Имя файла в файловой системе является указателем на его метаданные, в то время как метаданные не содержат указателя на имя файла.
Жесткая связь |
Символическая связь |
Такая организация позволяет файлу иметь более одного имени, что также называется жесткой связью (hard link). Все жесткие связи равноправны и при удалении жесткой связи удаляется имя, а не файл, и лишь когда количество имен у файла станет равным нулю, только тогда удаляются и сами данные.
Помимо жесткой, существует еще символическая связь (symbolic link), которая в отличие от жесткой связи адресует файл, который, в свою очередь, ссылается на конечный файл. По сути, в данных файла символической ссылки записано имя целевого файла. Необходимость существования символической связи объясняется тем, что жесткие связи допустимы лишь в пределах одного устройства. Символические связи допустимы в любых случаях.
Необходимо отметить, что права доступа к файлу хранятся в inode, поэтому не имеет значения, через какое имя пользователь пытается обратиться к файлу, он получит одинаковый уровень доступа.
В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:
Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл.
Каталог. С помощью каталогов формируется логическое дерево файловой системы. Каталог — это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию — метаданные, позволяющие операционной системе производить операции над этими файлами. По существу каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (номер inode), а второе определяет имя файла.
Специальный файл устройства обеспечивает доступ к физическому устройству. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
FIFO или именованный канал — это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм.
Связь. О связях мы говорили чуть выше. В данном случае имеется в виду символическая связь.
Сокет предназначен для организации связи между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP.
Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу2 (group owner). Интересно, что владелец-пользователь может не являться членом группы-владельца, что дает дополнительную гибкость в организации доступа.
Каждый файл в UNIX имеет 9 атрибутов доступа: по три (read, write, execute - читать, писать, выполнять) для владельца–пользователя, для владельца–группы и для всех остальных. Атрибуты доступа могут быть изменены владельцем файла, администратором системы либо пользователем, имеющим право на запись в файл.
Значение прав доступа различно для разных типов файлов. Для обычных файлов операции, которые можно производить, следуют из самих названий прав доступа. Например, чтобы просмотреть содержимое файла, пользователь должен иметь право на чтение (r). Редактирование файла, т. е. его изменение, предусматривает наличие права на запись (w). Наконец, для того чтобы запустить некоторую программу на выполнение, вы должны иметь соответствующее право (х). Исполняемый файл может быть как скомпилированной программой, так и скриптом командного интерпретатора. В последнем случае вам также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла. Все сказанное, за исключением, пожалуй, права на выполнение, имеющего смысл лишь для обычных файлов и каталогов, справедливо и для других типов файлов: специальных файлов устройств, именованных каналов, и сокетов. Например, чтобы иметь возможность распечатать документ, вы должны иметь право на запись в специальный файл устройства, связанный с принтером. Для каталогов эти права имеют другой смысл, а для символических связей они вообще не используются, поскольку контролируются целевым файлом.
Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -/), системе придется "заглянуть" в метаданные файлов, что требует права на выполнение для каталога. Право на выполнение также потребуется для каталога, в который вы захотите перейти (т.е. сделать его текущим) с помощью команды cd. Это же право нужно иметь для доступа ко всем каталогам на пути к указанному.
Права r и х действуют независимо, право х для каталога не требует наличия права г, и наоборот. Комбинацией этих двух прав можно добиться интересных эффектов, например, создания "темных" каталогов, файлы которых доступны только в случае, если пользователь заранее знает их имена, поскольку получение списка файлов таких каталогов запрещено. Данный прием, кстати, используется при создании общедоступных архивов в сети (FTP-серверов), когда некоторые разделы архива могут использоваться только "посвященными", знающими о наличии того или иного файла в каталоге.