ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.02.2024
Просмотров: 35
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Виртуальная память обладает также и другими преимуществами: механизм MMU может быть запрограммирован таким образом, чтобы отделять области памяти различных процессов друг от друга. Таким образом, предотвращается доступ к памяти одного процесса со стороны других.
Наделенная всеми своими достоинствами, виртуальная память не дается системе “даром”. Платить приходится производительностью. Именно по этой причине система IOS не использует механизм виртуальной памяти в полной мере, как мы увидим в дальнейшем.
Прерывания.
Операционные системы обычно осуществляют обработку прерываний центрального процессора. Прерывание — это аппаратное событие, по которому выполнение текущего набора инструкций приостанавливается, а управление передается специальной программе. Эта специальная программа — обработчик прерывания (interrupt handler) — выполняет необходимые действия, связанные с природой прерывания, и возвращает процессор к выполнению приостановленного набора инструкций. Зачастую прерывания генерируются внешними устройствами-контроллерами, требующими внимания со стороны системы. Однако и сам центральный процессор может генерировать прерывания. Операционная система, поддерживающая обработку прерываний, содержит различного рода обработчики для всех видов возможных прерываний.
Структура операционной системы IOS.
Изначально IOS проектировалась как маленькая операционная система, встраиваемая в первые маршрутизаторы Cisco. В те времена маршрутизаторы сами по себе рассматривались как устройства исключительно аппаратные. Разделения между программной и аппаратной частями практически не происходило. Поначалу операционную систему IOS даже не называли IOS, а лишь системой, управляющей маршрутизатором Cisco. С ростом популярности маршрутизируемых сетей возникла потребность в маршрутизаторах, которые бы поддерживали различные протоколы и обеспечивали дополнительную функциональность, такую, например, как коммутация. В ответ на повышение требований к маршрутизаторам Cisco вносила различные дополнения в программное обеспечение. В результате IOS превратилась в многофункциональную операционную систему, поддерживающую маршрутизацию и коммутацию. Интересно отметить, что, несмотря на значительное расширение функциональных возможностей системы, основные концепции структуры системы IOS остались практически неизмененными. По сравнению с другими операционными системами, структура системы IOS очень проста. Как и большинство маленьких встраиваемых операционных систем, IOS была спроектирована таким образом, чтобы занимать как можно меньшее пространство памяти и функционировать максимально быстро. Первоначально маршрутизаторы были оснащены небольшим объемом памяти для хранения программного обеспечения и данных (таких как таблицы маршрутизации). Чтобы достигнуть очень маленьких размеров выполняемого образа операционной системы, IOS была оснащена лишь самыми необходимыми функциями.
Необходимая производительность операционной системы также сыграла решающую роль в проектировке структуры IOS. Значительные усилия были потрачены на создание системы, позволяющей маршрутизатору перенаправлять сетевые пакеты с максимальной скоростью. Это потребовало уменьшения расходов процессорного времени на служебные нужды операционной системы, что позволило максимально эффективно использовать ресурсы процессора для маршрутизации сетевых пакетов. Различные меры защиты, такие как механизм защиты внутри потоковой памяти, присутствующие в других операционных системах, исключены из системы IOS с целью снижения затрат процессорных ресурсов на обслуживание нужд системы. В целом идея IOS состоит в том, чтобы достичь максимальной скорости работы, пусть и ценой снижения эффективности защиты системы от сбоев.
Рис 1.1.
Основные элементы системы, перечислены ниже:
-
Процессы. Обычно под процессами понимаются отдельно взятые потоки и связанные с ними данные. Процессы выполняют конкретные задачи, такие как поддержание работоспособности системы, коммутацию сетевых пакетов и реализацию протоколов маршрутизации. -
Ядро системы осуществляет основные функции операционной системы: управление памятью и планирование задач, а также отвечает за распределение аппаратных ресурсов (память и центральный процессор) между всеми процессами. -
Буферы пакетов. Обычно это буферы памяти, используемые для хранения маршрутизируемых сетевых пакетов. -
Драйверы устройств. Драйверы управляют аппаратной частью сетевых интерфейсов и периферийными устройствами (такими как флэш-карты). Драйвер выступает в роли посредника между ядром системы IOS со всеми процессами и аппаратной частью маршрутизатора. Драйверы также напрямую взаимодействуют с программным обеспечением быстрого переключения пакетов. -
Программное обеспечение быстрого переключения пакетов. Под таким программным обеспечением подразумевается набор оптимизированных функций, осуществляющих быстрое переключение путей следования пакетов.
Организация памяти.
Операционная система IOS проецирует всю имеющуюся физическую память в одну непрерывную область виртуального адресного пространства. Как мы уже отмечали выше, в системе IOS не реализован полноценный механизм виртуальной памяти. Для снижения вычислительных затрат на обслуживание системы и процессов ядро IOS не поддерживает ни страничную адресацию памяти, ни подкачку отдельных областей памяти. Таким образом, все адресное пространство системы IOS ограничено объемом доступной физической памяти.
Всю память операционная система IOS разделяет на отдельные области (regions), которые обычно соответствуют различным типам физической памяти. Например:
-
статическая память (Static Random Access Memory — SRAM) может использоваться для хранения пакето -
динамическая (Dynamic Random Access Memory — DRAM) — для хранения программного обеспечения и данных маршрутизатора определенного типа.
Разделение памяти по областям позволяет системе IOS объединять различные типы памяти, а программы даже не знают особенностей памяти на конкретной аппаратной платформе. Все области памяти классифицируются по одной из восьми категорий, которые перечислены в таблице 1.
Разновидности областей памяти.
Область памяти | Описание |
Локальная (Local) | Структуры данных периода времени выполнения и локальная куча. Обычно DRAM-память |
Память ввода-вывода (lomem) | Общая область памяти, доступная как центральному процессору, так и контроллерам сетевых устройств через шину данных. Чаще всего это SRAM-память |
Быстрая память (Fast) | Быстрая память (такая как SRAM) используется для критичных по скорости задач и специальных целей |
Код IOS (IText) | Выполняемый код системы IOS |
Инициализированные данные IOS (IData) | В данной области хранятся инициализированные переменные |
Неинициализированные данные (IBss) | Здесь хранятся неинициализированные переменные |
Шинная память (PCI) | Память шины PCI. Данная область памяти доступна для всех устройств на шине |
Флэш-память (Flash) | Данная область памяти используется для хранения выполняемых образов системы IOS (запускающихся из оперативной памяти или напрямую из флэш-памяти). Также область памяти такого типа используется для хранения конфигурационных данных маршрутизатора. Обычно файловая система также размещается во флэш-памяти |
Таблица 1.
Области памяти могут быть вложенными в отношении “родительская область— дочерняя область”. В принципе, ограничений на глубину подобного рода вложений нет, однако реально используется лишь один уровень. Вложенные области формируют подобласти (subregions) родительских областей. На рис. 1.2 проиллюстрирована возможная в системе IOS конфигурация памяти с областями и под областями. Для того чтобы узнать, какие области памяти присутствуют в данной системе, используется команда show region.
Рис 1.2.
В примере 1.1 продемонстрирован результат выполнения этой команды для маршрутизатора Cisco 7206.
Пример 1.1. Результат выполнения команды show region.
Пример 1.1.
Колонки Start и End выведенной таблицы указывают на начальные и конечные адреса областей памяти в общем пространстве виртуальной памяти системы. Справа указаны соответствующие области и подобласти. Имена подобластей не выделены скобками и отделены двоеточием от соответствующих имен областей. На рис. 1.3 изображены соответствующие области памяти с подобластями. Между различными областями памяти преднамеренно оставлены пропуски в пространстве адресов (например, область pcimem оканчивается на адресе 0x4B0FFFFF, а область main начинается с адреса 0x60000000). Эти свободные области могут использоваться для расширения и предоставляют некоторого рода защиту от выполнения потоков с ошибками. Если вышедший из под контроля поток начнет записывать мусор в различные участки памяти, то такой поток немедленно будет остановлен при попытке записать что-либо в свободную область.
Из примера 1.1 и рис. 1.3 мы видим, что вся область DRAM-памяти, начиная с адреса 0x60000000 и заканчивая адресом 0x619FFFFF, рассматривается как локальная область (local) и разделяется на несколько подобластей. Такие подобласти соответствуют различным частям образа системы IOS (текст, BSS и данные), а также куче. Кучей обозначается вся свободная локальная память после того, как в нее был загружен образ системы.
Рис. 1.3.
Пулы памяти.
Управление памятью в системе IOS осуществляется посредством так называемых пулов памяти memory pools - каждый пул представляет собой блок памяти, который может быть выделен из кучи или освобожден от использования.Пулы составляются из областей памяти, а управление ими осуществляется ядром системы. Очень часто пул памяти в точности соответствует области памяти, однако один пул может покрывать и несколько участков памяти. Таким образом, память может выделяться для использования сразу из нескольких областей, что оказывается весьма эффективным. Информация о пулах памяти может быть получена с помощью команды show memory.