Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Олифер. Сетевые операционные системы.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
16.5 Mб
Скачать

Прерывания и управление процессами

В Cisco IOS существует понятие процесса, а в ядре имеется специальный модуль — диспетчер, который управляет переключением между процессами. Механизм программных потоков (нитей) IOS не поддерживает. В виде процессов в Cisco IOS функционируют в первую очередь программные модули, реализую­щие сетевые протоколы и протоколы маршрутизации. Например, выполнив с консоли маршрутизатора Cisco команду show process, можно с большой вероятностью ожидать нахождения в полученном списке выполняющихся процессов имен IP Input, ARR Input, RIP Router — реализаций протоколов IP, ARP и RIP соответственно.

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

Еще одним фактором, направленным на сокращение потерь времени при переключении с процесса на процесс, является использование в Cisco IOS режима невытесняющей многозадачности. В главе 4 мы рассматривали этот способ организации многозадачного режима ОС и отмечали, что его основным достоинством является минимизация накладных расходов ОС на переключение процессов по сравнению с режимом вытесняющей многозадачности. В то же время очевидным недостатком этого решения является потенциальное снижение на­дежности и устойчивости системы, так как ошибка в коде какого-либо процесса замедляет выполнение других процессов или ведет к их полной остановке.

В Cisco IOS с этой потенциальной опасностью борются двумя способами: помимо уже упоминавшейся тщательной отладки модулей-процессов, используется сторожевой таймер, который запускается при очередной передаче управления какому-либо .процессу. Сторожевой таймер каждые 2 секунды получает управление по прерыванию, и если во второй раз застает процесс незавершенным, таймер принудительно останавливает выполнение процесса и передает управление диспетчеру.

Диспетчер IOS ведет четыре очереди готовых к выполнению процессов, отличающихся приоритетами. В порядке убывания приоритета это очереди:

  • критического приоритета;

  • высокого приоритета;

  • среднего приоритета;

  • низкого приоритета. .

Большая часть процессов работает со средним приоритетом, например процессы IP Input, ARP Input и RIP Router. Критический приоритет имеют некоторые системные процессы, например процесс измерения нагрузки маршрутизатора. Высокий приоритет назначается чаще всего тем процессам, которые выполняют срочную часть работы коммуникационного протокола (например, процесс RIP Send периодически посылает маршрутные объявления в сеть). Фоновые процессы, такие как проверка устаревших записей кэша, получают низкий приоритет.

Диспетчер проверяет очереди готовых процессов, начиная с очереди критического приоритета. Если она оказывается пустой, диспетчер переходит к просмотру очереди процессов с высоким приоритетом, затем — со средним, и только если все эти очереди пусты, — к очереди процессов с низким приоритетом. Чтобы предотвратить слишком долгое ожидание процессов с низким приоритетом, диспетчер вызывает на выполнение процесс из этой очереди через каждые 15 запусков процессов с более высокими приоритетами.

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

Как мы увидим далее," при определенной организации данных в таблице маршрутизации и ARP-таблице Cisco IOS успевает выполнить все операции по продвижению пакета за один цикл обработки прерываний.