Подсистема управления процессами.
Запущенная на выполнение программа порождает в системе один или более процессов (или задач).
Подсистема управления процессами контролирует:
1. Создание и удаление процессов.
2. Распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами.
3. Синхронизацию процессов.
4. Межпроцессорное взаимодействие.
В общем случае число активных процессов превышает число процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. ОС управляет доступом процессов к вычислительным ресурсам, создавая ощущение одновременного выполнения нескольких задач.
Специальная задача ядра, называемая распорядителем или планировщиком процессов (scheduler), разрешает конфликты между процессами в конкуренции за системные ресурсы (процессор, память, устройства ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода-вывода, или по прошествии кванта времени. В этом случае планировщик выбирает следующий процесс с наивысшим приоритетом и запускает его на выполнение.
Модуль управления памятью обеспечивает размещение прикладных задач в оперативной памяти. В случае, когда для всех процессов недостаточно памяти, ядро перемещает части процесса или нескольких процессов в специальную область жесткого диска, освобождая ресурсы для выполняющегося процесса. Все современные системы реализуют так называемую виртуальную память: процесс выполняется в собственном логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью.
Модуль межпроцессорного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.
Подсистема ввода/вывода.
Подсистема ввода/вывода выполняет запросы файловой подсистемы и подсистемы управления процессами для доступа к ПУ (дискам, магнитным лентам, терминалам и т. д.). Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств – специальными модулями ядра, непосредственно обслуживающими внешние устройства.
Файловая система ОС UNIX.
Понятие файла в ОС UNIX максимально унифицировано. Файлами считаются обычные файлы, каталоги, каналы; внешние устройства представляются в виде специальных файлов: байт-ориентированных (например терминал, принтер, последовательный порт) и блок-ориентированных (накопители на магнитных дисках) в зависимости от единиц передаваемых данных.
Доступ к файлам любого вида однотипен, то есть доступ к внешним устройствам такой же как к обычным файлам.
Такой подход обеспечивает независимость программы пользователя от особенностей ввода-вывода на конкретное устройство. Помимо этого, файлы в UNIX определяют привилегии пользователей, поскольку права пользователя контролируются с помощью прав доступа к файлам.
Как и во многих ОС-ах, в UNIX файлы организованы в виде древовидной структуры, называемой файловой системой. Корнем этого дерева является корневой каталог, имеющий имя «/». Имена всех остальных файлов содержат путь – список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. Таким образом, полное имя любого файла начинается с «/» и не содержит идентификатора устройства, на котором он фактически хранится. UNIX допускает существование нескольких файловых систем, присоединенных к корневому каталогу.
В UNIX существует 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении операций над файлами.
1. Обычный файл (regular file).
2. Каталог (directory).
3. Специальный файл устройства (special device file).
4. FIFO или именованный канал (named pipe).
5. Связь (link).
6. Сокет.
Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для ОС такие файлы представляют собой просто последовательность байтов. Эти файлы обрабатываются прикладной программой.
Каталог – это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию – метаданные, позволяющие ОС производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Любая программа может прочитать содержание каталога, но только ядро имеет право на запись в каталог.
По существу каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу.
/home/andrei
10245 . - текущий каталог
12432 .. - родительский каталог
8672 file1.txt
12567 first
13678 report
номер имя
метаданные файла
Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для не буферизованного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины – блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
FIFO или именованный канал – это файл, используемый для связи между процессами. FIFO впервые появился в System V UNIX, и большинство современных систем поддерживают этот механизм.
Связь. Как уже отмечалось, каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на его имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена тесно связаны с метаданными и, соответственно, с данными файла, в то время как файл существует независимо от того, как его называют. Такая связь имени файла с его данными называется жесткой связью (hard link). Жесткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файла. Особым типом файла является символическая связь, позволяющая косвенно адресовать файл. Символическая связь адресует файл, который, в свою очередь, ссылается на другой файл. Данные файла, являющиеся символической связью, содержат только имя целевого файла, и ОС работает с такими файлами не так, как с обычными.
Сокеты предназначены для взаимодействия междупроцессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP. В системах, ветви BSDINIX на базе сокетов реализована система межпроцессорного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати.