Многие события ядра являются управляемыми аппаратными прерываниями. Для высокоскоростных устройств, таких, как сетевые контроллеры, этим прерываниям назначается высокий приоритет. Сетевой контроллер должен быстро подтвердить получение пакета и отменить запрет на получение дополнительных пакетов, чтобы избежать потерь близко расположенных пакетов. Однако дальнейшая обработка передачи пакета принимающим процессом, хотя и занимает время, не обязательно должна осуществляться сразу же. Таким образом, дальнейшую обработку можно вести с более низким приоритетом, чтобы выполнение критических операций не блокировалось на более продолжительное время, чем это необходимо.
Механизм для осуществления обработки с более низким приоритетом называется программным прерыванием. Обычно прерывания с высоким приоритетом создают очередь для выполнения работы на более низком уровне приоритета. Как и с аппаратными устройствами в FreeBSD 5.2, у каждого программного прерывания есть связанный с ним контекст процесса. Процессам программных прерываний назначают обычно более низкие приоритеты планирования, чем процессам драйверов устройств, но более высокие приоритеты, чем процессам пользователя. Всякий раз при появлении аппаратного прерывания процесс, связанный с драйвером устройства, достигнет наивысшего приоритета и будет назначен для выполнения. Когда нет готовых к выполнению процессов драйверов устройств, для выполнения будет назначен процесс программного прерывания с наивысшим приоритетом. Если нет готовых для выполнения процессов программных прерываний будет запущен процесс пользователя с наивысшим приоритетом. Если при возникновении прерывания, которое делает готовым к исполнению процесс драйвера устройства, выполняется либо процесс программного прерывания, либо процесс пользователя, планировщик их вытеснит, чтобы запустить процесс драйвера устройства.
Доставка сетевых пакетов процессу назначения управляется функцией обработки пакетов, которая работает с более низким приоритетом, чем драйвер устройства сетевого контроллера. По мере поступления пакетов они помещаются в рабочую очередь, и контроллер немедленно становится доступным снова. Между доставками пакетов работает процесс обработки пакетов, доставляющий их. Таким образом, контроллер может принимать новые пакеты без необходимости ждать доставки предыдущего пакета. Дополнительно к обработке сети программные прерывания используются для обработки событий, связанных с временем и перепланировкой процессов.
- 15/07/2010 22:02 - Реальное время
- 11/07/2010 09:08 - Службы времени
- 08/07/2010 12:45 - Службы управления памятью
- 04/07/2010 23:01 - Тайм-ауты
- 04/07/2010 21:47 - Статистика и планирование процессов
- 16/06/2010 13:31 - Исключения
- 15/06/2010 08:13 - Состояние процесса
- 15/06/2010 01:16 - Использование ресурсов
- 11/06/2010 15:57 - Возвращение из системного вызова
- 01/06/2010 19:17 - Обработка результатов