Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Компьют техн 10.doc
Скачиваний:
5
Добавлен:
15.09.2019
Размер:
100.35 Кб
Скачать

10.7.7. Операционная система unix

Операционная система UNIX представляет собой многозадачную, многопользовательскую операционную систему и является в настоящее время одной из наиболее распространенных в мире. Она была первоначально разработана в 1970-е годы в AT&T Bell Laboratories. Особое внимание к переносимости, интерфейс пользовате­ля, построенный на немногих базовых принципах, и возможность объединения раз­личных UNIX-систем в сети независимо от аппаратной платформы очевидным обра­зом способствовали успеху и распространению UNIX.

С момента своего появления система UNIX непрерывно развивалась и в настоя­щее время существует в нескольких модификациях. Основными ее распространи­телями являются компании AT&T Bell Laboratories и Berkeley Software Distribution. Почти все производители вычислительной техники предлагают UNIX либо как коммерческий продукт третьих фирм, либо как специально адаптирован­ную версию для собственной аппаратной платформы. Некоторые специальные предложения отличаются скорее особенностями лицензирования, а не различием в выполняемых ими функциями. Кроме того, для сохранения совместимости и пере­носимости версии UNIX разных производителей не могут слишком сильно отличаться друг от друга.

В UNIX были введены средства, которые впоследствии были позаимствованы другими операционными системами. На базе UNIX была разработана операционная система OSF/1 (раздел 10.7.8), а многие функции были включены в Windows NT (раздел 10.7.9). UNIX также явилась основной базой для разработки важных комму­никационных интерфейсов, в частности протокола TCP/IP (раздел 9.4.9) и протоко­ла пользовательского терминала X Window (раздел 11.6).

UNIX состоит из небольшого ядра, управляющего системными ресурсами (про­цессор, память и ввод/вывод), а остальная часть процедур операционной системы, и в частности управление файловой системой, работают как пользовательские процессы. Типичная операционная система UNIX содержит 10 000-20 000 строк на языке С и 1000-2000 строк машинно-ориентированных программ на ассемблере, которые разрабатываются отдельно для каждой аппаратной платформы. Ядро представляет собой единую резидентную программу размером от 100 Кбайт до 1 Мбайт в зависи­мости от платформы и выполняемых функций. При переносе системы UNIX на кон­кретную платформу требуется, вообще говоря, переписать заново только машинно-зависимую часть ядра. Это означает, что UNIX может работать на многих аппаратных платформах с идентичным системным интерфейсом.

Ядро UNIX имеет недостаточно продуманную структуру. Это следствие ее быст­рого успеха и распространения, поскольку каждая новая версия должна была быть совместима с предыдущими. Первоначально система UNIX была разработана как многопользовательская, а не для приложений реального времени. Из-за того что под­программы операционной системы работают как пользовательские процессы, но с наивысшим приоритетом, назначенным системой, невозможно прерывать также те системные вызовы, выполнение которых занимает много времени, что увеличивает время реакции системы. Это является существенным недостатком для задач реаль­ного времени, особенно управляемых прерываниями. В UNIX используется доволь­но сложное описание контекста, что увеличивает время переключения процессов. Из-за того что в UNIX все операции с каналом построены на основе переключения процессов, применение этого механизма для связи между процессами в приложениях реального времени может приводить к задержкам.

Стандартно процессы в UNIX протекают с разделением времени. Для того чтобы дать всем процессам возможность исполняться, применяется динамическое распреде­ление приоритетов. Процессу, готовому для исполнения, сначала присваивается его номинальный приоритет. Во время исполнения значение этого приоритета уменьша­ется до тех пор, пока он не становится меньше приоритета следующего из ожидающих процессов, который после этого выбирается для исполнения. В результате процессы с более высоким начальным приоритетом получают большую долю процессорного вре­мени, и при этом все процессы периодически исполняются. Системные обращения синхронизированы с вызывающим процессом — он должен ждать, пока запрошенная операция не выполнится и ему не будет возвращено управление.

Важной особенностью, реализованной в UNIX, является одинаковая трактовка всех устройств. Внешние устройства ввода/вывода рассматриваются как файлы. Это суще­ственно упрощает программы, требующие определенной гибкости, так как можно осу­ществить перенаправление ввода/вывода между файлами или внешними устройствами, такими как локальный или удаленный терминал или принтер, без изменения кода про­граммы. Это также важно и с точки зрения машинной независимости программ.

Общим и вызывающим критику недостатком UNIX является его недружественный пользовательский интерфейс. Действительно, все еще в ходу старые и непонятные ко­манды, а если и есть заменяющие их, то с именами или сокращениями, которые столь же неестественны, как и предыдущие. В некоторых системах пользовательские окон­ные интерфейсы и меню способны в основном "транслировать" выбранные действия в стандартные команды UNIX. Положительной особенностью команд UNIX является то, что благодаря стандартизации ввода/вывода и механизму каналов несколько ко­манд можно объединить в одной строке, причем выход одной команды является вхо­дом следующей. Такая техника позволяет для выполнения сложных операций вместо длинных командных файлов использовать всего несколько строк.

Хотя в начале UNIX была многозадачной операционной системой, не предназна­ченной для работы в реальном времени, из-за широкого распространения в научной и технической среде стала очевидной необходимость ее адаптации и к задачам реаль­ного времени. Поэтому новые версии поддерживают такие функциональные элемен­ты систем реального времени, как семафоры, разделяемую память, обмен сигналами между процессами, приоритетное управление задачами и прямой доступ к внешним устройствам.

POSIX представляет собой машинно-независимый интерфейс операционной сис­темы, базирующийся на UNIX, определенный стандартом IEEE 1003.1-1988.