Менеджер областей памяти




ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени федеральное государственное

Бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

 

Высшая школа бизнеса, инновационных технологий и

Интеллектуальных систем (ВШ БИТИС)

___________________________________________________________

 

Кафедра информационных систем

 

КУРСОВАЯ работа

ПО ДИСЦИПЛИНЕ

Операционные системы

НА ТЕМУ:

 

Операционные системы компании Cisco Systems

 

Ст. гр.

Принял: доцент Тутова Н.В.

 

Москва 2016

Содержание

 

Введение. 2

Cisco IOS. 3

Ядро IOS. 8

Менеджеры памяти. 9

Менеджер областей памяти. 10

Менеджер пулов памяти. 10

Менеджер фрагментов. 10

Принципы коммутации пакетов. 11

Cisco Express Forwarding. 12

Поддерживаемые устройства. 13

Cisco IOS-XE. 14

Абстракция платформы.. 14

Интеграция приложений. 14

Архитектура ПО.. 15

Модули шасси. 15

Маршрутный процессор. 15

Процессор управления ESP. 15

Управляющий процессор SIP. 16

Поддерживаемые устройства. 16

Cisco IOS XR. 17

NX-OS. 20

Альтернативные ОС. 22

Использование командного интерпретатора Bourne Shell для работы с файлами. 24

Управление учётными записями пользователей и правами доступа к файлам.. 26

Программирование на языке командного интерпретатора. 30

Выводы.. 31

Заключение. 32

Список источников. 33

 


Введение

Главной целью курсового проекта является закрепление теоретических и практических знаний по дисциплине «Операционные системы», крайне необходимых при решении практических задач в области управления современной IT-инфраструктуры.

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

В рамках практической части курсовой работы для развития навыков работы с ОС семейств UNIX выполнена установка и настройка ОС, а также написан программный код на языке командного интерпретатора для решения типовых задач администрирования.

 


 

Cisco IOS

Операционная система IOS (Internetworking Operating System - операционная система межсетевого взаимодействия), под управлением которой работают маршрутизаторы и коммутаторы Cisco, - одно из лучших сетевых системных программных средств в мире. Эта система поддерживает функционирование Интернета, обеспечивая примерно 80 процентов веб-трафика.

Свой первый маршрутизатор Cisco выпускает на рынок устройство под названием Advanced Getaway Server (AGS) в 1986 году, которое работает под управлением программного обеспечения версия 5.0, которое в последствии назовут Cisco IOS. Уже через год среднемесячный объем продаж маршрутизаторов Cisco достиг 750 тысяч долларов США. Ныне годовой оборот компании, 25 лет назад представлявшей собой команду из двух человек, составляет 36 млрд долларов, и как минимум 70 процентов дохода Cisco приносят продукты с предустановленной операционной системой Cisco IOS.

Появление же этого программного средства на рынке прошло скромно и незаметно. Более того, в течение нескольких лет у него даже не было собственного имени: "программное обеспечение" для маршрутизаторов Cisco, и только. В конце концов безымянной системе дали длинноватое и не броское название, которое, с другой стороны, точно отразило корпоративную миссию Cisco на стадии ее становления: разработку маршрутизаторов для связи между разнородными компьютерами и сетями. В середине 1980-х годов в мире работало множество закрытых сетей, таких как DECnet, AppleTalk, Apollo Domain, Novell IPX, Banyan VINES, IBM SNA и TCP/IP.

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

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

Благодаря занятиям по поддержке ИТ-систем в Стэндфордском университете Cisco получила возможность быстро разрабатывать и совершенствовать различные версии IOS, которые нацелены на разные рынки.

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

По сравнению с другими операционными системами, IOS имеет довольно простую архитектуру. Как и большинство небольших, встроенных систем, IOS была разработана, чтобы быть легковесной, и значит оставаться в условия ограниченных ресурсов памяти и скоростных ограничений оригинальных платформ. Ранние маршрутизаторы имели ограниченные объемы памяти для обмена между ПО и данными (например, таблицы маршрутизации). Чтобы ограничить размер исполняемого образа, IOS была разработана, чтобы обеспечить работу только основных услуг. Скорость в равной степени является также одним из главных факторов при проектировании, для чего были приняты усилия по проектированию системы с минимальными накладными расходами ресурсов, чтобы максимально увеличить возможности маршрутизатора для быстрого перенаправления пакетов. Многие механизмы безопасности, такие как функция защиты памяти общего доступа, которые можно обнаружить в других сетевых операционных системах, в IOS отсутствуют из-за производимой этими механизмами нагрузки на процессор и память.

Высокая скорость работы ОС IOS была достигнута за счет различных архитектурных решений, главными из которых являются:

• представление ОС в виде единого исполнительного файла кода;

• работа ядра ОС и приложений в одном и том же режиме процессора;

• исполнение процессов в соответствии с их приоритетами;

• отказ от виртуальной памяти.

• использование иерархической системы буферов хранения кадров;

• кэширование таблицы маршрутизации.

 

Cisco IOS имеет модульную структуру, которая достаточно традиционна — она состоит из модулей ядра и сетевых модулей, которые соответствуют приложениям универсальной ОС.

Сетевые модули выполняют функции коммуникационных протоколов, таких как сетевые протоколы IP, IPX или же протоколы маршрутизации RIP, OSPF или BGP. Кроме того, в состав сетевых модулей входят некоторые модули, реализующие общие для коммуникационных протоколов функции, например, управление очередями для поддержки QoS. Большая часть сетевых модулей Cisco IOS реализуются как процессы, вызываемые диспетчером ядра.

В состав модулей ядра помимо диспетчера входят также менеджер памяти, менеджер буферов пакетов, менеджер файлов, менеджер конфигурации маршрутизатора, набор библиотек функций ядра.

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

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

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

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

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

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

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

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

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

В памяти ввода вывода IOS поддерживает три типа очередей:

• Первичные очереди, называемые в IOS Tx-ring и Rx-ring, связаны с определенным интерфейсом и предназначены для передачи кадров в контроллер и приема кадров от контроллера данного интерфейса соответственно. К этим очередям имеет доступ как контроллер, так и процессор. Размеры ячеек этих очередей зависят от типа интерфейса — они выбираются таким образом, чтобы в ячейку мог поместиться кадр максимального для данного типа интерфейса размера. Например, ячейки интерфейсов Ethernet имеют размер 1524 байта.

• Локальные очереди, также связываются с конкретным интерфейсом маршрутизатора. Они доступны только процессору и состоят из большего числа буферов, чем первичные очереди.

• Системные очереди могут быть использованы для хранения кадров любых интерфейсов в периоды перегрузки какого-либо интерфейса, когда локальная очередь этого интерфейса полностью заполняется.

Контроллер самостоятельно выполняет запись кадра в первичную очередь, а затем выполняет прерывание. Код ядра IOS, вызываемый по этому прерыванию, пытается переместить ячейку с принятым кадром из очереди Tx-ring в локальную входную очередь интерфейса или же, если она полна, в одну из системных очередей. В том случае, когда ни в локальной, ни в системных очередях нет указателей на свободные ячейки, кадр отбрасывается. Для этого в очереди Tx-ring признак указателя на ячейку, содержащую кадр, меняет свое значение с «заполненная ячейка» на «свободная ячейка».

После того как кадр, содержащий пакет, подлежащий маршрутизации, попадает в локальную или системную очередь, программа обработки прерываний определяет, какому протоколу сетевого уровня соответствует пришедший пакет, и перемещает его во входную очередь процесса, реализующего этот протокол. Пусть это будет процесс IP Input, который занимается маршрутизацией IP-пакетов. Когда процесс IP Input, в очередной раз получив управление, обнаружит данный кадр в начале очереди, он производит необходимые операции с таблицей маршрутизации и ARP-таблицей. Просмотр таблицы маршрутизации может занять много времени, если маршрутизатор работает на магистрали Интернета, так как в этом случае таблица может включать несколько десятков тысяч записей. После определения МАС-адреса назначения и выходного интерфейса, через который нужно передать кадр в сеть, процесс IP Input формирует новый кадр, помещая найденный адрес в поле адреса назначения кадра. Процесс IP Input помещает кадр, готовый к отправке в сеть, в очередь Tx-ring выходного интерфейса. Обнаружив новый кадр в очереди Tx-ring, контроллер интерфейса переписывает его в свой буфер, а затем побитно пересылает в канал связи.

Описанный процесс может быть ускорен за счет кэширования таблицы маршрутизации и ARP-таблицы, благодаря чему, все операции по маршрутизации пакета могут быть выполнены самостоятельно программой обработки прерывания без обращения к процессу IP Input. Эта программа просматривает кэш маршрутов, и только в том случае, когда в кэше нужный адрес отсутствует, пакет помещается в очередь процесса IP Input и обрабатывается по обычной процедуре. Размер кэша для протокола IP определяется автоматически в зависимости от размера свободной памяти, оставшейся после размещения там кодов IOS и буферов пакетов. При изменении состояния таблицы маршрутизации или ARP-таблицы кэш перестраивается. Кроме того, из кэша периодически удаляются «устаревшие» записи, то есть, записи, срок жизни которых превысил определенный порог.

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

Ключевыми элементами архитектуры IOS являются согласно изображению выше являются:

· Процессы - отдельные потоки и связанные с ними данные, которые выполняют задачи, такие как обслуживание системы, коммутации пакетов, а также реализует протоколы маршрутизации.

· Ядро - предоставляет базовые системные службы с остальной частью IOS, такие как управление памятью и планирование процессов. Это обеспечивает аппаратное (процессор и память) управления ресурсами для процессов.

· Буферы пакетов - глобальные буферы памяти и связанные с ними функции управления, используемые для хранения очередей передаваемых пакетов.

· Драйверы устройств - функции, которые контролируют аппаратное обеспечение сетевого интерфейса и периферийных устройств (например, флэш-карты). Драйверы устройств обеспечивают взаимодействие между процессами IOS, ядра IOS и аппаратного обеспечения.

· Fast switching software (FSS) – Высоко оптимизированный коммутатор пакетов.

 

 
 

Рис. 1.1 Архитектура Cisco IOS

 

Ядро IOS

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

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

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

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

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

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

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

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

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

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

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

Алгоритм работы планировщика в чем-то схож с работой секундомера. В данной аналогии секунды можно представить, как критичные процессы, минуты — как процессы с высоким приоритетом, часы — как процессы со средним приоритетом и дни — как низкоприоритетные процессы. Каждый оборот секундной стрелки покрывает все секунды. Каждый оборот минутной стрелки покрывает все минуты, включая прошествии всех секунд для каждой минуты, и т.д.

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

Менеджеры памяти

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

Менеджер областей памяти — выделяет и поддерживает различные области памяти для данной платформы.

Менеджер пулов памяти — управляет созданием пулов памяти, выделением и освобождением отдельных блоков внутри пулов.

Менеджер фрагментов памяти — управляет специально выделенными блоками памяти, содержащими несколько фрагментов фиксированного размера.

Менеджер областей памяти

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

Менеджер пулов памяти

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

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

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

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

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

Менеджер фрагментов

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

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

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

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

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

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

Драйверы устройств взаимодействуют с другими частями системы IOS посредством специальной управляющей структуры, называемой дескриптором интерфейса (interface descriptor block — 1DB). Данная структура содержит список управляющих функций драйвера и информацию о параметрах устройства и его состоянии (например, IP- адрес, статистику прохождения сетевых пакетов). Операционная система IOS содержит дескрипторы для каждого интерфейса.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: