Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

Понятие прерывания. Последовательность действий при обработке прерываний. Классы прерываний. Рабочая область прерываний. Вектор прерывания. Стандартные программы обработки прерываний. Приоритеты прерываний. Вложенные прерывания.

Прерывания, их назначение и типы. Механизм прерываний

Постановка проблемной ситуации (Если отключили электричество, то какого вида произойдет прерывание?)

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

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

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

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

Механизм обработки прерываний независимо от архитектуры вычислительной системы включает следующие элементы Механизма обработки прерываний:

1. Установление факта прерывания (прием сигнала на прерывание) и иденти­фикация прерывания (в операционных системах иногда осуществляется по­вторно, на шаге 4).

2. Запоминание состояния прерванного процесса. Состояние процесса определя­ется прежде всего значением счетчика команд (адресом следующей команды, который, например, в i80x86 определяется регистрами CS и IP — указателем команды), содержимым регистров процессора и может включать также спецификацию режима (например, режим пользовательский или при­вилегированный) и другую информацию.

3. Управление аппаратно передается подпрограмме обработки прерывания. В про­стейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информация из сло­ва состояния. В более развитых процессорах, например в том же i80286 и по­следующих 32-битовых микропроцессорах, начиная с i80386, осуществляется достаточно сложная процедура определения начального адреса соответствую­щей подпрограммы обработки прерывания и не менее сложная процедура инициализации рабочих регистров процессора.

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

5. Обработка прерывания. Эта работа может быть выполнена той же подпро­граммой, которой было передано управление на шаге 3, но в ОС чаще всего она реализуется путем последующего вызова соответствующей подпрограммы.

6. Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4).

7. Возврат в прерванную программу.

Шаги 1-3 реализуются аппаратно, а шаги 4-7 — программно.

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

Итак, главные функции механизма прерываний:

· распознавание или классификация прерываний;

· передача управления соответственно обработчику прерываний;

· корректное возвращение к прерванной программе.

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

Стек – среда для размещения данных для возврата из подпрограмм, а так же их аргументы и автоматические данные.

Фраза «По принципу стека» означает: последним пришел, первым обслужен или первым пришел, последним обслужен.

Вектор прерывания – специальная область памяти, где находится адрес прерывающейся программы.

Пример: К компьютеру подключен холодильник. Когда холодильник захочет обратить на себя внимание процессора, он пошлет на одну из его ножек специальный сигнал прерывания, а потом пошлет число 179. Получив это число, процессор «заглядывает» в вектор прерываний и находит там адрес программы, обслуживающий холодильник. Он перейдёт по этому адресу и начнет работать с этой программой.

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

Всякое устройство, внутреннее или внешнее, работает с процессором, используя одно из прерываний.


 

 

Рис. 3. Обработка прерывания

 

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

Внешние прерывания вызываются асинхронными событиями, которые происхо­дят вне прерываемого процесса, например:

· прерывания от таймера;

· прерывания от внешних устройств (прерывания по вводу/выводу);

· прерывания по нарушению питания;

· прерывания с пульта оператора вычислительной системы;

· прерывания от другого процессора или другой вычислительной системы.

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

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

· при наличии в поле кода операции незадействованной двоичной комбинации;

· при делении на нуль;

· при переполнении или исчезновении порядка;

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

Супервизор!!!!! – это супервизор операционной системы — ее центральный управляющий моду­ль

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

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

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

Контрольные вопросы: – Понятие прерывание – Последовательность действий при обработке прерываний – Классы прерываний – Постановка проблемной ситуации (Если отключили электричество, то какого вида произойдет прерывание?) – Зарисовка на доске схемы прерываний   Домашнее задание: Конспект лекций

Лекция 8 (2/16)

Проверка Д/З: 1).5 чел. спросить по предыдущему (см. выше)

Диспетчеризация и приоретизация прерываний в ОС

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

 

Рис. 4. Распределение прерываний по уровням приоритета

 

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

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

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

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

· с абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на вре­мя обработки прерывания замаскировать все запросы с более низким приори­тетом. При этом возможно многоуровневое прерывание, то есть прерывание программ обработки прерываний. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса;

· по принципу стека, или, как иногда говорят, по дисциплине LCFS (last come ferst served) – последним пришел – первым обслужен.

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

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

 

Вектор прерывания.!!!!!!

Процессор –> Шина –> Внешнее устройство.

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

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

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

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

 

 

Контрольные вопросы: – Понятие прерывание – Понятие приоритет   Домашнее задание: Конспект лекций

 


Лекция 9 (2/18)

Проверка Д/З: 1). У 3 чел. Проверить конспекты 2). 5 чел. спросить по предыдущему (см. выше)

Тема 2.3 Планирование процессов

Процессы и потоки. Состояния процессов и потоков.

Понятия: задание, процесс, планирование процесса. Состояния существования процесса. Диспетчеризация процесса. Блок состояния процесса. Алгоритм диспетчеризации. Способ выбора процесса для диспетчеризации. Понятие события. Блок состояния события. Механизм установления соответствия между процессом и событием.

ПЛАНИРОВЩИК!!!!!!!






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.