ТОП 10:

Тема 1: Основные компоненты ОС



Лекция 1

Тема 1: Основные компоненты ОС


План лекции: 1.1 Роль и задачи операционных систем

1.2 История развития операционных систем

1.3 Классификация современных ОС

1.4 Функции типовых операционных систем

 

Роль и задачи операционных систем

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

Операционная система относится к системному программному обеспечению.

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

Операционная система является промежуточным звеном между аппаратурой и прикладными программами пользователя и обеспечивает пользователя:

- удобными средствами для использования внешних устройств,

- для эффективного использования мощностей процессоров, которые входят в состав вычислительной системы,

- для удаленной передачи данных по сетям, включая локальные, корпоративные сети и Internet.

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

 

История развития операционных систем

Историю развития ОС можно разбить на 3 этапа.

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

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

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

 

Основные функции типовых ОС

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

 

Управление памятью

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

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

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

 

Управление вводом-выводом

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

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

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

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

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

 

Сетевая поддержка

Сетевые системы

Современные операционные системы приспособленны к работе в сети, их называют сетевыми операционными системами. Средства сетевой поддержки дают ОС возможность:

♦ предоставлять локальные ресурсы (дисковое пространство, принтеры и т.п.) в общее пользование через сеть, т.е. функционировать как сервер;

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

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

Распределенные системы

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

Распределенные и многопроцессорные системы являются двумя основными категориями ОС, которые используют несколько процессоров.

 

Безопасность данных

Под безопасностью данных в ОС понимают обеспечение надежности системы (защиты данных от потери в случае сбоев) и защита данных от несанкционированного доступа (случайного или намеренного).

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

 

Интерфейс пользователя

Различают два типа средств взаимодействия пользователя с ОС: командный интерпретатор (shell) и графический интерфейс пользователя (GUI).

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

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

Выводы

Лекция 2 Загрузка ОС


План лекции: 1.5 Аппаратная инициализация компьютера.

1.6 Загрузчик ОС.

1.7 Загрузка Windows

 

 

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

 

Два этапа загрузки

Использование загрузочного сектора для непосредственной загрузки ядра ОС имеет свои особенности:

· код загрузчика вынужденно является очень простым, потому в нем не возможно выполнять более сложные действия (например, руководить загрузкой нескольких ОС), большинство других недостатков являются последствиями этого;

· не возможно передавать параметры в загрузчика;

· процесс ограничен описанной схемой переключения из МВR на загрузочный сектор, нет возможности руководить этим процессом;

· нет возможности загружать ядро из другого раздела диска или из подкаталога;

· ОС всегда будет запущена в реальном режиме процессора.

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

В этом случае загрузчика разбивают на две части: загрузчик первого и второго этапов.

Загрузчик первого этапа - хранят в загрузочном секторе диска, и основным его заданием является поиск на диске и загрузка в память загрузчика второго этапа.

Загрузчик второго этапа — это полномасштабное приложение (программа), которая получает контроль над компьютером после выполнения начальной загрузки. В сущности, такой загрузчик является мини-ОС специализированного назначения.

Рассмотрим некоторые возможности двухэтапного загрузчика.

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

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

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

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

 

Загрузка Windows ХР

Загрузки Windows ХР начинают стандартным способом — из передачи управления коду загрузочного сектора активного раздела диска. Главное его задание — определить местонахождение файла ntldr в корневом каталоге этого раздела, загрузить его в память и передать управление на его точку входа. Отметим, что код загрузочного сектора зависит от того, какая файловая система установлена для этого раздела: для FАТ выполняют один вариант, для NTFS — другой.

Файл ntldr можно рассматривать как загрузчик второго этапа. Он начинает свое выполнение в 16-битному режиме процессора, прежде всего переводит процессор в защищенный режим и включает поддержку страничной организации памяти, после этого считывает из корневого каталога файл boot.иnи и делает его синтаксический разбор.

Когда есть один вариант загрузки, система сразу начинает загружаться, когда их больше — отображают меню загрузки. После выбора варианта из меню ntldr запускает программу ntdetect.com, что в реальном режиме определяет базовую конфигурацию компьютера (подобно тому, как это делала функция setup() для Linux — ни одна из современных систем не доверяет этот код BIOS). Собранную информацию хранят в системе, позже она будет сохранена в реестре. Внизу экрана появляется текстовый индикатор прогресса. В этой ситуации можно нажать на F8 и перейти в меню дополнительных возможностей загрузки (в безопасном режиме и тому подобное).

Потом ntldr загружает в память

· ntoskrnl.ехе (которая содержит ядро и исполнительную подсистему Windows ХР),

· bootvid.dll (видеодрайвер за умалчиванием, которое отвечает за отображение информации во время загрузки),

· hat.dll (уровень абстрагирования от оборудования) и основные файлы реестра.

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

Инициализация ntoskrnl.ехе состоит из двух этапов: фаз 0 и 1.

Во время выполнения фазы 0 прерывания запрещены, на экране ничего не отображается. Основной целью этого этапа является подготовка начальных структур данных, необходимых для расширенной инициализации во время выполнения фазы 1. Отметим, что менеджер процессов на этом этапе будет инициализироваться почти полностью, с его помощью создают начальный объект-процесс с названием Idle, процесс System и системный поток для выполнения инициализации фазы 1. После завершения фазы 0 прерывания разрешены, и начинает выполняться системный поток.

Во время выполнения фазы 1 управление экраном осуществляет видеодрайвер bootvid.dll, который отображает загрузочный экран и графический индикатор прогресса на нем (этот индикатор будет изменяться на протяжении всей фазы 1). Происходит окончательная инициализация разных подсистем исполнительной системы (менеджера объектов, планировщика, службы безопасности, менеджера виртуальной памяти, менеджера кэша и тому подобное). Во время инициализации подсистемы ввода-вывода (которая занимает до 50 % времени этой фазы) происходит подготовка необходимых структур данных, инициализация драйверов с запуском во время загрузки (boot-start), загрузки и инициализация драйверов с системным запуском (system-start).

Фаза 1 завершается запуском менеджера сессий (smss.ехе).

Последующую загрузку выполняют три системных процесса:

· менеджер сессий smss.ехе,

· процесс регистрации в системе winiogon.ехе

· менеджер управления сервисами (SCM, services.ехе).

Основным заданием менеджера сессий является загрузка и инициализация всех компонентов подсистемы Win32 (как режиму пользователя, так и режиму ядра), а также окончательная инициализация реестра и запуск winiogon.ехе.

Процесс регистрации в системе запускает менеджер управления сервисами и менеджер аутентификации, а также организует регистрацию пользователей в системе.

Менеджер сервисов (SСМ) загружает и будет инициализировать сервисы режима пользователя, установленные в режиме автоматической загрузки. Этот процесс может длиться уже после начала интерактивной работы пользователей. После инициализации сервисов загрузки считают успешным.

 

Выводы

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

· Загрузчиком ОС (boot loader) называют программу, вызванную кодом ВIOS во время выполнения процедуры начальной загрузки для создания образа ядра операционной системы в оперативной памяти.

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

 

Контрольные вопросы

 

1. Расскажите, как происходит аппаратная инициализация компьютера.

2. Объясните, что такое BIOS.

3. Расскажите о процедуре начальной занрузки BIOS.

4. Расскажите о программе Загрузчике ОС, её работе и особенностях.

5. Расскажите об особенностях загрузки ядра ОС.

6. Расскажите о двуэтапной загрузке, чем вызвана необходимость применения и её возможности.

7. Расскажите о подходах к реализации загрузки ядра.

8. Расскажите о загрузке компонентов системы.

9. Расскажите об особенностях загрузчика Windows ХР (кратко, основные этапы).

 

Лекция 3 Архитектура ОС


План лекции: 1.8 Базовые понятия архитектуры ОС

1.9 Реализация архитектуры ОС

1.10 Операционная система и её окружение

 

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

 

Монолитные системы

ОС, в которых все базовые функции сконцентрированы в ядре, называют монолитными системами.

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

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

Достоинства: Недостатки:

-простота разработки; -большой объем оперативной памяти занимаемый ОС;

-высокая скорость работы. -сбой какого либо модуля ОС приводит к сбою всей системы

Примеры: ОС с ядром UNIX такие как: LINUX, BSD

 

Системы с микроядром

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

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

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

Чтобы выполнить системный вызов, процесс (пользовательская программа) обращается к микроядру. Микроядро посылает серверу запрос, сервер выполняет работу и пересылает ответ назад, а микроядро переправляет его клиенту (рис. 1.2). Клиентами могут быть не только процессы пользователя, а и другие модули ОС.

Рис.1.2-Системный вызов в архитектуре с микроядром

Преимущества подхода системы с микроядром:

♦ небольшие размеры микроядра, которое упрощает его разработку и отладку;

♦ высокая надежность системы, вследствие того, что серверы работают в режиме пользователя и в них нет прямого доступа к аппаратному обеспечению;

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

Примером применения архитектуры с микроядром является Windows NT версий 3.1 и 3.5, а также ОС реального времени QNX.

 

 

Выводы

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

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

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

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

♦ Операционная система взаимодействует с прикладными программами. Она предоставляет набор системных вызовов для доступа к функциям, реализованным в ядре. Для прикладных программ системные вызовы вместе со средствами системных библиотек доступные через интерфейс программирования приложений (АРI).

 

Контрольные вопросы

Расскажите о важнейших функциях ОС.

1. Что является характерным признаком ядра ОС, особенности этого режима.

2. Режим пользователя. Что принадлежит этому системному программному

обеспечению.

3. Перечислите различные архитектуры ОС.

4. Расскажите о монолитных системах.

5. Расскажите о многоуровневых системах.

6. Расскажите о системах с микроядром.

7. Расскажите о концепции виртуальных машин.

8. Расскажите о средствах аппаратной поддержки ОС.

9. Расскажите о взаимодействии ОС и выполняемой программы.

 

 

Лекция 4

Модели процессов и потоков

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

♦ В однозадачних системах есть только одно адресное пространство, в котором в каждый момент времени может выполняться один поток.

♦ В некоторых встроенных системах тоже есть одно адресное пространство (один процесс), но в нем разрешенное выполнение многих потоков. В этом случае можно организовывать параллельные вычисления, но защита данных приложения не реализованы.

♦ В системах, подобный традиционным версиям UNIX, допускается наличие многих процессов, но в рамках адресного пространства процесса выполняется только один поток. Это традиционная однопоточная модель процессов. Понятие потока в данной модели не применяют, а используют термин «переключение между процессами», «планирование выполнения процессов», «последовательность команд процесса» и т.п. (здесь под процессом понимают его единый поток).

♦ В большинстве современных ОС (таких, как линия Windows ХР, современные версии UNIX) может быть много процессов, а в адресном пространстве каждого процесса - много потоков. Эти системы поддерживают многопотоковость или реализуют модель потоков. Процесс в такой системе называют многопотоковым процессом.

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

 

Понятие параллелизма

Использование нескольких потоков в приложении означает внесение у него параллелизма. Параллелизм - это одновременное (с точки зрения прикладного программиста) выполнение действий разными фрагментами кода приложения.

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

 

Виды параллелизма

Можно выделить такие основные виды параллелизма:

♦ параллелизм многопроцесорних систем;

♦ параллелизм операций ввода-вывода;

♦ параллелизм взаимодействия с пользователем;

♦ параллелизм распределенных систем.

Лекция 5 Архитектура ОС


План лекции: 3.1 Прерывания. Назначение и типы

3.2 Механизм прерываний

3.3 Обработка прерываний

 

Механизм прерываний

Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы.

Аппаратная поддержка преры­ваний имеет свои особенности, зависящие от типа процессора и других аппарат­ных компонентов, передающих сигнал запроса прерывания от внешнего устрой­ства к процессору (таких, как контроллер внешнего устройства, шины подклю­чения внешних устройств, контроллер прерываний, являющийся посредником между сигналами шины и сигналами процессора). Особенности аппаратной реализации прерываний оказывают влияние на средства программной поддержки прерываний, работающие в составе ОС.

Существуют два основных способа, с помощью которых шины выполняют пре­рывания: векторный (vectored) и опрашиваемый (polled). В обоих способах про­цессору предоставляется информация об уровне приоритета прерывания на шине подключения внешних устройств. В случае векторных прерываний в процессор передается также информация о начальном адресе программы обработки возник­шего прерывания — обработчика прерываний.

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

При использовании опрашиваемых прерываний процессор получает от запросив­шего прерывание устройства только информацию об уровне приоритета преры­вания (например, номере IRQ на шине ISA или номере IPL на шине SBus компью­теров SPARC). С каждым уровнем прерываний может быть связано несколько устройств и соответственно несколько программ — обработчиков прерываний. При возникновении прерывания процессор должен определить, какое устройст­во из тех, которые связаны с данным уровнем прерываний, действительно запро­сило прерывание. Это достигается вызовом всех обработчиков прерываний для данного уровня приоритета, пока один из обработчиков не подтвердит, что пре­рывание пришло от обслуживаемого им устройства. Если же с каждым уровнем прерываний связано только одно устройство, то определение нужной программы обработки прерывания происходит немедленно, как и при векторном прерывании. Опрашиваемые прерывания поддерживают шины ISA, EISA, MCA, PCI и Sbus.

Механизм прерываний некоторой аппаратной платформы может сочетать век­торный и опрашиваемый типы прерываний. Типичным примером такой реализа­ции является платформа персональных компьютеров на основе процессоров Intel Pentium. Шины PCI, ISA, EISA или MCA, используемые в этой платформе в ка­честве шин подключения внешних устройств, поддерживают механизм опра­шиваемых прерываний. Контроллеры периферийных устройств выставляют на шину не вектор, а сигнал запроса прерывания определенного уровня IRQ. Одна­ко в процессоре Pentium система прерываний является векторной. Вектор пре­рываний в процессор Pentium поставляет контроллер прерываний, который ото­бражает поступающий от шины сигнал IRQ на определенный номер вектора.

Вектор прерываний, передаваемый в процессор, представляет собой целое число в диапазоне от 0 до 255, указывающее на одну из 256 программ обработки пре­рываний, адреса которых хранятся в таблице обработчиков прерываний. В том случае, когда к каждой линии IRQ подключается только одно устройство, проце­дура обработки прерываний работает так, как если бы система прерываний была чисто векторной, то есть процедура не выполняет никаких дополнительных опросов для выяснения того, какое именно устройство запросило прерывание. Однако при совместном использовании одного уровня IRQ несколькими уст­ройствами программа обработки прерываний должна работать в соответствии со схемой опрашиваемых прерываний, то есть дополнительно выполнить опрос всех устройств, подключенных к данному уровню IRQ.

 

Приоритет прерываний

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

Приоритеты могут обслуживаться как относительные и абсолютные.

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

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

Упорядоченное обслуживание запросов прерываний наряду со схемами приори­тетной обработки запросов может выполняться механизмом маскирования запро­сов. Собственно говоря, в описанной схеме абсолютных приоритетов выполняет­ся маскирование — при обслуживании некоторого запроса все запросы с равным или более низким приоритетом маскируются, то есть не обслуживаются. Схема маскирования предполагает возможность временного маскирования прерываний любого класса независимо от уровня приоритета.

 

Обработка прерываний

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

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

2. Автоматически сохраняется некоторая часть контекста прерванного потока, которая позволит ядру возобновить исполнение потока процесса после обра­ботки прерывания. В это подмножество обычно включаются значения счетчи­ка команд, слова состояния машины, хранящего признаки основных режимов работы процессора (пример такого слова — регистр EFLAGS в Intel Pentium), а также нескольких регистров общего назначения, которые требуются про­грамме обработки прерывания. Может быть сохранен и полный контекст про­цесса, если ОС обслуживает данное прерывание со сменой процесса. Однако в общем случае это не обязательно, часто обработка прерываний выполняется без вытеснения текущего процесса[1].

3. Одновременно с загрузкой адреса процедуры обработки прерываний в счетчик команд может автоматически выполняться загрузка нового значения слова состояния машины (или другой системной структуры, например селектора кодового сегмента в процессоре Pentium), которое определяет режимы работы процессора при обработке прерывания, в том числе работу в привилегирован­ном режиме. В некоторых моделях процессоров переход в привилегированный режим за счет смены состояния машины при обработке прерывания является единственным способом смены режима. Прерывания практически во всех муль­типрограммных ОС обрабатываются в привилегированном режиме модулями ядра, так как при этом обычно нужно выполнить ряд критических операций, от которых зависит жизнеспособность системы, — управлять внешними устройст­вами, перепланировать потоки и т. п.

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







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.172.213 (0.024 с.)