Семейство операционных систем UNIX
313
лительных процессов от вмешательства других вычислительных процессов. При-
чем для реализации третьей цели необходимо было создать механизмы полноцен-
ного обмена данными между программными модулями, из которых предполага-
лось составлять конечные программы,
перационная система UNIX обладает простым, но очень мощным командным
зыком и независимой от устройств файловой системой. Важным, хотя и простым
позиций реализации такой возможности, является тот факт, что система UNIX
редоставляет пользователям средства направления выхода одной программы не-
осредственно на вход другой. В результате достигается четвертая цель — большие
рограммные системы можно создавать путем композиции имеющихся небольших
рограмм, а не путем написания новых, что в большинстве случаев упрощает зада-
у. UNIX-системы существуют уже 30 лет, и к настоящему времени имеется чрез-
ычайно большой набор легко переносимых из системы в систему отлично отла-
енных и проверенных временем приложений.
число системных и прикладных программ, поставляемых с UNIX-системами,
ходят редакторы текстов, программируемые интерпретаторы командного языка,
омпиляторы с нескольких популярных языков программирования, включая С,
"++, ассемблер, PERL, FORTRAN и многие другие, компоновщики (редакторы
ежпрограммных связей), отладчики, многочисленные библиотеки системных
пользовательских программ, средства сортировки и ведения баз данных, много-
исленные административные и обслуживающие программы. Для абсолютного
ольшинства всех этих программ имеется документация, в том числе исходные
ексты программ (как правило, хорошо комментированные). Кроме того, описа-
ия и документация по большей части доступны пользователям в интерактивном
ежиме. Используется иерархическая файловая система с полной защитой, рабо-
а со съемными томами, обеспечивается независимость от устройств.
'ентральной частью UNIX-систем является ядро (kernel). Оно состоит из боль-
шого количества модулей и с точки зрения архитектуры считается монолитным,
днако в ядре всегда можно выделить три основные подсистемы: управления про-
весами, управления файлами, управления операциями ввода-вывода между цен-
ральной частью и периферийными устройствами. Подсистема управления про-
весами организует выполнение и диспетчеризацию процессов, их синхронизацию
разнообразное межпроцессное взаимодействие. Важнейшая функция подсисте-
мы управления процессами — это распределение оперативной памяти и (для со-
ременных систем) организация виртуальной памяти. Подсистема управления
аилами тесно связана и с подсистемой управления процессами, и с драйверами.
Дро может быть перекомпилировано с учетом конкретного состава устройств
омпьютера и решаемых задач. Не все драйверы могут быть включены в состав
Дра, часть из них может вызываться из ядра. Более того, очень большое количе-
тво системных функций выполняется системными программными модулями, не
ходящими непосредственно в ядро, но вызываемых из ядра. Основные систем-
Ые функции, которые должно выполнять ядро совместно с остальными систем-
ами модулями, строго стандартизированы. За счет этого во многом достигается
ереносимость кода между разными версиями UNIX и абсолютно различным ап-
а
Ратным обеспечением.