- •Тема 1: Основные компоненты ос
- •1.1 Роль и задачи операционных систем
- •1.2 История развития операционных систем
- •1.3. Классификация современных операционных систем
- •1.4 Основные функции типовых ос
- •1.4.1. Управление процессами и потоками
- •1.4.2. Управление памятью
- •1.4.3. Управление вводом-выводом
- •1.4.4. Управление файлами и файловые системы
- •1.4.5. Сетевая поддержка
- •1.4.6. Безопасность данных
- •1.4.7. Интерфейс пользователя
- •1.4.8 Поддержка 64-битовых процессоров
- •1.5 Аппаратная инициализация компьютера
- •1.6.1 Два этапа загрузки
- •1.6.2 Загрузка и инициализация ядра
- •1.6.3 Загрузка компонентов системы
- •1.7 Загрузка Windows хр
- •1.8 Базовые понятия архитектуры операционных систем
- •1.8.1 Ядро системы и вспомогательные модули ос.
- •1.8.2 Привилегированный режим и режим пользователя
- •1.9 Реализация архитектуры операционных систем
- •1.9.1. Монолитные системы
- •1.9.2 Системы с микроядром
- •1.10 Операционная система и ее окружение
- •1.10.1 Взаимодействие ос и аппаратного обеспечения
- •1.10.2 Взаимодействие ос и выполняемой программы
- •Тема 2: Управление процессами и потоками
- •2.1. Базовые понятия процессов и потоков
- •2.1.1. Процессы и потоки в современных ос
- •2.1.2. Модели процессов и потоков
- •2.1.3. Составные элементы процессов и потоков
- •2.2. Многопотоковость и ее реализация
- •2.2.1. Понятие параллелизма
- •2.2.2. Виды параллелизма
- •2.2.3. Преимущества и недостатки многопотоковости
- •2.2.4 Состояния процессов и потоков
- •Тема 3 Прерывания. Методы и реализация
- •3.1 Прерывания. Назначение и типы.
- •3.2 Механизм прерываний
- •3.3 Обработка прерываний
1.10.2 Взаимодействие ос и выполняемой программы
В работе в режиме пользователя часто необходимое выполнение действий, реализованных в ядре ОС (например, во время записи на диск из прикладной программы). Для этого надо обеспечить взаимодействие программы пользователя и ОС. Рассмотрим особенности такого взаимодействия.
Системные вызовы и интерфейс между прикладной программой и ОС
Системный вызов - это средство доступа к определенной функции ядра операционной системы из прикладных программ.
Набор системных вызовов определяет действие, которые ядро может выполнить по запросу процессов пользователя. Системные вызовы организуют интерфейс между прикладной программой и ядром ОС.
Рассмотрим последовательность выполнения системного вызова.
Предположим, что для процесса, который выполняется в режиме пользователя, нужна функция, реализованная в ядре системы.
Для того чтобы обратиться к этой функции, процесс должен передать управление ядру ОС, для чего необходимо задать параметры вызова и выполнить программное прерывание (инструкцию системного вызова). Происходит переход в привилегированный режим.
После получения управления ядро считывает параметры вызова и определяет, что нужно сделать.
После этого ядро выполняет нужны действия, сохраняет в памяти значения, которые следует возвратить, и передает управление программе, которая его вызвала. Происходит переход назад в режим пользователя.
Программа считывает из памяти сохраненные значения и продолжает свою работу.
Как видим, каждый системный вызов служит причиной перехода в привилегированный режим и назад (в микроядровой архитектуре, таких переходов может быть и больше).
Рассмотрим способы передачи параметров в системном вызове. К ним принадлежат:
передача параметров в регистры процессора;
занесение параметров в определенный участок памяти и передача указателя на нее в регистре процессора.
Системные вызовы предназначены для непосредственного доступа к службам ядра ОС. На практике они не исчерпывают (а иногда и не определяют) те функции, которые можно использовать в прикладных программах для доступа к службам ОС или средств системных библиотек. Для обозначения этого набора функций используют термин интерфейс программирования приложений (API).
Взаимосвязь между функциями АРI и системными вызовами неодинаковы в разных ОС.
Во-первых, каждому системному вызову может быть поставленная в соответствие библиотечная функция, единственной задачей которой являются выполнения этого вызова. Такую функцию называют упаковщиком системного вызова. Для программиста в этом случае набор функций АРI выглядит как совокупность таких упаковщиков и дополнительных функций, реализованных библиотеками полностью или частично в режиме пользователя. Это решение принято за основу в UNIX и в таком случае принято говорить об использовании системных вызовов в прикладных программах (на самом деле программы вызывают упаковщики системных вызовов).
Во-вторых, можно предоставить для использования в прикладных программах универсальный интерфейс программирования применений (АРI режима пользователя) и полностью спрятать за ним набор системных вызовов. Для программиста каждая функция такого АРI является библиотечной функцией режима пользователя, упаковщика в этом случае нет, сведения о системных вызовах есть деталями реализации ОС. Это присуще WINDOWS -системам, где подобный универсальный набор функций называют Win32 АРI.
Выводы
Архитектуру ОС определяет набор ее компонентов, а также порядок их взаимодействия друг с другом и с внешней средой.
Важнейшим для изучения архитектуры ОС есть понятия ядра системы. Основной характеристикой ядра является то, что оно выполняется в привилегированном режиме.
Основными типами архитектуры ОС есть монолитная архитектура и архитектура на базе микроядра. Монолитная архитектура требует, чтобы главные функции системы были сконцентрированы в ядре, важнейшим ее преимуществом является производительность. В системах на базе микроядра в привилегированном режиме выполняются только базовые функции, основными преимуществами таких систем является надежность и гибкость.
Операционная система непосредственно взаимодействует с аппаратным обеспечением компьютера. Современные компьютерные архитектуры предлагают много средств поддержки работы операционных систем. Для связи с аппаратным обеспечением в ОС выделяется уровень абстрагирования от оборудования.
Операционная система взаимодействует с прикладными программами. Она предоставляет набор системных вызовов для доступа к функциям, реализованным в ядре. Для прикладных программ системные вызовы вместе со средствами системных библиотек доступные через интерфейс программирования приложений (АРI).
Контрольные вопросы
Расскажите о важнейших функциях ОС.
Что является характерным признаком ядра ОС, особенности этого режима.
Режим пользователя. Что принадлежит этому системному программному
обеспечению.
Перечислите различные архитектуры ОС.
Расскажите о монолитных системах.
Расскажите о многоуровневых системах.
Расскажите о системах с микроядром.
Расскажите о концепции виртуальных машин.
Расскажите о средствах аппаратной поддержки ОС.
Расскажите о взаимодействии ОС и выполняемой программы.
Лекция 4