Главная » Просмотр файлов » Гордеев А.В. Операционные системы (2-е изд., 2004)

Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 33

Файл №1186250 Гордеев А.В. Операционные системы (2-е изд., 2004) (Гордеев А.В. Операционные системы (2-е изд., 2004)) 33 страницаГордеев А.В. Операционные системы (2-е изд., 2004) (1186250) страница 332020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

Значения регистров CS и IP сохраняются в стеке вслед за PSW.4. Вычисляется адрес вектора прерывания и из вектора, соответствующего номе­ру прерывания, загружаются новые значения IP и CS.Когда системная подпрограмма принимает управление, она может разрешить сно­ва маскируемые прерывания командой STI (Set Interrupt Flag — установить флагпрерываний), которая переводит флаг IF в состояние 1, что разрешает микропро­цессору вновь реагировать на прерывания, инициируемые внешними устройства­ми, поскольку стековая организация допускает вложение прерываний друг в друга.Закончив работу, подпрограмма обработки прерывания должна выполнить командуIRET (Interrupt Return), которая извлекает из стека три 16-разрядных значения изагружает их в указатель команд IP, регистр сегмента команд CS и регистр PSWсоответственно.

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

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

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

Прежде всего, вместо таблицы векторов, о которой МЫПистема прерываний 32-разрядных микропроцессоров J80x86125говорили выше, она имеет дело с таблицей дескрипторов прерываний (InterruptDescriptor Table, IDT). Дело здесь не столько в названии таблицы, сколько в том,что таблица ЮТ представляет собой не таблицу с адресами обработчиков преры­ваний, а таблицу со специальными системными структурами данных (дескриптора­ми), доступ к которой со стороны пользовательских (прикладных) программ невоз­можен.

Только сам микропроцессор (его система прерываний) и код операционнойсистемы могут получить доступ к этой таблице, представляющей собой специаль­ный сегмент, адрес и длина которого содержатся в регистре IDTR (см. рис. 4.2).Этот регистр аналогичен регистру GDTR в том отношении, что он инициализиру­ется один раз при загрузке системы. Интересно заметить, что в реальном режимеработы регистр IDTR также указывает на адрес таблицы прерываний, но при этом,как и в процессоре i8086, каждый элемент таблицы прерываний (вектор) занимаетвсего 4 байт и содержит 32-разрядный адрес в формате селектор -.смещение (CS:IP).Начальное значение этого регистра равно нулю, но в него можно занести и другоезначение.

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

Благодаря этому пользова­тели уже не могут сами изменить обработку прерываний, которая предопределя­ется системным программным обеспечением.Дескриптор прерываний может относиться к одному из трех типов:Qкоммутатор прерывания (interrupt gate);Qкоммутатор перехвата (trap gate);Q коммутатор задачи (t,ask gate).Нри обнаружении запроса на прерывание и при условии, что прерывания разрешены,процессор действует в зависимости от типа дескриптора (коммутатора), соответствуюЩего номеру прерывания.

Первые два'типа дескрипторов прерываний вызываютПереход на соответствующие сегменты кода, принадлежащие виртуальному адресноМУ пространству текущего вычислительного процесса. Поэтому про них говорят, что°работка прерываний по этим дескрипторам осуществляется под контролем (в конексте) текущей задачи. Последний тип дескриптора (коммутатор задачи) вызывает°лное переключение процессора на новую задачу со сменой всего контекста в соответвии с сегментом состояния задачи (TSS). Рассмотрим оба варианта.126Глава 4. Особенности архитектуры м и к р о п р о ц е с с о р о в i80x86Обработка прерываний в контексте текущей задачиОбработку прерывания в контексте текущей задачи поясняет рис. 4.12.Прерывание (исключение)Регистр EIPРегистр дескрипторасегментаРегистр CS1Индекс iРегистр EFLAGSТаблицаIDT4Дескриптор 225RPLТаблица GDTДескриптор МTi=0— •СтекДескриптор iДескриптор jДескриптор 0Таблица LDTДескриптор 1Дескриптор М2.3Дескриптор О2.2•Ti - 1Дескриптор i2.1Дескриптор 0Р и с .

4 . 1 2 . Схема передачи управления при прерывании в контексте текущей задачиПри возникновении прерывания процессор по номеру прерывания индексируеттаблицу IDT, то есть адрес соответствующего коммутатора определяется путемсложения содержимого поля адреса в регистре IDTR и номера прерывания, умно­женного на 8 (справа к номеру прерывания добавляется три нуля). Полученныйдескриптор анализируется, и если его тип соответствует коммутатору перехватаили коммутатору прерывания, то выполняются следующие действия.1.

В стек на уровне привилегий текущего сегмента кода помещаются:• значения SS и SP, если уровень привилегий в коммутаторе выше уровняпривилегий ранее исполнявшегося кода;Q регистр флагов EFLAGS;• регистры CS и IP.2. Если рассматриваемому прерыванию соответствовал коммутатор прерывания,то запрещаются прерывания (устанавливается флаг IF = 0 в регистре EFLAGS)В случае коммутатора перехвата флаг прерываний не сбрасывается, и обработ­ка новых прерываний на период обработки текущего прерывания тем самым незапрещается.рлгугема прерываний 32-разрядных микропроцессоров J80x86127Я Поле селектора из дескриптора прерывания используется для индексированиятаблицы дескрипторов задачи.

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

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

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

Сохраняются все рабочие регистры процессора в текущем сегменте TSS, базовыйадрес этого сегмента берется в регистре TR (см. раздел «Адресация в 32-раз­рядных микропроцессорах i80x86 при работе в защищенном режиме»).2. Текущая задача отмечается как занятая.3. По селектору из коммутатора задачи выбирается новый сегмент TSS (поле се­лектора помещается в регистр TR) и загружается состояние новой задачи. На­помним, что загружаются значения регистров LDTR, EFLAGS, восьми регист­ров общего назначения, регистра EIP и шести сегментных регистров.4- Устанавливается бит NT (Next Task),.* В поле обратной связи TSS помещается селектор прерванной задачи."• С помощью значений CS:IP, взятых из нового сегмента TSS, обнаруживается11выполняется первая команда обработчика прерывания.аким образом, коммутатор задачи дает указание процессору произвести переклюние задачи, и обработка прерывания осуществляется под контролем отдельной1ешней задачи.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6549
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее