Проблема контроля и управления

Операционная система должна играть активную роль в организации обработки прерываний. Прерывания выполняют очень полезную для вычислительной системы функцию - они позволяют реагировать на асинхронные по отношению к вычислительному процессу события. В то же время прерывания создают допол­нительные трудности для ОС в организации вычислительного процесса. Эти труд­ности связаны с непредвиденными переходами управления от одной процедуры к другой, возникающими в результате прерываний от контроллеров внешних устройств. Возможно также возникновение в непредвиденные моменты времени исключений, связанных с ошибками во время выполнения инструкций. Услож­няют задачу планирования вычислительных работ и запросы на выполнение системных функций (системные вызовы) от пользовательских приложений, вы­полняемые с помощью программных прерываний. Сами модули ОС также часто вызывают друг друга с помощью программных прерываний, еще больше запуты­вая картину вычислительного процесса.

ОС не может терять контроль над ходом выполнения систем­ных процедур, вызываемых по прерываниям. Она должна упорядочивать их во времени так же, как планировщик упорядочивает многочисленные пользователь­ские потоки. Кроме того, сам планировщик потоков является системной проце­дурой, вызываемой по прерываниям (аппаратным - от таймера или контроллера устройства ввода-вывода, или программным - от приложения или модуля ОС). Поэтому правильное планирование процедур, вызываемых по прерываниям, является необходимым условием правильного планирования пользовательских потоков. В противном случае в системе могут возникать, например, такие ситуа­ции, когда операционная система будет длительное время заниматься не требую­щей мгновенной реакции задачей управления стримером, архивирующим дан­ные, в то время, когда высокоскоростной диск будет простаивать и тормозить работу многочисленных приложений, обменивающихся данными с этим диском. Еще один пример такой ситуации иллюстрирует рис. 1. В данном случае обра­ботчик прерываний принтера блокирует на длительное время обработку преры­вания от таймера, в результате чего системное время на некоторое время «зами­рает» и поток 2, критически важный для пользователя, не получает управление в запланированное время. Остроту проблемы несколько смягчает то обстоятельст­во, что во многих случаях обработка прерывания связана с выполнением всего нескольких операций ввода-вывода и поэтому имеет очень небольшую продол­жительность. Тем не менее ОС всегда должна контролировать ситуацию и вы­полнять критичную работу вовремя, а не полагаться на волю случая.