Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Службы ядра Программные прерывания

Программные прерывания

Многие события ядра являются управляемыми аппаратными прерываниями. Для высокоскоростных устройств, таких, как сетевые контроллеры, этим прерываниям назначается высокий приоритет. Сетевой контроллер должен быстро подтвердить получение пакета и отменить запрет на получение дополнительных пакетов, чтобы избежать потерь близко расположенных пакетов. Однако дальнейшая обработка передачи пакета принимающим процессом, хотя и занимает время, не обязательно должна осуществляться сразу же. Таким образом, дальнейшую обработку можно вести с более низким приоритетом, чтобы выполнение критических операций не блокировалось на более продолжительное время, чем это необходимо.

Механизм для осуществления обработки с более низким приоритетом называется программным прерыванием. Обычно прерывания с высоким приоритетом создают очередь для выполнения работы на более низком уровне приоритета. Как и с аппаратными устройствами в FreeBSD 5.2, у каждого программного прерывания есть связанный с ним контекст процесса. Процессам программных прерываний назначают обычно более низкие приоритеты планирования, чем процессам драйверов устройств, но более высокие приоритеты, чем процессам пользователя. Всякий раз при появлении аппаратного прерывания процесс, связанный с драйвером устройства, достигнет наивысшего приоритета и будет назначен для выполнения. Когда нет готовых к выполнению процессов драйверов устройств, для выполнения будет назначен процесс программного прерывания с наивысшим приоритетом. Если нет готовых для выполнения процессов программных прерываний будет запущен процесс пользователя с наивысшим приоритетом. Если при возникновении прерывания, которое делает готовым к исполнению процесс драйвера устройства, выполняется либо процесс программного прерывания, либо процесс пользователя, планировщик их вытеснит, чтобы запустить процесс драйвера устройства.

Доставка сетевых пакетов процессу назначения управляется функцией обработки пакетов, которая работает с более низким приоритетом, чем драйвер устройства сетевого контроллера. По мере поступления пакетов они помещаются в рабочую очередь, и контроллер немедленно становится доступным снова. Между доставками пакетов работает процесс обработки пакетов, доставляющий их. Таким образом, контроллер может принимать новые пакеты без необходимости ждать доставки предыдущего пакета. Дополнительно к обработке сети программные прерывания используются для обработки событий, связанных с временем и перепланировкой процессов.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 64 гостей онлайн