Как процессор «узнает», где находится обработчик, соответствующий пришедшему запросу прерывания?
Стр 1 из 2Следующая ⇒ Что такое «контекст программы»? Понятие контекста (вектора состояния): - это в каждой конкретной точке выполнения программы содержимое всех переменных элементов (регистров, ячеек памяти), которое требуется установить/восстановить, чтобы стало возможным запустить выполнение программы с этой точки.
Зачем (когда) требуется сохранение или восстановление контекста? Естетственный способ исключить влияние изменения контекста – непосредственно перед вызовом ПП или сразу после входа в ПП сохранять текущий контекст, а при выходе из ПП все восстанавливать назад. Проблема сохранения-восстановления контекста возникает и в других ситуациях (прерывания, переключение задач).
Не ответ на вопрос. но просто полезно знать: 65. Какие команды помогают программисту сохранять-восстанавливать контекст - приведите примеры для архитектур х86? Команды pusha, popa - они сохраняют в стеке - восстанавливают регистры данных и адресные в таком порядке: (e)ax, (e)cx, (e)dx, (e)bx, (e)sp, (e)bp, (e)si, (e)di. При этом значение (e)sp берется то, которое было до начала выполнения команды pusha.
Что такое «стековый кадр»? В большинстве процессоров для а) сохранения-восстановления контекста, б) связи по данным (передачи параметров и возврата значений) в) выделения памяти под локальные переменные используется фрагмент стека, называемый стековым кадром.
Каковы недостатки способа синхронизации с использованием опроса готовности (поллинга)?
При ожидании готовности нерационально расходуется время процессора.
В чем состоят преимущества использования механизма прерывания для синхронизации программы с внешним событием? Можно проводить опрос готовности ВнУ к обмену не постоянно, следовательно время процессора расходуется более рационально.
75. Укажите последовательность событий, происходящих при входе в прерывание. При возникновении события на которое надо отреагировать (запроса на прерывание), обычно процессор автоматически (без участия программиста) выполняет следующие действия: 1. Заканчивается выполнение текущей команды (иногда прерывается, если команда длинная, а иногда выполняется еще одна или несколько команд). 2. Анализируется, разрешено ли прерывание. (Если нет, то переход к выполнению следующей команды). 3. Если запросов несколько, принимается решение, который запрос обслуживать (разрешение приоритета priority resolving). 4. При магистральной схеме запросов: 5. Источник запроса передает процессору идентифицирующую его информацию (каждый источник запроса может иметь собственную программу обработки, и процессор должен узнать, какой обработчик использовать). 6. Процессор сохраняет информацию о текущем контексте (текущий вектор состояния - почти всегда неполностью) и затем - 7. Адрес перехода на программу обработки прерывания хранится в определенной для каждого источника запроса прерывания области памяти, называемой вектором прерывания. Процессор загружает начальный адрес программы обработки прерывания из вектора прерывания в счетчика команд.
8. Для возврата из прерывания в системе команд обычно есть специальная команда "возврат из прерывания" (мнемоника iret или reti или rti). По этой команде восстанавливается контекст прерванной программы в том объеме, в котором он быь сохранен при входе в перывание (п.6). Эта команда должна быть последней исполняемой командой обработчика. Приведенное описание соответствует обработке внешнего аппаратного прерывания. В случае, если причина прерывания - внутреннее событие процессора (исключительная ситуация - exception), то этапы 4 и 5 отсутствуют, как в случае радиальных прерываний.
Какова может быть судьба запроса, пришедшего в период, когда вход в прерывание для процессора запрещено? Возникшие в этот период запросы могут быть потеряны, либо могут ждать обслуживания, которое произойдет, когда прерывания будут разрешены - это зависит от устройства конкретного процессора и от свойств входов запроса прерываний. В некоторых процессорах можно программно управлять свойствами входа: запоминается или теряется запрос, который приходит в период, когда прерывания процессору запрещены. В системе команд обычно есть команды, запрещающие и разрешающие прерывание. Кроме того, внешние устройства-источники запросов позволяют программно разрешить/запретить прерывание от данного устройства (прерывания от других устройств при этом будут обрабатываться). 16. Пусть процессор находится в процедуре обработки некоего прерывания, и в этот период приходит запрос от источника с более высоким приоритетом. Произойдет ли немедленно прерывание по второму запросу, и если ответ неоднозначен, то от чего он зависит? ?????-79. Пусть процессор находится в процедуре обработки некоего прерывания, и в этот период приходит запрос от источника с более высоким приоритетом. Произойдет ли немедленно прерывание по второму запросу, и если ответ неоднозначен, то от чего он зависит?
В большинстве процессоров при входе в прерывание повторное (вложенное) прерывание автоматически запрещается. Обработчик может разрешить прерывание соответствующей командой (например в процессорах х86 это команда sti). В этом случае возможно "вложенное" прерывание, в том числе и от этого же источника, но для этого обработчик прерывания должен быть реентерабельным, т.е. допускать рекурсивный вызов. 17. Что такое приоритеты источников прерываний? Что такое приоритеты источников прерываний? Приоритет определяет в каком порядке будут обрабатываться запросы на прерывание.
Как процессор «узнает», где находится обработчик, соответствующий пришедшему запросу прерывания? В случае магистральной архитектуры устройство обычно передает по магистрали информацию о себе процессору. Эта информация обычно содержит условный код (номер) источника запроса, по которому процессор способен определить адрес памяти, содержащий информацию о местонахождении в памяти обработчика.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|