Обработка прерываний и ошибок
Если при работе с внешним устройством вычислительная система не пользуется методом опроса его состояния, а использует механизм прерываний, то при возникновении прерывания, как мы уже говорили раньше, процессор, частично сохранив свое состояние, передает управление специальной программе обработки прерывания. Мы уже рассматривали действия операционной системы над процессами, происходящими при возникновении прерывания в разделе 2.3.5. – “Переключение контекста”, где после возникновения прерывания осуществлялись следующие действия: сохранение контекста, обработка прерывания, планирование использование процессора, восстановление контекста, обратив пристальное внимание на действия, связанные с сохранением и восстановлением контекста и планированием использования процессора. Давайте теперь подробнее остановимся на том, что скрывается за словами “обработка прерывания”.
Одна и та же процедура обработки прерывания может использоваться для нескольких устройств ввода-вывода (например, если эти устройства используют одну линию прерываний, идущую от них к контроллеру прерываний), поэтому первое действие собственно программы обработки состоит в определении того, какое именно устройство выдало прерывание. Зная устройство, мы можем выявить процесс, который инициировал выполнение соответствующей операции. Поскольку прерывание возникает как при удачном, так и при неудачном ее выполнении, следующее, что мы должны сделать – это определить успешность завершения операции, проверив значение бита ошибки в регистре состояния устройства. В некоторых случаях операционная система может предпринять определенные действия, направленные на компенсацию возникшей ошибки. Например, в случае возникновения ошибки чтения с гибкого диска, можно попробовать несколько раз повторить выполнение команды. Если компенсация ошибки невозможна, то операционная система впоследствии известит об этом процесс, запросивший выполнение операции, (например, специальным кодом возврата из системного вызова). Если этот процесс был заблокирован до выполнения завершившейся операции, то операционная система переводит его в состояние готовность. При наличии других неудовлетворенных запросов к освободившемуся устройству операционная система может инициировать выполнение следующего запроса, одновременно известив устройство, что прерывание обработано. На этом собственно обработка прерывания заканчивается, и система может приступать к планированию использования процессора.
Действия по обработке прерывания и компенсации возникающих ошибок могут быть частично переложены на плечи соответствующего драйвера. Для этого в состав интерфейса между драйвером и базовой подсистемой ввода-вывода добавляют еще одну функцию – функцию обработки прерывания intr.
Планирование запросов.
При использовании не блокирующегося системного вызова может оказаться, что требуемое устройство уже занято выполнением некоторых операций. В этом случае не блокирующийся вызов может немедленно вернуться, не выполнив запрошенных команд. При организации запроса на совершение операций ввода-вывода с помощью блокирующегося или асинхронного вызова занятость устройства приводит к необходимости постановки запроса в очередь к данному устройству. В результате с каждым устройством оказывается связан список неудовлетворенных запросов процессов, находящихся в состоянии ожидания, и запросов, выполняющихся в асинхронном режиме. Состояние ожидание расщепляется на набор очередей процессов, дожидающихся различных устройств ввода-вывода (или ожидающих изменения состояний различных объектов – семафоров, очередей сообщений, условных переменных в мониторах и т.д. – см. главу 6).
После завершения выполнения текущего запроса операционная система (по ходу обработки возникшего прерывания) должна решить, какой из запросов в списке должен быть удовлетворен следующим, и инициировать его исполнение. Точно так же, как для выбора очередного процесса на исполнение из списка готовых нам приходилось осуществлять краткосрочное планирование процессов, здесь нам необходимо осуществлять планирование использования устройств, пользуясь каким-либо алгоритмом этого планирования. Критерии и цели такого планирования мало отличаются от критериев и целей планирования процессов.
Задача планирования использования устройства обычно возлагается на базовую подсистему ввода-вывода, однако для некоторых устройств лучшие алгоритмы планирования могут быть тесно связаны с деталями их внутреннего функционирования. В таких случаях операция планирования переносится внутрь драйвера соответствующего устройства, так как эти детали скрыты от базовой подсистемы. Для этого в интерфейс драйвера добавляется еще одна специальная функция, которая осуществляет выбор очередного запроса, - функция strategy.
Рекомендуемая литература
- Bach M.J.. The design of the UNIX Operating System.- Prentice-Hall, 1986
- Department of Defense. Trusted Computer System Evaluation Criteria. DoD 5200.28?STD. 1993.
- Department of Trade and Industry. Information Technology Security Evaluation Criteria (ITSEC). Harmonized Criteria of France - Germany - the Netherlands - the United Kingdom. London. 1991.
- "i486™ Microprocessor", Intel Corporation, 1989.
- Linnaeus, Karl, "Systema naturae", 13 ed., t. 1-3, Lugduni, 1789-96;
- Ritchie D.M. "The Evolution of the Unix Time-sharing System", AT&T Bell Laboratories Technical Journal 63 No. 6 Part 2, October 1984, pp. 1577-93.
- Security Architecture for Open Systems Interconnection for CCITT Applications. Recommendations X.800. CCITT. Geneva. 1991.
- Silberschatz A., P.B.Galvin, Operating System Concepts. - John Willey & Sons, 1997.
- Solomon D.A., Russinovich M.E.. Inside Microsoft Windows 2000. Microsoft Press, 2000.
- Stevens R. W, "Unix Network Programming", Prentice Hall, Inc., 1990, First edition.
- Stevens R. W, "Unix Network Programming", Prentice Hall, Inc., volume 1-2, 1998, Second edition.
- Tanenbaum A.S.. Modern Operating Systems. - Prentice Hall, 1992
- Ахо В., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. "Вильямс". 2001.
- Беляков М.И., Рабовер Ю.И., Фридман А.Л. "Мобильная операционная система", М., Радио и связь, 1991.
- Блэк. У. Интернет: протоколы безопасности. Учебный курс. "Питер", 2001.
- Брамм П., Брамм Д. "Микропроцессор 80386 и его применение", М., Мир, 1990.
- Гостехкомиссия России. Руководящий документ. Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации. М., 1992.
- Гостехкомиссия России. Руководящий документ. Временное положение по организации разработки, изготовления и эксплуатации программных и технических средств защиты информации от НСД в автоматизированных системах и средствах вычислительной техники. М., 1992.
- Гостехкомиссия России. Руководящий документ. Защита от несанкционированного доступа к информации. Термины и определения. М., 1992.
- Гостехкомиссия России. Руководящий документ. Концепция защиты СВТ и АС от НСД к информации. М., 1992.
- Гостехкомиссия России. Руководящий документ. Средства вычислительной техники. Защита от несанкционированного доступа к информации. Показатели защищенности от НСД к информации. М., 1992.
- Дейтел Г. Введение в операционные системы. М.: Мир. 1987.
- Дунаев С. Unix. System V. Release 4.2. М.: Диалог МИФИ. 1996.
- Кастер Хелен. Основы Windows NT и NTFS. М.: Русская редакция. 1996.
- Казаринов Ю.М., Номоконов В.М., Подклетнов Г.С., Филиппов Ф.М. "Микропроцессорный комплекс К1810", М.,Высшая школа, 1990.
- Керниган Б. В, Пайк Р. UNIX - универсальная среда программирования. М.:Финансы и статистика. 1992.
- Коффрон Дж. "Технические средства микропроцессорных систем", М., Мир, 1983.
- Кузнецов С.Д.. Операционная система UNIX. -http://www.citforum.ru/operating_systems/unix/contents.shtml
- Олифер В.Г., Олифер Н.А.. Новые технологии и оборудование IP-сетей.-<БХВ-Санкт-Питербург>.2000.
- Олифер В.Г., Олифер Н.А.. Сетевые операционные системы. - Издательский дом <Питер>, 2001.
- Снейдер Й. "Эффективное программирование TCP/IP", Питер, 2001
- Робачевский Андрей. Операционная система UNIX. - BHV, 1999.
- Цикритис Д.,Бернстайн Ф.. Операционные системы. М.: Мир. 1977.