Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Реализация системных вызовов. Использование механизма прерываний для реализации системных вызовов.Содержание книги
Поиск на нашем сайте Системный вызов позволяет приложению обратиться к ОС с просьбой выполнить то или иное действие (процедуру) ОС. ОС для программиста выглядит как библиотека системных вызовов, с помощью которых можно выполнять действия, запрещенные в пользовательском режиме (например, обмен данными с устройствами ввода - вывода).
Требования к реализации системных вызовов: · Обеспечивать переключение в защищенный режим · Обладать высокой скоростью вызова процедур ОС · Обеспечивать единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС · Быть легко расширяемой новыми вызовами · Обеспечивать контроль со стороны ОС за корректным использованием вызовов.
Первое требование выполнимо только если реализовывать системные вызовы в виде программных прерываний.
(Некоторые из этих требований противоречат друг другу. Например, скорость работы требует векторных прерываний, но они привязывают нас к особенностям аппаратной платформы и не позволяют легко вводить новые прерывания.)
ОС может выполнять системные вызовы: - по децентрализованной схеме - по централизованной схеме (используется в большинстве ОС)
При централизованной обработке системных вызовов в ОС существует ДИСПЕТЧЕР СИСТЕМНЫХ ВЫЗОВОВ.
Перед выполнением прерывания приложение передает ОС: - номер системного вызова (который будет индексом в таблице прерываний, реализующих системные вызовы) * через стек * через РОН - агрументы для системного вызова * через РОН * через стек * через массив Потом приложение генерирует прерывание с определенным и единственным номером вектора (INT 2Eh – Windows NT, INT 80h - Линукс).
Диспетчер прерываний – простая программа, которая: · Сохраняет содержимое регистров процессора в системный стек · Проверяет, адекватный ли номер вызова поступил (не вышел ли за границу таблицы системных вызовов) · Передает управление соответствующей процедуре ОС для реализации системного вызова.
А уже процедура ОС извлекает из системного стека аргументы и выполняет заданное действие. Если системный вызов сложный, то она вызывает необходимые модули из подсистемы управления памятью, ввода-вывода и тд.
После завершения работы процедура возвращает управление диспетчеру прерываний, кроме этого передает ему КОД завершения вызова.
Диспетчер восстанавливает регистры процессора, помещает КОД в определенный регистр и выполняет инструкцию возврата из прерывания (восстанавливает непривилегированный режим работы процессора).
Это т.н табличный способ организации системных вызовов, он принят практически во всех ОС, легко расширяем.
ОС может выполнять системные вызовы: - в синхронном режиме - в асинхронном режиме
Синхронный системный вызов (блокирующий) – процесс делает вызов, потом честно останавливается, ждет его результатов, после чего может возобновить работу.
Асинхронный системный вызов – процесс делает вызов и продолжает работу, периодически проверяя, не готовы ли уже нужные ему данные.
Большинство системных вызовов синхронны, но в последнее время асинхронные вызовы используются все чаще. Это дает больше возможностей разработчиками сложных приложений, кроме того, они особенно нужны в ОС на основе микроядерной архитектуры (в таких ОС часть ОС работает в пользовательском режиме, и этой части нужно свободно организовывать свою работу.)
Основы синхронизации процессов и потоков. Понятие гонок. Критическая секция кода и исключение гонок. Блокирующие переменные. Понятие семафора и его использование для целей синхронизации. Синхронизация и проблема тупиков. Синхронизирующие объекты в операционных системах.
|
||
|
Последнее изменение этой страницы: 2017-02-05; просмотров: 360; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.007 с.) |