UNIX – это семейство переносимых, многозадачных, многопользовательских ОС.
Идеи, которые заложены в основу ОС UNIX, оказали огромное влияние на развитие ОС в целом. В настоящие дни ОС UNIX признана одной из самых исторически важных операционных систем.
ОС UNIX проектировалась в качестве инструментальной системы для разработки программного обеспечения (ПО). Так как при создании ОС UNIX использовался язык программирования высокого уровня С, то система и приложения, которые в ней выполняются, получились легко переносимыми.
При разработке ОС UNIX преследовались три основные цели:
- Первая цель: стремление сохранить простоту и обойтись минимальным количеством функций.
-
Вторая цель: общность (использование одних и тех же методов и механизмов для многих случаев).
Общность в UNIX-системах просматривается во многих аспектах, а именно:
- обращение к файлам, устройствам ввода/вывода и буферам межпроцессных сообщений выполняется с использованием одних и тех же примитивов;
- одни и те же механизмы именования, присвоения альтернативных имен и защиты от несанкционированного доступа применяются к файлам с данными, директориям, устройствам;
- одни и те же механизмы работают в отношении аппаратно и программно инициируемых прерываний.
-
Третья цель: создание ОС, в которой большие задачи можно решать, посредством комбинирования существующих небольших программ, а не разрабатывая программы заново.
Основное отличие UNIX-систем от других ОС заключается в том, что UNIX-системы изначально являются многопользовательскими многозадачными системами. В ОС UNIX может работать одновременно много пользователей, при этом каждый из пользователей может выполнять множество различных вычислительных процессов, использующих ресурсы именно данного компьютера.
К основным функциям ОС UNIX относятся:
- обработка прерываний;
- создание и уничтожение различных процессов;
- синхронизация нескольких процессов;
- приостановка/активизация процесса;
- организация взаимодействия между разными процессами;
- диспетчеризация процессов;
- переключение процесса из одного состояния в другое;
- манипулирование блоками управления процессами;
- поддержка работы файловой системы;
- поддержка операций по распределению/перераспределению памяти;
- поддержка операций ввода/вывода;
- поддержка механизма вызова/возврата по обращению к процедурам.
Блок-схема ядра ОС UNIX представлена на рис.1.
Рисунок 1. Блок-схема ядра ОС UNIX
Ядро ОС содержит системные программы, выполняющие диспетчерские функции, и управляющие структурами данных, которые используются данными программами. Все работы, которые выполняются вне ядра, оформлены в виде процессов, которые работают режиме «Пользователь».
В структуре ОС можно выделить три основные части:
- самая низкоуровневая часть ОС – это специальные средства для управления конкретными программными и аппаратными ресурсами, которые специфичны для заданной конкретной платформы;
- более высокий уровень – это уровень конкретных служебных программ и языков программирования (ЯП). На данном уровне ОС получает ресурсы через обращение к ядру системы;
- уровень вспомогательных процедур, компиляторов, интерпретаторов. На данной основе строятся различные пользовательские приложения (графические интерфейсы, текстовые редакторы, приложения).
Управление процессами в ОС UNIX осуществляется с помощью следующих двух структур:
- PROC-STRUCTRE (блок управления процессом).
- USER-STRUCTRE (структура использования): содержит информацию о процессах, которая должна быть доступна только на уровне исполнения.
Блок PROC-STRUCTRE имеет следующие составляющие:
- размер и адрес процесса;
- состояние процесса;
- идентификация процесса;
- кому принадлежит процесс;
- поле сигналов;
- канал ожидания;
- таймер и счетчик используемого времени.
Блок USER-STRUCTRE имеет следующие составляющие:
- параметры ввода/вывода (I/O);
- таблица открытых файлов;
- код возврата и номера ошибок;
- окружение в файловой системе (текущий каталог, коренной каталог);
- поле сигналов (информация о том, как необходимо реагировать на тот или иной сигнал).
На рис. 2 представлена таблица связей между структурами.
Рисунок 2. Таблица связей между структурами
Особенности ОС UNIX, которые отличают данное семейство от других операционных систем:
- древовидная файловая система, которая чувствительна к регистру символов в имени файлов, слабые ограничения на длину имени и пути к файлам;
- отсутствие поддержки структурированных файлов ядром системы;
- командная строка располагается в адресном пространстве запускаемого процесса, а не извлекается системным вызовом из процесса интерпретатора команд;
- понятие «переменных окружения»;
- ввод/вывод только через дескрипторы файлов;
- широкое использование текстовых файлов для хранения настроек;
- слабая поддержка асинхронного ввода/вывода;
- интерпретатор команд – это приложение, которое общается с ядром обыкновенными системными вызовами;
- и др.
Среди основных причин популярности ОС UNIX выделяют следующие:
- код ОС написан на ЯП высокого уровня;
- многозадачная и многопользовательская система;
- наличие стандартов;
- простой, но в тоже время мощный модульный интерфейс пользователя;
- использование единой и легко обслуживаемой иерархической файловой системы;
- большое количество приложений, распространяемых свободно (текстовые редакторы и т.д.).
ОС UNIX больше рассчитана на квалифицированного администратора, потому что требует знаний принципов функционирования процессов, которые в ней происходят.
ОС UNIX отличается высокой надежностью функционирования, что обеспечивается за счет жесткого разделения памяти и ее реальной многозадачности.