Файл: Межсетевая Операционная Система Cisco.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 03.02.2024

Просмотров: 40

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Пример 1.4.

PID — идентификатор процесса (process identifier). Каждому процессу назначается уникальный идентификатор, который позволяет различать процессы в системе.

Qty — приоритет процесса и его состояние. Первый символ данного поля показывает приоритет процесса:

К — приоритет не назначен, так как процесс был “убит”;

D — нет приоритета, так как процесс разрушен;

X — нет приоритета, так как процесс поврежден;

С — критический приоритет;

Н — высокий приоритет;

М — средний приоритет;

L — низкий приоритет.

Два последующих символа обозначают текущее состояние процесса.

* — в данный момент процесс выполняется ЦП

Е — процесс ожидает события.

S — процесс приостановлен.

rd — процесс готов к выполнению.

we — процесс простаивает в ожидании события.

sa — процесс простаивает, ожидая некоего абсолютного времени.

si — процесс простаивает, ожидая истечения интервала времени.

sp — процесс простаивает, ожидая истечения временного интервала (периодически).

st — процесс простаивает, ожидая истечения временного интервала таймера.

hg — процесс “подвешен”.

хх — “мертвый” процесс.

PC — значение процессорного регистра program counter (программный счетчик) на момент последнего выполнения процесса. Данное значение представляет собой адрес ячейки памяти, с которого будет продолжено выполнение соответствующего процесса при его следующем доступе к центральному процессору. Нулевое значение свидетельствует о том, что процесс в данное время выполняется процессором.

Runtime (время выполнения) — суммарный период времени выполнения (в миллисекундах) процесса центральным процессором.

Invoked (активизация) — данное поле отображает значение счетчика активизации данного процесса центральным процессором с момента его (процесса) создания.

uSecs — среднее значение периода выполнения процесса при его активизации.

Stacks — статистика использования пространства стека. Число справа от косой черты означает общий размер стекового пространства, число слева — размер свободной области.

TTY — консольное устройство, связанное с данным процессом. Нулевое значение свидетельствует о том, что у процесса нет консоли либо что он связан с главной системной консолью.


Process — параметр имени процесса. Данное имя не уникально (несколько копий одного процесса может выполняться одновременно). Тем не менее идентификаторы процессов всегда уникальны.

Если выполнить команду show process на различных системах IOS, можно заметить, что некоторые процессы присутствуют в каждой системе. Большинство из этих процессов выполняют сервисные функции или обслуживают другие процессы. В табл. 1.2 приведен список таких процессов с описанием выполняемых ими задач.

      Процесс

                                                                   Функция

ЕХЕС

Интерфейс командной строки (Command-line interface — CLI), консоли и подключенных напрямую терминальных асинхронных линий. Процесс ЕХЕС принимает ввод от пользователя и предоставляет интерфейс для интерпретатора команд (parser)

Pool manager

Управление буферными пулами (более детальная информация представлена в разделе “Управление пакетным буфером" данной главы)

Check heaps

Процесс периодически проверяет целостность выполняемого кода системы IOS и структуры кучи

Per-minute jobs

Системный процесс, который выполняется каждые 60 секунд, осуществляя фоновые сервисные задачи, например проверку целостности стеков процессов 

Per-second jobs

Системный процесс, обслуживающий задачи, которые требуют ежесекундного выполнения

Critical background

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

Net background

Отсылает пакеты жизнеобеспечения сетевых интерфейсов, дезактивирует интерфейсы и изменяет их состояния

Logger

Просматривает сообщения (отладочные, сообщения об ошибках и информационные сообщения), выстроенные в очередь сообщений другими процессами через ядро системы, и выводит их на консоль и (при необходимости) на удаленный сервер

TTY background

Отслеживает подключенные асинхронные терминальные линии и звпускает ЕХЕС при их активизации

Табл. 1.2.

Все описанные выше процессы (за исключением ЕХЕС) создаются ядром системы во время инициализации и обычно существуют в операционной системе IOS вплоть до ее остановки.



Ядро системы IOS.

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

Планировщик.

Все задачи, касающиеся планирования процессов, целиком и полностью возлагаются на планировщик (scheduler). Планировщик системы IOS координирует работу всех процессов в системе с помощью так называемых очередей процессов (process queue), каждая из которых соответствует определенному состоянию процесса. Очереди также хранят информацию о контекстах процессов в соответствующих состояниях. Процессы переходят из одного состояния в другое, тогда как планировщик перемещает их контексты из одной очереди в другую. Итак, существует шесть очередей процессов, которые перечислены ниже.

  1. Очередь простоя содержит процессы, которые все еще активны, но находятся в стадии ожидания события.

  2. Очередь “мертвых” процессов содержит процессы, выполнение которых было завершено, однако прежде чем они будут полностью удалены из системы, занимаемые ими ресурсы должны быть освобождены.

  3. Очередь готовых процессов содержит процессы, готовые для выполнения процессором. Существует четыре очереди готовых процессов — по одной для каждого возможного приоритета выполнения: -критический; -высокий; -средний; -низкий.

Когда выполняющийся процесс приостанавливается, управление ресурсами процессора берет на себя планировщик. Используя специальный алгоритм, планировщик выбирает из очередей готовых процессов один и предоставляет ему ресурсы процессора. Рассмотрим последовательность действий планировщика поэтапно.


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

Этап 2. После того как критические процессы имели возможность выполниться хотя бы по одному разу, планировщик проверяет очередь процессов с высоким приоритетом. Если нет готовых к выполнению процессов с высоким приоритетом, планировщик пропускает этап 3 и переходит к осмотру очереди процессов со средним приоритетом. Если же в очереди есть процессы с высоким приоритетом, планировщик выбирает из очереди процессы, позволяя им выполняться. В интервалах между обработкой процессов с высоким приоритетом планировщик заглядывает в очередь критических процессов и выполняет все имеющиеся там процессы. После того как все процессы с высоким приоритетом имели возможность выполниться по одному разу, планировщик пропускает очереди процессов со средним и низким приоритетами и возвращается к первому этапу.

Этап 3. После того как в очереди процессов с высоким приоритетом не осталось ни одного процесса, планировщик проверяет очередь процессов со средним приоритетом. Если процессов в данной очереди не оказывается, планировщик переходит к этапу 4 и проверяет очередь низкоприоритетных процессов. В противном случае планировщик извлекает из очереди процессы и выполняет их. Во время выполнения процессов со средним приоритетом планировщик проверяет очередь процессов с высоким приоритетом и выполняет их все (перемежая с критичными процессами) перед тем, как перейти к выполнению очередного процесса со средним приоритетом. После того как все процессы из очереди выполнились, планировщик пропускает этап 4 и переходит к этапу 1. Планировщик пропускает очередь низкоприоритетных процессов максимум 15 раз, прежде чем перейти к этапу 4. Этот порог позволяет предотвратить блокировку низкоприоритетных процессов.

Этап 4. После того как все процессы с высоким и средним приоритетами были выполнены (или выполнение данного пункта было пропущено 15 раз), планировщик переходит к очереди низкоприоритетных процессов. Планировщик извлекает из очереди процесс и выполняет его. Между выполнением низкоприоритетных процессов планировщик выполняет процессы со средним приоритетом (перемежая их с высокоприоритетными и критичными процессами).

Этап 5. В завершение всего планировщик возвращается к выполнению этапа 1.


Алгоритм работы планировщика в чем-то схож с работой секундомера или алгоритмо "часы". В данной аналогии.

Секунды — как критичные процессы,

Минуты — как процессы с высоким приоритетом,

Часы — как процессы со средним приоритетом и

Дни — как низкоприоритетные процессы.

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

Использование ресурсов центрального процессора.

Хотя система IOS и не предоставляет никаких статистических данных о работе планировщика, существует способ узнать, как различные процессы разделяют ресурсы центрального процессора. В предыдущих примерах мы рассматривали результат работы команды show process, которая выводит общую информацию об активных процессах в системе. Модификация данной команды show process epu имеет довольно схожий результат работы, однако внимание ее больше сосредоточено на использовании ресурсов центрального процессора. Результат работы команды show process epu приведен в примере 1.5.



Пример 1.5.

Первая строка в выводе команды show process cpu показывает общую загрузку центрального процессора, усредненную по трем различным интервалам времени: 5 секунд, 1 минута и 5 минут. Пятисекундная статистика использования процессора представлена двумя числами, разделенными косой чертой.

Число слева представляет общий процент использования ресурсов процессора (процентзанятости).

Число справа — процент использования ресурсов процессора при обработке прерываний.

Одно и пятиминутная статистика использования процессорного времени показывает общий процент занятости процессора, значение которого экспоненциально уменьшается для одно- и пятиминутной статистики соответственно. После обшей статистики использования процессора те же самые временные интервалы отображают загруженность каждого процесса в отдельности. Планировщик автоматически просчитывает данные значения и сохраняет их в памяти на случай выполнения команды show process epu. Таким образом, выполняя команду show process epu дважды в течение пятисекундного интервала, мы не увидим обновленной статистики использования центрального процессора. С помощью команды show process epu довольно просто определить наиболее активные в системе процессы и процент использования ими ресурсов центрального процессора. В приведенном выше примере средняя загруженность процессора в течение пяти секунд перед запуском команды составляла 90%.