Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
777.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
6.49 Mб
Скачать

Вариационное исчисление

Рассмотрим данную задачу оптимального управления как задачу Лагранжа вариационного исчисления. Для нахождения необходимых условий экстремума применим теорему Эйлера-Лагранжа. Функция Лагранжа имеет вид: , где  — граничные условия. Лагранжиан имеет вид: , где , ,  — n-мерные вектора множителей Лагранжа.

Необходимые условия экстремума, согласно этой теореме, имеют вид:

  • стационарность по u: , (3)

  • стационарность по x, уравнение Эйлера: (4)

  • трансверсальность по x: , (5)

Необходимые условия (3-5) составляют основу для определения оптимальных траекторий. Написав эти уравнения, получаем двухточечную граничную задачу, где часть граничных условий задана в начальный момент времени, а остальная часть — в конечный момент.

64. Назначение системы прерываний эвм. Синхронные и асинхронные, внутренние и внешние прерывания.

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

Программа-обработчик прерывания (ПОП), как правило, является программой операционной системы, резидентной в оперативной памяти. Некоторые операционные системы (например, MS/DOS), позволяют заменить системный обработчик на пользовательский, либо соединить системный и пользовательский обработчики. Вся ответственность за неверные действия в этом случае лежит на пользователе. Неправильная работа обработчика прерываний приводит к разрушению вычислительного процесса, порче информации и «зависанию» системы. Поэтому в развитых операционных системах имеются средства контроля и восстановления информации при сбоях.

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

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

Разновидностью прерываний являются исключения – реакция на внутренние события в самом процессоре, такие, как неизвестный код операции, недействительный адрес памяти, деление на ноль, ошибка доступа в процессорах с виртуальной памятью и т.д. Исключения обрабатываются аналогично внешним прерываниям, с той лишь разницей, что исключение приводит к прекращению выполнения текущей команды, и сохранённый СчАК указывает на прерванную инструкцию. Во время обработки исключения ПОП может исправить неверную инструкцию, или изменить внешнюю ситуацию (например, подкачать с диска требуемую виртуальную страницу). Возврат из обработчика исключения приводит к попытке повторного исполнения команды.

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

Принято различать следующие типы прерываний:

  • Внутренние (т.е. исключения);

  • Внешние (сигнал от таймера, клавиатуры, мыши, диска, линии связи);

  • От ввода-вывода (сигнал об окончании операции на внешнем устройстве (ВУ));

  • Программные;

  • От схем контроля.

Программные прерывания вызываются специальной командой (в МП 80х86 это команда INT) и являются специфической формой вызова подпрограммы. В данном случае программа операционной системы вызывается по её номеру, заданному в виде операнда команды, а параметры передаются через регистры. Это позволяет любой программе обращаться к системным функциям, не зная адреса исполняющей их программы. Кроме того, пользовательская программа не требует модификации при изменении системного объекта-исполнителя.

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

Контроллер прерываний и микропроцессоры 80х86.

Сигналы внешних аппаратных прерываний поступают в микропроцессор не непосредственно, а через контроллер прерываний. В качестве него используется микросхема Intel8259a, которая имеет 8 входных линий, называемых линиями запроса прерывания (Interrupt Request, IRQ). Обычно в системе бывает 2 таких микросхемы, одна из которых (ведущая) подключается непосредственно к микропроцессору, а вторая (ведомая) – к входу IRQ2 ведущей микросхемы. Таким образом, всего рассматривается 15 входных линий запросов прерываний от внешних устройств. Иногда этого не хватает, и на одной линии запроса «висят» несколько устройств, вследствие чего операционной системе приходится прилагать дополнительные усилия, чтобы разобраться, откуда пришёл сигнал.

Выходами микросхемы контроллера являются сигнал INT, идущий на вход микропроцессора (CPU), и номер вектора прерывания. Обратная связь микропроцессора с контроллером осуществляется с помощью сигнала INTA. Схема сопряжения контроллера (CIED, Controller Interrupts of External Units, назовём его так) и CPU (Central Processing Unit, центрального процессора) приводится на следующей схеме функционирования (рис.1)

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

Во-первых, в схеме контроллера присутствует регистр маски, биты которого могут быть установлены программно через порт 21h (A1h для ведомого контроллера). Наличие 1 в соответствующем бите этого 8-битного регистра запрещает прохождение сигнала от соответствующего устройства, 0 – разрешает.

Во-вторых, поступивший в контроллер запрос на обработку прерывания блокирует в нём прохождение сигналов от устройств текущего и более низкого приоритета до тех пор, пока микропроцессор не разблокирует их сигналом INTA, возникающим при подаче команды EOI (END OF INTERRUPT). Эта команда реализуется засылкой специального кода (20h) в порты 20h ведущего и A0h ведомого контроллера. Сигналы, поступившие на неразблокированные линии контроллера приоритеты IRQ8 – IRQ15 расположены между приоритетами IRQ1 и IRQ3. Однако контроллер прерываний ­– программируемое устройство, и все его регистры (маски, приоритеты, номера векторов прерываний от внешних устройств) могут быть изменены при загрузке операционной системы, и даже во время работы.

В третьих, сигнал прерывания на выходе из контроллера возбуждает линию INT, и одновременно формирует на другой линии номер вектора прерывания. Этот номер формируется из номера IRQ и так называемого «базового вектора», который равен 8 для ведущей и 70h для ведомой микросхемы (в реальном режиме; в защищённом режиме WINDOWS перепрограммирует эти номера.) По номеру прерывания CPU определяет вектор прерывания из таблицы векторов прерываний (ТВП, или IDT – Interrupt Data Table), расположенной в первом килобайте основной памяти (реальный режим). Структура ТВП следующая:

Табл. 1

IP255

CS255

. . .

IP1

CS1

IP0

CS0

Каждая строка таблицы содержит два слова (4 байта) – новое содержимое регистров IP и CS при входе в программу – обработчик, то есть её косвенный адрес. Эти значения автоматически загружаются в названные регистры при поступлении запроса на обработку прерывания. Старое содержимое регистров FLAGS, CS и IP сохраняется в стеке. В новом регистре FLAGS аппаратно обнуляется бит IF, что вызывает запрет на поступление прерываний от любых внешних устройств. Программа-обработчик прерывания (ПОП), допускающая обработку вложенных прерываний (т.е. если её можно прервать для выполнения обработки более приоритетного события) должна сама установить флаг IF в 1 в той точке своего исполнения, начиная с которой её можно прерывать.

В конце своего исполнения обработчик события должен разблокировать контроллер для данного и более низких приоритетов, послав в него сигнал EOI, и вернуть управление в прерванную программу командой IRET, восстанавливающей из стека регистры FLAGS, CS и IP.

Для защищённого режима принцип обработки остаётся тем же самым, но существуют следующие отличия:

  1. ТВП может быть расположена в любом месте ОП. Указателем на неё является регистр IDTR;

  2. Строками ТВП являются 8-байтные записи, содержащие более подробную информацию (вместо нового IP там задается EIP, а также ряд индикаторов);

  3. Сами события делятся на сбои (ошибки), ловушки и аварии;

  4. В некоторых случаях в вершине стека сохраняется код ошибки.

  5. При входе в обработчик учитываются так называемые «уровни привилегий» прерванной задачи и обработчика события.

Детально работу в расширенном режиме мы не рассматриваем.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]