
- •Раздел I. Основы и классификация ос Тема 1. Классификация по
- •1. Системное программное обеспечение
- •2. Трансляторы
- •3. Языки программирования (редакторы)
- •4. Инструментальные средства (утилиты)
- •5. Прикладное программное обеспечение
- •Тема 2. Основы строения ос
- •2.1. Определение и основные составляющие ос
- •2.2. Общий принцип работы ос
- •2.3. Основные понятия, концепции ос
- •Системные вызовы
- •Прерывания
- •Исключительные ситуации
- •Тема 3. Классификация ос
- •Монолитное ядро
- •Микроядерная архитектура
- •Смешанные системы
2.2. Общий принцип работы ос
Когда ОС запускается, прежде всего, стартует ядро, которое копируется в оперативную память (ОЗУ,RAM). Оно инициализирует все оборудование и загружает остальные модули ОС, которые затем перехватывают управление. Эти составляющие также являются системными программами, которые и выполняют основные функции ОС, перечисленные выше.
Таким образом, основная часть двоичного системного кода находится в оперативной памяти. Все остальные сервисы вызываются по мере необходимости пользователем или другими системными сервисами, например, по расписанию. Пользователь своими действиями может порождать события, воспринимаемые ОС как системный вызов. Системный вызовобращается к ядру, запрашивая у него тот или иной сервис, например, сервис ввода-вывода, то есть доступ к подсистеме ввода-вывода. Так, например, происходит при открытии любого файла.
Общий принцип взаимодействия подсистем:
При работе с периферийными устройствами(к ним относятся и устройства ввода-вывода [input/output], УВВ) ОС в оперативной памяти создает соответствующие буферы, в которые временно помещается обрабатываемый код и данные. Так происходит, например, при обращении к файлам, которые считываются с внешнего запоминающего устройства (ВЗУ) и помещаются в файловый буфер в ОЗУ. Кроме этого, файл помещается в таблицу открытых файлов и ему присевается дескриптор, по которому к нему может обращаться пользовательская программа.
При этом работает часть ядра, называемая подсистемой ввода-вывода. Также происходит и при печати.
2.3. Основные понятия, концепции ос
Системные вызовы
В любой операционной системе поддерживается механизм, который позволяет пользовательским программам обращаться к услугам ядра ОС. В операционных системах наиболее известной советской вычислительной машины БЭСМ-6 соответствующие средства "общения" с ядром назывались экстракодами, в операционных системах IBM они назывались системными макрокомандами и т.д. В ОС Unix такие средства называют системными вызовами.
Системные вызовы (system calls)– это интерфейс между операционной системой и пользовательской программой. Они создают, удаляют и используют различныеобъекты, главные из которых –процессы и файлы. Пользовательская программа запрашивает сервис у операционной системы, осуществляя системный вызов. Имеются библиотеки процедур, которые загружают машинные регистры определенными параметрами и осуществляют прерывание процессора, после чего управление передается обработчику данного вызова, входящему в ядро операционной системы. Цель таких библиотек – сделать системный вызов похожим на обычный вызов подпрограммы.
Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode).Поэтому системные вызовы иногда еще называютпрограммными прерываниями, в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.
В этом режиме работает код ядра операционной системы, причем исполняется он в адресном пространстве и в контексте вызвавшей его задачи. Таким образом, ядро операционной системы имеет полный доступ к памяти пользовательской программы, и при системном вызове достаточно передать адреса одной или нескольких областей памяти с параметрами вызова и адреса одной или нескольких областей памяти для результатов вызова.
В большинстве операционных систем системный вызов осуществляется командой программного прерывания (INT).Программное прерывание – этосинхронное событие, которое может быть повторено при выполнении одного и того же программного кода.