Конспект лекций по дисциплине " Операционные системы"
Вид материала | Конспект |
- Конспект лекций по дисциплине «Операционные системы и среды», 618.94kb.
- Методические указания для выполнения Курсовой работы по дисциплине «Операционные системы», 72.86kb.
- Программа по дисциплине «Технологии программирования и операционные системы», 42.87kb.
- Ые системы", "Операционные системы, среды и оболочки" и "Операционные системы и системное, 1294.27kb.
- Конспект лекций по дисциплине «Маркетинг», 487.79kb.
- Конспект лекций по дисциплине «Информационные системы в экономике», 1286.5kb.
- Рабочая программа По дисциплине «Операционные системы» По специальности 230102., 376.29kb.
- В. Ф. Панин Конспект лекций по учебной дисциплине "Теоретические основы защиты окружающей, 1559.17kb.
- Рабочая программа по учебной дисциплине Операционные системы, среды и оболочки наименование, 623.3kb.
- Тема лекции «Многозадачные многопользовательские операционные системы. Операционные, 154.91kb.
Программные прерывания
Программное прерывание реализует один из способов перехода на подпрограмму с помощью специальной инструкции процессора, такой как INT в процессорах Intel Pentium, trap в процессорах Motorola, и т.п.
При выполнении команды программного прерывания процессор отрабатывает ту же последовательность действий, что и при возникновении внешнего или внутреннего прерывания, но только происходит это в предсказуемой точке программы — там, где программист поместил данную команду.
Практически все современные процессоры имеют в системе команд инструкции программных прерываний.
Программные прерывания часто используются для выполнения ограниченного количества вызовов функций ядра операционной системы, то есть системных вызовов.
Диспетчеризация и приоритезация прерываний в ОС
Прерывания выполняют полезную для вычислительной системы функцию — позволяют реагировать на асинхронные по отношению к вычислительному процессу события.
Прерывания создают дополнительные трудности для ОС в организации вычислительного процесса.
Для упорядочения работы обработчиков прерываний в ОС применяется тот же механизм, что и для упорядочения работы пользовательских процессов – механизм приоритетных очередей. Все источники прерываний делятся на несколько классов, причем каждому классу присваивается приоритет. В ОС выделяется программный модуль, который занимается диспетчеризацией обработчиков прерываний. Этот модуль в разных ОС называется по-разному, мы в самом начале определим его, как диспетчером прерываний.
При возникновении прерывания диспетчер прерываний вызывается первым. Он запрещает га некоторое время все прерывания, и выясняет причину прерывания. Затем сравнивается приоритет источника прерывания с текущим приоритетом потока команд, выполняемых процессором. Если приоритет нового запроса выше текущего, то выполнение текущего потока приостанавливается и выполняется обработка прерывания. В противном случае запрос ставится в очередь.
Процедуры обработки прерываний и текущий процесс
Важной особенностью процедур, выполняемых по запросам прерываний, является то, что они выполняют работу, чаще всего никак не связанную с текущим процессом.
Например, драйвер диска может получить управление после того, как контроллер диска записал в соответствующие сектора информацию, полученную от процесса А, но этот момент времени, не совпадет с периодом очередной итерации выполнения процесса А или его потока.
В наиболее типичном случае процесс А будет находиться в состоянии ожидания завершения операции ввода-вывода (при синхронном режиме выполнения этой операции) и драйвер диска прервет какой-либо другой процесс.
В некоторых случаях вообще трудно однозначно определить, для какого процесса выполняет работу тот или иной программный модуль ОС, например планировщик потоков. Поэтому для такого рода процедур вводятся ограничения — они не имеют права использовать ресурсы (память, открытые файлы и т.п.), с которыми работает текущий процесс.
Процедуры обработки прерываний работают с ресурсами, которые были выделены им при инициализации соответствующего драйвера или инициализации самой операционной системы. Эти ресурсы принадлежат ОС, а не конкретному процессу. Так память драйверам выделяется из системной области. Поэтому обычно говорят, что процедуры обработки прерывании работают вне контекста процесса.
Диспетчеризация прерываний является важной функцией ОС, и эта функция реализована практически во всех мультипрограммных ОС. Как правило, в ОС реализуется двухуровневый механизм планирования работ. Верхний уровень планирования выполняется диспетчером прерываний, который распределяет процессорное время между потоком поступающих запросов на прерывания различных типов — внешних, внутренних и программных. Оставшееся процессорное время распределяется другим диспетчером — диспетчером потоков, на основании дисциплин квантования и других, которые мы рассматривали.
Системные вызовы
Системный вызов позволяет приложению обратиться к ОС с просьбой выполнить то или иное действие, оформленное как процедура (или набор процедур) кодового сегмента ОС.
Для прикладного программиста ОС выглядит как некая библиотека, реализующая полезные функции, облегчающие управление прикладной задачей или выполнение действий, запрещенных в пользовательском режиме, например обмен данными с устройством ввода-вывода.
Реализация системных вызовов должна удовлетворять следующим требованиям:
- обеспечивать переключение в привилегированный режим;
- обладать высокой скоростью вызова процедур ОС;
- обеспечивать единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работают ОС;
- допускать легкое расширение набора системных вызовов;
- обеспечивать контроль со стороны ОС за корректным использованием системных вызовов
В большинстве ОС системные вызовы обслуживаются по централизованной схеме, основанной на существовании диспетчера системных вызовов.
При любом системном вызове приложение выполняет программное прерывание с определенным и единственным номером вектора.
Перед выполнением программного прерывания приложение передает ОС номер системного вызова. Способ передачи зависит от реализации. Например, номер можно поместить в определенный регистр процессора или передать через стек. Также некоторым способом передаются аргументы системного вызова, они могут помешаться как, в регистры общего назначения, так и передаваться через стек или массив, оперативной памяти.
… |
Адрес процедуры 21h |
Адрес процедуры 22h |
Адрес процедуры 23h |
… |
|
Адрес диспетчера системных вызовов |
|
|
Диспетчер системных вызовов |
|
Процедура обработки Системного вызова 21h |
|
Процедура обработки Системного вызова 22h |
|
Процедура обработки Системного вызова 23h |
|
После завершения работы системного вызова управление возвращается диспетчеру, при этом он получает также код завершения этого вызова. Диспетчер восстанавливает регистры процессора, помещает в определенный регистр код возврата и выполняет инструкцию возврата из прерывания, которая восстанавливает непривилегированный режим работы процессора.
Описанный табличный способ организации системных вызовов принят практически во всех операционных системах. Он позволяет легко модифицировать состав системных вызовов, просто добавив в таблицу новый адрес и расширив диапазон допустимых номеров вызовов.
ОС может выполнять системные вызовы в синхронном или асинхронном режимах.
Синхронный системный вызов означает, что процесс, сделавший такой вызов, приостанавливается до тех пор, пока системный вызов не выполнит всю требуемую работу. После этого планировщик переводит процесс в состояние готовности.
Асинхронный системный вызов не приводит к переводу процесса в режим ожидания после выполнения некоторых начальных системных действий, например запуска операции вывода-вывода, управление возвращается прикладному процессу.
Большинство системных вызовов в ОС являются синхронными.
Управление памятью. Функции ОС по управлению памятью.
Под памятью понимается оперативная память компьютера. В отличие от памяти жесткого диска, которую называют внешней памятью, оперативная память для сохранения информации требует постоянное электропитание.
Особая роль памяти в том, что процессор может выполнять инструкции программы только в том случае, если они находятся в памяти.
Память распределяется как между модулями прикладных программ, так и между модулями самой операционной системы.
Функциями ОС по управлению памятью в мультипрограммной системе являются:
- отслеживание свободной и занятой памяти;
- выделение памяти процессам и освобождение памяти по завершении процессов;
- вытеснение кодов и данных процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
- настройка адресов программы на конкретную область физической памяти.
Во время работы ОС приходится создавать новые служебные информационные структуры, такие как описатели процессов и потоков, различные таблицы распределения ресурсов, буферы для обмена данными и т.п. Все эти системные объекты требуют памяти.
В некоторых ОС во время установки резервируется некоторый фиксированный объем памяти для системных нужд. В других же ОС используется более гибкий подход, при котором память для системных целей выделяется динамически.
Защита памяти — еще одна важная задача ОС. Она состоит в том, чтобы не позволить выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу.