Архитектура современных операционных систем
64 Процедуры обработки прерываний в таблицах cdevsw и bdevsw не зада- ются. Для обработчиков прерываний в UNIX имеется специальная таблица, называемая таблица прерываний. Каждый обработчик прерываний состоит из 2 частей: top_half и bottom_half. Верхняя часть обработчика вызывается системой в момент возник- новения прерывания в режиме с запрещенными прерываниями, то есть во время работы верхней части прерывания данного и нижних уровней запрещены. По- этому верхняя часть обработчика выполняет следующие действия: 1) сохраняет состояние прерывания (в случае внешнего прерывания – это состояние регистров устройства); 2) ставит в очередь на выполнение нижнюю часть обработчика, после че- го завершает. Нижняя часть обработчика выполняется в режиме с разрешенными пре- рываниями, поэтому она может быть прервана для обработчика других преры- ваний. Она выполняет анализ и обработку прерываний. В качестве примера рассмотрим работу обработчика прерывания от тай- мера. В зависимости от архитектуры прерывания от таймера возникают от 50 до 100 раз в секунду. При каждом прерывании управления получается top_half обработчика и выполняет следующие действия: 1) Увеличивает на 1 счетчик, содержащий количество тиков с момента последней загрузки системы. 2) Увеличивает на 1 переменную, в которой содержится количество тиков, прошедших с момента последнего вызова нижней части. 3) Увеличивает на 1 переменную, считающую количество тиков рабо- ты системы в системном режиме с момента последнего вызова нижней части. После этого она ставит в очередь на выполнение нижнюю часть и завер- шается. Нижняя часть, получив управление, совершает следующие действия:
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy