Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответник на госы.docx
Скачиваний:
120
Добавлен:
08.02.2015
Размер:
1.89 Mб
Скачать

4. Операционные системы.

4.1. Функции ядра операционной системы.

Уровневое представление ОС UNIX

Ядро операционной системы UNIX не является изолированным. На рис. 1.5 видно место ядра в операционной системе UNIX, представленной в виде уровней. Обычно выделяют четыре главных уровня в системе:

Уровень пользователя (User Applications) - набор программных приложений, используемый клиентом для обеспечения взаимодействия с системой и ее управлением.

Сервисы ОС (System Call Interface) - виды услуг, которые ОС предоставляет пользователю через интерфейсы (например, типа SHELL или window, виды компиляторов и т.п.).

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

Управление устройствами (Hardware Controllers) - подсистема управления возможными физическими устройствами на уровне устройств.

Согласно такой архитектуре каждый уровень может взаимодействовать только с соседним уровнем. Каждый вышележащий уровень является зависимым от нижележащих уровней. Так как уровни пользователя и сервисы ОС UNIX существенно зависят от реализации, то их рассмотрение не входит в круг задач этого пособия. Мы будем далее рассматривать ядро операционной системы, которое практически одинаково для всех видов ОС, а не только для UNIX.

Функции ядра операционной системы

На рис. 1.5 уровень ядра операционной системы изображен непосредственно под уровнем прикладных программ пользователя. Выполняя различные элементарные операции по запросам пользовательских процессов, ядро обеспечивает функционирование пользовательского интерфейса, описанного выше. Среди функций ядра можно отметить:

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

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

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

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

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

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

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