ОС предоставляет пользователю виртуальную машину, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину.
Например, чтобы считать или записать информацию на дискету, надо:
Запустить двигатель вращения дискеты
Управлять шаговым двигателем перемещения головки
Следить за индикатором присутствия дискеты
Выбрать номер блока на диске
Выбрать дорожку
Выбрать номер сектора на дорожке
и.т.д.
Все эти функции берет на себя операционная система.
Чтобы несколько программ могло работать с одним ресурсом (процессор, память), необходима система управления ресурсами.
Способы распределения ресурса:
Временной - когда программы используют его по очереди, например, так система управляет процессором.
Пространственный - программа получает часть ресурса, например, так система управляет оперативной памятью и жестким диском.
Структура системы:
Главная программа, которая вызывает требуемые сервисные процедуры.
Набор сервисных процедур, реализующих системные вызовы.
Набор утилит, обслуживающих сервисные процедуры.
Простая модель монолитной системы
В этой модели для каждого системного вызова имеется одна сервисная процедура (например, читать из файла). Утилиты выполняют функции, которые нужны нескольким сервисным процедурам (например, для чтения и записи файла необходима утилита работы с диском).
Этапы обработки вызова:
Принимается вызов
Выполняется переход из режима пользователя в режим ядра
ОС проверяет параметры вызова для того, чтобы определить, какой системный вызов должен быть выполнен
После этого ОС обращается к таблице, содержащей ссылки на процедуры, и вызывает соответствующую процедуру.
Обобщением предыдущего подхода является организация ОС как иерархии уровней. Уровни образуются группами функций операционной системы - файловая система, управление процессами и устройствами и т.п. Каждый уровень может взаимодействовать только со своим непосредственным соседом - выше- или нижележащим уровнем. Прикладные программы или модули самой операционной системы передают запросы вверх и вниз по этим уровням.
Пример структуры многоуровневой системы
Преимущества:
Высокая производительность
Недостатки:
Большой код ядра, и как следствие большое содержание ошибок