Особенности операционной системы UNIX
Рефераты >> Информатика >> Особенности операционной системы UNIX

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

больших и сложных программ из конструкционных элементов меньшего размера

программисты часто используют каналы и переназначение ввода-вывода при сборке и соединении отдельных частей. И действительно, такой стиль программирования находит поддержку в системе, благодаря чему новые программы могут работать вместе с существующими программами.

Например, программа grep производит поиск контекста в наборе файлов (яв-

ляющихся параметрами программы) по следующему образцу:

grep main a.c b.c c.c

где "main" - подстрока, поиск которой производится в файлах a.c, b.c и c.c с

выдачей в файл стандартного вывода тех строк, в которых она содержится. Со-

держимое выводного файла может быть следующим:

a.c: main(argc,argv)

c.c: /* here is the main loop in the program */

c.c: main()

Программа wc с необязательным параметром -l подсчитывает число строк в файле

стандартного ввода. Командная строка

grep main a.c b.c c.c | wc -l

вызовет подсчет числа строк в указанных файлах, где будет обнаружена подст-

рока "main"; выводной поток команды grep поступит непосредственно на вход

команды wc. Для предыдущего примера результат будет такой: 3

Использование каналов зачастую делает ненужным создание временных файлов.

4. ФУНКЦИИ ОПЕРАЦИОННОЙ СИСТЕМЫ

На Рисунке 1.1 уровень ядра операционной системы изображен непосредственно под уровнем прикладных программ пользователя. Выполняя различные элементар-ные операции по запросам пользовательских процессов, ядро обеспечивает

функционирование пользовательского интерфейса, описанного выше. Среди функ-

ций ядра можно отметить:

· Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.

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

· Выделение выполняемому процессу оперативной памяти. Ядро операционной системы дает процессам возможность совместно использовать участки адресного пространства на определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательства извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, такая реализация системы UNIX называется системой со свопингом (подкачкой); если же на устройство выгрузки выводятся страницы памяти, такая система называется системой с замещением страниц.

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

· Управление доступом процессов к периферийным устройствам, таким как терми- налы, ленточные устройства, дисководы и сетевое оборудование.

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

что данный файл является обычным файлом или устройством, но скрывает это

различие от пользовательских процессов. Так же оно, форматируя информацию

файла для внутреннего хранения, защищает внутренний формат от пользователь-

ских процессов, возвращая им неотформатированный поток байтов. Наконец, ядро

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

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

на самом пользовательском уровне. Например, ядро выполняет действия, необхо-

димые shell'у как интерпретатору команд: оно позволяет процессору shell читать вводимые с терминала данные, динамически порождать процессы, синхронизиро-вать выполнение процессов, открывать каналы и переадресовывать ввод-вывод. Пользователи могут разрабатывать свои версии командного процессора shell с тем, чтобы привести рабочую среду в соответствие со своими требованиями, не затрагивая других пользователей. Такие программы пользуются теми же услугами ядра, что и стандартный процессор shell.

5. ПРЕДПОЛАГАЕМАЯ АППАРАТНАЯ СРЕДА

Выполнение пользовательских процессов в системе UNIX осуществляется на

двух уровнях: уровне пользователя и уровне ядра. Когда процесс производит

обращение к операционной системе, режим выполнения процесса переключается с

режима задачи (пользовательского) на режим ядра: операционная система пытается обслужить запрос пользователя, возвращая код ошибки в случае неудачного

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

система еще выполняет учетные операции, связанные с пользовательским процес-сом, обрабатывает прерывания, планирует процессы, управляет распределением

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

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

Основные различия между этими двумя режимами:

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

Некоторые машинные команды являются привилегированными и вызывают возникновение ошибок при попытке их использования в режиме задачи. Например, в машинном языке может быть команда, управляющая регистром состояния

процессора; процессам, выполняющимся в режиме задачи, она недоступна.

Процессы

A B C D

Режим ядра

Я

   

Я

Режим задачи

 

З

З

 

Рисунок 1.5. Процессы и режимы их выполнения

Проще говоря, любое взаимодействие с аппаратурой описывается в терминах


Страница: