Технология прерываний в ос. технология прерываний. Занятие по усвоению нового материала Вид занятия
Скачать 0.8 Mb.
|
Специальность: 09.02.03 Программирование в компьютерных системах 09.02.01 Компьютерные системы и комплексы Преподаватель: Машенцева Г.В. Дисциплина: ОП.01 Операционные системы ОП.07 Операционные системы и среды Тема раздела: Раздел 2. Архитектуры современных операционных систем Тема занятия: Прерывания. Тип занятия: Занятие по усвоению нового материала Вид занятия: комбинированный Цель курса: Формируемые общие компетенции: ОК 2. Организовывать собственную деятельность, выбирать типовые методы и способы выполнения профессиональных задач, оценивать их эффективность и качество. ОК 4. Осуществлять поиск и использование информации, необходимой для эффективного выполнения профессиональных задач, профессионального и личностного развития. Цель занятия: формирование ОК через освоение студентами её компонентов Задачи урока: Обучающая: Сформировать у учащихся понятия «прерывания», «маски ». Ознакомить учащихся с механизмом обработки прерываний , показать приоритеты прерываний. Показать роль практики как источника развития знаний и критерия истины. Формирование мотивации и опыта учебно-познавательной и практической деятельности. Развивающая: способствовать развитию умения анализировать, выдвигать гипотезы, предположения, строить прогнозы, наблюдать и экспериментировать; способствовать развитию логического мышления; развитие умения выражать речью результаты собственной мыслительной деятельности. Воспитательная: способствовать формированию научного мировоззрения; способствовать воспитанию: ответственного отношения к труду; культуры мышления и речи; пробуждение познавательного интереса к предмету и окружающим явлениям; развитие способности к сотрудничеству, общению, работе в коллективе; формирование умений критически, но объективно оценивать предметы, явления, поступки и действия (свои и чужие). Междисциплинарные связи: информатика, архитектура. Технологии обучения: Технология развития критического мышления Методы и приемы: наглядное представление учебного материала, аудиосредства, презентация. План проведения занятия: Организация начала урока (2 мин.); Активизация знаний (15 мин) Формирование новых знаний и умений (45мин.); Закрепление изученного (15 мин) Подведение итогов урока (2 мин.). Домашнее задание 1 мин. Ход занятия. Организация начала урока Добиться дисциплины. Проверить готовность студентов к уроку. Мобилизовать внимание. 2.Актуализация знаний индивидуальные задания по карточкам Формирование новых знаний и умений Обработка прерываний Понятие прерывания Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состояния, возникающие при работе процессора. Таким образом, прерывание — это принудительная передача управления от выполняемой программы к системе (а через нее — к соответствующей программе обработки прерывания), происходящая при возникновении определенного события. . Основная цель введения прерываний — реализация асинхронного режима работы и распараллеливание работы отдельных устройств вычислительного комплекса. Механизм прерываний реализуется аппаратно-программными средствами. Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут быть самыми разными, но все они имеют одну общую особенность — прерывание непременно влечет за собой изменение порядка выполнения команд процессором. Последовательность действий при обработке прерываний Механизм обработки прерываний независимо от архитектуры вычислительной системы включает следующие элементы: Шаг1. Установление факта прерывания (прием сигнала на прерывание) и идентификация прерывания (в операционных системах иногда осуществляется повторно, на шаге 4). Шаг 2. Запоминание состояния прерванного процесса. Состояние процесса определяется прежде всего значением счетчика команд Шаг 3. Управление аппаратно передается подпрограмме обработки прерывания. В простейшем случае в счетчик команд заносится начальный адрес подпрограммы обработки прерываний, а в соответствующие регистры — информация из слова состояния. Шаг 4. Сохранение информации о прерванной программе,. В некоторых вычислительных системах предусматривается запоминание довольно большого объема информации о состоянии прерванного процесса. Шаг 5. Обработка прерывания. Шаг 6. Восстановление информации, относящейся к прерванному процессу Шаг 7. Возврат в прерванную программу. Шаги 1-3 реализуются аппаратно, а шаги 4-7 — программно. На рис. 1.4 показано, что при возникновении запроса на прерывание естественный ход вычислений нарушается и управление передается программе обработки возникшего прерывания. При этом средствами аппаратуры сохраняется адрес той команды, с которой следует продолжить выполнение прерванной программы. После выполнения программы обработки прерывания управление возвращается прерванной ранее программе посредством занесения в указатель команд сохраненного адреса команды. Однако такая схема используется только в самых простых программных средах. Главные функции механизма прерываний: распознавание или классификация прерываний; передача управления соответственно обработчику прерываний; корректное возвращение к прерванной программе. Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрей. Одним из быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответствующих обработчиков. Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке — system stack. Классы прерываний Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса: внешние (их иногда называют асинхронными) и внутренние (синхронные). Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например: прерывания от таймера; прерывания от внешних устройств (прерывания по вводу/выводу); прерывания по нарушению питания; прерывания с пульта оператора вычислительной системы;прерывания от другого процессора или другой вычислительной системы. Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его операциями. Примерами являются следующие запросы на прерывания: при нарушении адресации (в адресной части выполняемой команды указан запрещенный или несуществующий адрес, обращение к отсутствующему сегменту или странице при организации механизмов виртуальной памяти); при наличии в поле кода операции незадействованной двоичной комбинации; при делении на нуль; при переполнении или исчезновении порядка; при обнаружении ошибок четности, ошибок в работе различных устройств аппаратуры средствами контроля. Могут еще существовать прерывания при обращении к супервизору ОС — в некоторых компьютерах часть команд может использовать только ОС, а не пользователи. Соответственно в аппаратуре предусмотрены различные режимы работы, и пользовательские программы выполняются в режиме, в котором эти привилегированные команды не исполняются. При попытке использовать команду, запрещенную в данном режиме, происходит внутреннее прерывание и управление передается супервизору ОС. К привилегированным командам относятся и команды переключения режима работа центрального процессора. Наконец, существуют собственно программные прерывания. Эти прерывания происходят по соответствующей команде прерывания, то есть по этой команде процессор осуществляет практически те же действия, что и при обычных внутренних прерываниях. Данный механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход в подпрограмму, а точно таким же образом, как и обычное прерывание. Этим обеспечивается автоматическое переключение процессора в привилегированный режим с возможностью исполнения любых команд. Приоритеты прерываний Сигналы, вызывающие прерывания, формируются вне процессора или в самом процессоре; они могут возникать одновременно. Выбор одного из них для обработки осуществляется на основе приоритетов, приписанных каждому типу прерывания. Очевидно, что прерывания от схем контроля процессора должны обладать наивысшим приоритетом (если аппаратура работает неправильно, то не имеет смысла продолжать обработку информации). На рис. 1.5 изображен обычный порядок (приоритеты) обработки прерываний в зависимости от типа прерываний. Учет приоритета может быть встроен в технические средства, а также определяться операционной системой, то есть кроме аппаратно реализованных приоритетов прерывания большинство вычислительных машин и комплексов допускают программно-аппаратное управление порядком обработки сигналов прерывания. Второй способ, дополняя первый, позволяет применять различные дисциплины обслуживания прерываний. Наличие сигнала прерывания не обязательно должно вызывать прерывание исполняющейся программы. Процессор может обладать средствами защиты от прерываний: отключение системы прерываний, маскирование (запрет) отдельных сигналов прерывания. Программное управление этими средствами (существуют специальные команда для управления работой системы прерываний) позволяет операционной системе регулировать обработку сигналов прерывания, заставляя процессор обрабатывать их сразу по приходу, откладывать их обработку на некоторое время или полностью игнорировать. Обычно операция прерывания выполняется только после завершения выполнения текущей команды. Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно. Чтобы обработать сигналы прерывания в разумном порядке им (как уже отмечалось) присваиваются приоритеты. Сигнал с более высоким приоритетом обрабатывается в первую очередь, обработка остальных сигналов прерывания откладывается. Программное управление специальными регистрами маски (маскирование сигналов прерывания) позволяет реализовать различные дисциплины обслуживания: с относительными приоритетами, то есть обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. После окончания обслуживания данного запроса обслуживается запрос с наивысшим приоритетом. Для организации такой дисциплины необходимо в программе обслуживания данного запроса наложить маски на все остальные сигналы прерывания или просто отключить систему прерываний; с абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приоритетом. При этом возможно многоуровневое прерывание, то есть прерывание программ обработки прерываний. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса; по принципу стека, или по дисциплине LCFS (last come first served — последним пришел — первым обслужен), то есть запросы с более низким приоритетом могут прерывать обработку прерывания с более высоким приоритетом. Дли этого необходимо не накладывать маски ни на один сигнал прерывания и не выключать систему прерываний. Для правильной реализации последних двух дисциплин нужно обеспечить полное маскирование системы прерываний при выполнении шагов 1-4 и 6-7. Это необходимо для того, чтобы не потерять запрос и правильно его обслужить. Многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса на другой. Стандартные программы обработки прерываний Из рис. 1.4 видно, что в подпрограмме обработки прерывания имеются две служебные секции. Это — первая секция, в которой осуществляется сохранение контекста прерванной задачи, который не смог быть сохранен на 2-м шаге, и последняя, заключительная секция, в которой, наоборот, осуществляется восстановление контекста. Для того чтобы система прерываний не среагировала повторно на сигнал запроса на прерывание, она обычно автоматически «закрывает» (отключает) прерывания, поэтому необходимо потом в подпрограмме обработки прерываний вновь включать систему прерываний.. Поскольку эти действия необходимо выполнять практически в каждой подпрограмме обработки прерываний, во многих операционных системах первые секции подпрограмм обработки прерываний выделяются в специальный системный программный модуль, называемый супервизором прерываний. С упервизор прерываний прежде всего сохраняет в дескрипторе текущей задачи рабочие регистры процессора, определяющие контекст прерываемого вычислительного процесса. Далее он определяет ту подпрограмму, которая должна выполнить действия, связанные с обслуживанием настоящего (текущего) запроса на прерывание. Наконец, перед тем как передать управление этой подпрограмме, супервизор прерываний устанавливает необходимый режим обработки прерывания. После выполнения подпрограммы обработки прерывания управление вновь передается супервизору, на этот раз уже на тот модуль, который занимается диспетчеризацией задач И уже диспетчер задач, в свою очередь, в соответствии с принятым режимом распределения процессорного времени (между выполняющимися процессами) восстановит контекст той задачи, которой будет решено выделить процессор. Рассмотренная нами схема проиллюстрирована на рис. 1.6. Как мы видим из рис здесь нет непосредственного возврата в прерванную ранее программу непосредственно из самой подпрограммы обработки прерывания. Для прямого непосредственного возврата достаточно адрес возврата сохранить в стеке, что и делает аппаратура процессора. При этом стек легко обеспечивает возможность возврата в случае вложенных прерываний, поскольку он всегда реализует дисциплину LCFS (lastcome — firstserved). В конкретных процессорах и в конкретных ОС могут существовать некоторые отступления от рассмотренной схемы и/или дополнения к ней. Например, в современных процессорах часто имеются специальные аппаратные возможности для сохранения контекста прерываемого процесса непосредственно в его дескрипторе, то есть дескриптор процесса (по крайней мере его часть) становится структурой данных, которую поддерживает аппаратура. Для полного понимания принципов создания и механизмов реализации рассматриваемых далее современных ОС необходимо знать архитектуру персональных компьютеров и, в частности, особенности системы прерывания. Вектор прерываний (Работа системы прерываний в реальном режиме работы процессора) В реальном режиме работы система прерываний использует понятие вектора прерывания. Термин «вектор прерываний» используется потому, что для указания адреса используется не одно значение, а два, то есть мы имеем дело не со скалярной величиной, а с «векторной». Итак, каждый вектор прерываний состоит из 4 байтов или 2 слов: первые два содержат новое значение для регистра IP, а следующие два — новое значение регистра CS. Таблица векторов прерываний занимает 1024 байта. Таким образом, в ней может быть задано 256 векторов прерываний. В процессоре 18086 эта таблица располагается на адресах OOOOOH-003FFH. Расположение этой таблицы в процессорах i80286 и старше определяется значением регистра IDTR — Interrupt Descriptor Table Register. При включении или сбросе процессора i80x86 этот регистр обнуляется. Однако при необходимости можно в регистре IDTR указать смещение и, таким образом, перейти на новую таблицу векторов прерываний. Таблица векторов прерываний заполняется (инициализируется) при запуске системы, но в принципе может быть изменена или перемещена. Каждый вектор прерывания имеет свой номер, называемый номером прерывания, который указывает его место в таблице. Этот номер, помноженный на четыре (сдвиг на два разряда влево и заполнение освободившихся битов нулями), и сложенный с содержимым регистра IDTR, дает абсолютный адрес первого байта вектора в оперативной памяти. Подобно вызову процедуры, прерывание заставляет микропроцессор сохранить в стеке информацию для последующего возврата, а затем перейти к группе команд, адрес которых определяется вектором прерывания. Таким образом, прерывание вызывает косвенный переход к своей подпрограмме обработки за счет получения ее адреса из вектора прерывания. Вложенные прерывания. Запрещение прерываний на время обслуживания любого периферийного устройства может привести к потере запросов прерываний быстродействующих, высокоприоритетных устройств, появляющихся при обслуживании устройств с меньшими приоритетами. Чтобы исключить такую ситуацию и обеспечить быструю реакцию процессора на прерывание, необходимо решить две проблемы: 1.каким-либо образом очень быстро идентифицировать запрос прерывания устройства с максимальным приоритетом из имеющихся запросов прерываний; 2.Фиксировать текущий приоритет (порог) любой выполняемой процессором программы (в том числе и всех подпрограмм обслуживания прерываний) и разрешать ее прерывание только при возникновении запроса прерывания с большим приоритетом. Прерывание подпрограмм обслуживания прерываний называется вложением прерываний (рис. 5-9). До момента ti выполняется основная программа, которой назначается наименьший приоритет, чтобы процессор реагировал на любые прерывания. В момент ti запрашивает обслуживания устройство У4 и процессор переходит на его подпрограмму обслуживания. В свою очередь, эта подпрограмма прерывается в момент iz запросом от устройства УЗ с более высоким приоритетом. Подпрограмма обслуживания УЗ в момент t3 прерывается запросом устройства У2 с еще более высоким приоритетом, и по завершении обслуживания У2 в момент t4 управление возвращается к продолжению обслуживания устройства УЗ. В интервале t5 —t6 аналогичным образом обслуживается запрос устройства У1 с максимальным приоритетом, после чего управление последовательно возвращается к прерванным подпрограммам обслуживания устройства УЗ и У4. Наконец, в момент t8 возобновляется выполнение основной программы. Разумеется, чтобы процессор реагировал на запросы прерываний, в начале каждой подпрограммы обслуживания их необходимо разрешать командой EI. Подведение итогов урока 1 .Определение прерываний. 2. Классы . 3. Основные характеристики . 4.Стандартные программы обработки прерываний. Домашнее задание: стр. 18-25 Левин |