Основные черты UNIX, определяющие ее долгожительство.

1. Код ОС написан на языке высокого уровня С, что сделало ее про­стой для понимания, изменений и переноса на другие платформы.

Система на языке С имеет на 20-40% больший размер, а произво­дительность ее на 20% ниже аналогичной системы, написанной на ассемблере. Однако ясность и переносимость сыграли решаю­щую роль в ее популярности.

2. UNIX – многозадачная многопользовательская система с широ­ким спектром услуг. Один мощный сервер может обслужить за­просы большого количества пользователей. Система может вы­полнять различные функции – работать как вычислительный сер­вер, обслуживающий сотни пользователей, как сервер базы дан­ных, как сетевой сервер, поддерживающий важнейшие сервисы сети (telnet, ftp, электронную почту, службу имен DNS и т. д.), или даже как сетевой маршрутизатор.

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

4. Простой, но мощный модульный пользовательский интерфейс. Имеется ряд утилит, каждая из которых решает узкую специали­зированную задачу, из них можно конструировать сложные ком­плексы.

5. Использование единой, легко обслуживаемой иерархической файловой системы. Файловая система – это не только доступ к данным, хранящимся на диске. Через унифицированный интер­фейс файловой системы осуществляется доступ к терминалам, принтерам, магнитным лентам, сети и даже к памяти.

6. Большое количество приложений, в том числе свободно распро­страняемых, начиная от простейших текстовых редакторов и за­канчивая мощными системами управления базами данных.

ОС UNIX многозадачная система, предназначенная для ра­боты на станциях, имеющих множество подключенных терминалов. Для обслуживания терминалов в мультипрограммном режиме тре­буется большой объем оперативной и внешней памяти (8 Мбайт ОЗУ, 1-100 Гбайт ПЗУ) и достаточное быстродействие. В качестве терминалов могут быть различные периферийные устройства: ПК, модемы, факсы, принтеры. Программы могут запускаться с терми­нала и использовать все доступные в данный момент ресурсы рабо­чей станции. Поэтому нет необходимости доводить ПК до большой мощности. Особенно эффективны UNIX-сервера для распределен­ной обработки данных. Для них разработаны СУБД типа Oracle, In­formix, которые информацию, разбросанную по разным рабочим станциям, разными знаками представляют одной единой БД.

При обработке больших массивов информации используется интерфейс клиент-сервер, когда пользователь работает только с той информацией, которая его интересует, а не со всем объемом.

ОС UNIX является альтернативой вычислительной сети. Ско­рость передачи данных на порядок выше чем в ВС.

Подключение ПК в локальную сеть с UNIX-серверами осуще­ствляется по протоколу TCP/IP с помощью пакета PC-NFS. При этом пользователи могут использовать:

а) рабочую станцию как файл-сервер.

б) могут эмулировать на ПК терминал UNIX-сервера (режим TELNET).

в) организовать систему клиент-сервер (ПК формирует SQL-запросы, UNIX-сервер их обрабатывает).

г) непосредственный обмен файлами между ПК по протоколу FTP.

Процесс – одно из основных понятий этой системы. Процесс представляет собой совокупность выполняющейся программы или нескольких программ, которые вызываются при исполнении ко­манды, и данных, обрабатываемых программой: здесь имеются в виду не машинные команды, а системные. Все действия в ОС UNIX определены как процессы. Функционирование ОС можно рассмат­ривать как взаимодействие нескольких связанных процессов. Харак­терным является наличие механизмов межпроцессорной связи для организации взаимодействия параллельных процессов (каналы, сиг­налы, очереди сообщений, семафоры, разделение сегментов памяти). Их тип можно выбирать с учетом специфики решаемых задач. Про­грамма, построенная из одновременно выполняющихся процессов называется параллельной, что значительно сокращает время выпол­нения задачи. Положенные в основу UNIX механизмы поддержи­вают многопроцессорность. При наличии одного процессора про­цессы выполняются в режиме разделения времени.

С каждым процессом связаны открытые файлы:

- стандартного ввода (дескриптор 0) – терминал или файл.

- стандартного вывода (дескриптор 1) – терминал или файл.

- сообщений об ошибках (дескриптор 2) – терминал или файл.

Часть процессов не может быть размещена в оперативной па­мяти из-за ее ограниченного объема и перемещается в область внешней памяти (свопинг). Процесс для выполнения выбирается на основании вычисленного приоритета.

При выполнении программы в среде ОС UNIX взаимодейст­вуют ядро, оболочка Shell и прикладные программы.

Ядро – управляющая программа, взаимодействующая с аппа­ратными средствами. Ее функции:

1. Управление памятью и процессором.

2. Обслуживание внешних устройств.

3. Обслуживание исполнения всех программ.

Все действия, связанные с вводом-выводом и вызовом про­грамм, выполняются в ОС UNIX с помощью системных вызовов. Системные вызовы реализуют интерфейс между программами и ядром (программный интерфейс).

Интерпретатор команд Shell (оболочка) обеспечивает интер­фейс пользователь-ядро при введении пользователем команд с тер­минала (командный интерфейс). Shell интерпретирует такие ко­манды, вводимые из командного файла.

Существуют различные типы интерпретаторов команд Shell: B-Shell фирмы Telephone Laboratories – бурновский интерпретатор; C-Shell – новая редакция B-Shella: V-Shell – визуальный Shell и т. д.

Shell выполняет следующие функции:

- в начале работы выводит на терминал знак-приглашение;

- интерпретирует введенную с терминала или из файла строку (ко­мандная строка содержит имя команды, может включать обозна­чаемые знаком минус флаги (опции), задающие различные вари­анты работы команды, параметры и специальные символы – ме­тасимволы);

- ищет файл команды, вызывает его на выполнение и передает его параметры;

- выдает сообщение об ошибке, если что-нибудь выполняется не­верно;

- после выполнения команды выдаем на терминал знак-приглаше­ние.

Shell является также языком программирования, на котором пи­шут командные файлы (Shell-файлы). Язык содержит конструкции, характерные для языка высокого уровня: условный оператор, опера­торы циклов, команду ветвления по многим направлениям, команду управления прерыванием и другие.

При входе в ОС пользователь получает копию интерпретатора Shell в качестве родительского процесса. Далее после ввода команды пользователем создается порожденный процесс. Это называется по­рождением процесса, а порожденный процесс – процессом-потом­ком или дочерним процессом. То есть после запуска ОС каждый но­вый процесс функционирует только как процесс-потомок уже суще­ствующего процесса.

Встроенные команды интерпретатор выполняет сам(без создания нового процесса), в остальных случаях вызывается файл команды для выполнения и анализа.

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

Программные средства ОС UNIX позволяют динамически поро­ждать процессы и организовывать взаимодействие параллельных процессов.

Для порождения процессов используются системные вызовы.

Атрибутами процесса являются: идентификатор процесса (каж­дый процесс имеет уникальный номер); идентификатор родитель­ского процесса; набор открытых файлов; текущий каталог, перемен­ные округления; идентификаторы пользователя и группы (пользова­тель, принадлежащий некоторой группе).

Порожденный процесс наследует у родительского большинство атрибутов.

Механизм коллективного использования файлов позволяет объе­динять действия пользователей. Возможность работы в составе ло­кальных и распределенных сетей разных UNIX-обеспечивается на­личием стандартных сетевых и телекоммуникационных средств. В UNIX периферийные устройства называются именами специальных файлов и обмен информации с ними осуществляется также как с файлами. Пользователь может переводить выдачу результатов ра­боты программы с одного ПУ на другие. Можно послать информа­цию по E-mail другому пользователю. Есть так называемая прямая связь с пользователем и средства общения с пользователями, рабо­тающими в другой системе.

Архитектура UNIX.

Обычно модель системы UNIX представляют в виде двух­уровневой конструкции:

 
  Основные черты UNIX, определяющие ее долгожительство. - student2.ru

В центре находится ядро системы (kernel). Ядро непосредст­венно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры.

Ядро имеет набор услуг, предоставленных прикладными про­граммами. К услугам ядра относятся операции ввода-вывода (откры­тия, чтения, записи и управления файлами), создания и управления процессами, их синхронизации и межпроцессорного взаимодейст­вия. Все приложения запрашивают услуги ядра посредством сис­темных выводов.

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

Рассмотрим отдельные компоненты ядра системы:

Ядро системы.

Ядро обеспечивает базовую функциональность операционной системы: создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам.

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

main ()

{ int fd;

char buf [80];

/* откроем файл – получим ссылку (файловый дескриптор) fd*/

fd = open (“file1”,”2+”); режим открытия (для чтения и записи)

/* считаем в буфер buf 80 символов */

read (fd, buf, sizeoff(buf));

/* Закроем файл */

close (fd);

}

В приведенном примере программа открывает файл, считы­вает из него данные и закрывает этот файл. При этом операции от­крытия, чтения и закрытия файла выполняются ядром по запросу за­дачи, и функции open(2), read(2) и close(2) являются системными вы­зовами.

Структура ядра представлена на схеме:

 
  Основные черты UNIX, определяющие ее долгожительство. - student2.ru

Ядро состоит из трех основных подсистем:

1. Файловая подсистема.

2. Подсистема управления процессами и памятью.

3. Подсистема ввода-вывода.

Файловая подсистема.

Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисковых накопителях, и к периферийным устройствам. Одни и те же функции open(2), read(2), write(2) могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или тер­минал.

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

Файловая подсистема обеспечивает перенаправление запро­сов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.

Наши рекомендации