• переносимость; • вытесняющая многозадачность на основе процессов, работающих в изолированных адресных пространствах в виртуальной памяти; • поддержка одновременной работы многих пользователей; • поддержка асинхронных процессов; • иерархическая файловая система; • поддержка независимых от устройств операций ввода-вывода (через специальные файлы устройств); • стандартный интерфейс для программ (программные каналы, IPC) и пользователей (командный интерпретатор, не входящий в ядро ОС); • встроенные средства учета использования системы.
Архитектура ОС UNIX
Архитектура ОС UNIX - многоуровневая. На нижнем уровне, непосредственно над оборудованием, работает ядро операционной системы. Функции ядра доступны через интерфейс системных вызовов, образующих второй уровень. На следующем уровне работают командные интерпретаторы, команды и утилиты системного администрирования, коммуникационные драйверы и протоколы, - все то, что обычно относят к системному программному обеспечению. Наконец, внешний уровень образуют прикладные программы пользователя, сетевые и другие коммуникационные службы, СУБД и утилиты. Основные функции ядра
Основные функции ядра UNIX (которое может быть монолитным или модульным) включают:
• планирование и переключение процессов; • управление памятью; • обработку прерываний; • низкоуровневую поддержку устройств (через драйверы); • управление дисками и буферизация данных; • синхронизацию процессов и обеспечение средств межпроцессного взаимодействия (IPC).
Системные вызовы
Системные вызовы обеспечивают:
• сопоставление действий пользователя с запросами драйверов устройств; • создание и прекращение процессов; • реализацию операций ввода-вывода; • доступ к файлам и дискам; • поддержку функций терминала.
Системные вызовы преобразуют процесс, работающий в режиме пользователя, в защищенный процесс, работающий в режиме ядра. Это позволяет процессу вызывать защищенные процедуры ядра для выполнения системных функций.
Системные вызовы обеспечивают программный интерфейс для доступа к процедурам ядра. Они обеспечивают управление системными ресурсами, такими как память, пространство на дисках и периферийные устройства. Системные вызовы оформлены в виде библиотеки времени выполнения. Многие системные вызовы доступны через командный интерпретатор. Пользовательские процессы и процессы ядра
Пользовательские процессы образуют следующие два уровня и:
• защищены от других пользовательских процессов; • не имеют доступа к процедурам ядра, кроме как через системные вызовы; • не могут непосредственно обращаться к пространству памяти ядра.
Пространство (памяти) ядра - это область памяти, в которой процессы ядра (процессы, работающие в контексте ядра) реализуют службы ядра. Любой процесс, выполняющийся в пространстве ядра, считается работающим в режиме ядра. Пространство ядра - привилегированная область; пользователь получает к ней доступ только через интерфейс системных вызовов. Пользовательский процесс не имеет прямого доступа ко всем инструкциям и физическим устройствам, - их имеет процесс ядра. Процесс ядра также может менять карту памяти, что необходимо для переключения процессов (смены контекста).
Пользовательский процесс работает в режиме ядра, когда начинает выполнять код ядра через системный вызов. Обмен данными между пространством ядра и пользовательским пространством
Поскольку пользовательские процессы и ядро не имеют общего адресного пространства памяти, необходим механизм передачи данных между ними. При выполнении системного вызова, аргументы вызова и соответствующий идентификатор процедуры ядра передаются из пользовательского пространства в пространство ядра. Идентификатор процедуры ядра передается либо через аппаратный регистр процессора, либо через стек. Аргументы системного вызова передаются через пользовательскую область вызывающего процесса.
Пользовательская область процесса содержит информацию о процессе, необходимую ядру
• корневой и текущий каталоги, аргументы текущего системного вызова, размеры сегмента текста, данных и стека для процесса; • указатель на запись в таблице процессов, содержащую информацию для планировщика, например, приоритет; • таблицу дескрипторов файлов пользовательского процесса с информацией об открытых файлах; • стек ядра для процесса (пустой, если процесс работает в режиме пользователя).
Пользовательский процесс не может обращаться к пространству ядра, но ядро может обращаться к пространству процесса. Системное программное обеспечение
ОС UNIX обеспечивает ряд стандартных системных программ для решения задач администрирования, переконфигурирования и поддержки файловой системы, в частности:
• для настройки параметров конфигурации системы; • для перекомпоновки ядра (если она необходима) и добавления новых драйверов устройств; • для создания и удаления учетных записей пользователей; • создания и подключения физических файловых систем; • установки параметров контроля доступа к файлам.
Для решения этих задач системное ПО (работающее в пользовательском режиме) часто использует системные вызовы.