Системно-управляемые прерывания — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Системно-управляемые прерывания

2020-03-31 83
Системно-управляемые прерывания 0.00 из 5.00 0 оценок
Заказать работу

 

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

Когда SMI принимается, процессор перейдет в режим управления системой (SMM). В этом режиме процедура обработчик с очень низким уровнем запускается для обработки ПУС.SMM, как правило, обеспечивается непосредственно прошивки для управления системой, часто BIOS или EFI.

ПУС наиболее часто используются, чтобы обеспечить аппаратное эмуляции. Типичным примером является для эмуляции флоппи-дисковода. Если нет дискеты устройство, подключенное к системе, виртуализированной сети управляемого эмуляции может быть использован вместо. Когда операционная система пытается получить доступ к флоппи-диск, SMI срабатывает и обработчик предоставляет операционную систему с сэмулированному вместо этого. Затем операционная система обрабатывает эмуляцию как будто бы он сам наследие устройство.Realtime может оказать негативное воздействие на ПУС, потому что они происходят без непосредственного участия операционной системы. Плохо написана программа обработки SMI может потреблять много миллисекунд процессорного времени, и операционная система не сможет упредить обработчик, если это необходимо. Эта ситуация создает периодические высокие задержки в противном случае хорошо настроенной, очень быстро реагирующей системой. К сожалению, из-за SMI обработчики могут быть использованы поставщиком для управления температурой процессора и управления скоростью вращения вентилятора, это не возможно отключить, чтобы воспользоваться ими. Вместо этого, рекомендуется, что бы продавец быть в курсе проблемы, предоставляя возможность разработчикам СПО гибкость в использовании «железы».

 


Расширенный программируемый контроллер прерываний

 

Расширенный программируемый контроллер прерываний (APIC) был разработан корпорацией Intel®, чтобы обеспечить возможность обработки больших объемов прерываний, чтобы каждый из них, чтобы быть программно направлен в конкретном наборе доступных процессоров (и для этого должна быть изменена соответственно), для поддержки связи между CPU и устранить необходимость в большом количестве устройств использовать одну линию прерываний.представляет собой серию устройств и технологий, которые работают вместе, чтобы сформировать, маршрут и обрабатывать большое количество аппаратных прерываний в масштабируемой и управляемой образом. Он использует сочетание местного APIC, встроенного в каждом ЦП системы, а также ряд ввода /-выходом устройство APIC, подключенных непосредственно к аппаратным устройствам. Когда аппаратное устройство генерирует прерывание, то обнаруживается IO-APIC он подключен к, а затем направляется через систему шины APIC для конкретного процессора. Операционная система знает, какие IO-APIC подключен к которому устройство, и какие именно линии прерываний в течение этого устройства из комбинации информационных источников. Во-первых, есть ACPI DSDT (Advanced интерфейс конфигурации и питания дифференцированная система Описание Таблица), что включает в себя информацию о конкретной проводки хост-системы материнской платы и периферийных компонентов. Во-вторых, устройство обеспечивает определенную информацию о имеющихся источников прерываний. Вместе, эти два набора данных предоставить информацию об общей иерархии прерываний.

Комплексные стратегии APIC на основе управления прерывания возможны, с системой устройство APIC, связанных в иерархиях и доставки прерываний процессоров в сбалансированной мере, а не нацелены на конкретную архитектуру процессоров или набор процессоров.

Заключение

 

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

Электрические, прерывание цифрового сигнала в процессор, что указывает на то что некоторое событие уже произошло. Например, получив серийный информацию, нажатие клавиши или таймер истекает все может генерировать прерывание. Расширение на нажатие клавиши, например, общий способ генерации прерывания является с почтенный 74C923 20-позиционной клавиатуры кодера. Когда вы нажимаете на клавишу, подавлением шумовых данных этого чипа Доступно (DA) сигнал становится высоким и остается там, пока вы не отпустите кнопку. Связывая этот сигнал на один из входов прерываний в ЦПУ, процессор может ощущать нажатие клавиши, как только это произойдет.

Прерывания бывают трех вариантах: по фронту, уровень-срабатывает и их комбинации. Как следует из названия, по фронту прерывания произойдет при переходе сигнала из одного состояния в другое, в первую очередь с нуля в One. Этот тип прерывания полезно для мимолетного сигнала, не длится достаточно долго для процессора признать его с помощью опроса I/O или когда сигнал может длиться долго, но значимое событие, когда, что первый сигнал становится активным, Опять же, нажатие является отличным примером приложения, которое для края вызвало прерывание. С точки зрения прерывание, в количество времени, вы держите ключ вниз не имеет значения. Все, что важным является определить, когда событие сначала происходит.

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

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

Обработка прерывания

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

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

После сохранения этого «закладки» информации, процессор изменяет значение ПК на фиксированном месте в памяти процессора, который содержит указатель на инструкции называемый подпрограмма обслуживания прерывания (ISR) - Это говорит процессору, как бороться с прерыванием. Когда ISR отделки, процессор восстанавливает первоначальную ПК и весело продолжает, как будто ничего не случилось.

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

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

При возникновении прерывания, процессор также посылает сигнал подтверждения аналогично памяти CPU читать сигнал, что другие части использования системы для размещения информации на шине данных процессора. Я видел вопрос процессоров от одного до четырех из них признают сигналы для каждого прерывания. Такие множественные сигналы позволяют процессору получить дополнительную информацию о прерывании из аппаратных средств.

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

Наконец, прерывание не будет полным без обсуждения того, что происходит внутри ISR. Есть два основных правила. Во-первых, ISR необходимо сохранить затем восстановить все данные процессора, памяти и ввода / вывода ресурсов, которые он использует. Например, эти данные могут включать в себя регистры процессора или памяти, такие как вспомогательной области для чисел с плавающей точкой пакета (многие из которых таковыми не являются). Во-вторых, он должен вернуться из ISR как можно быстрее. Причина для этого правила является то, что ISR не должны, как правило блокировать новые прерывания и до окончания ISR не запустится новое прерывание. Таким образом, ISR должна делать как можно меньше, для того что бы прерывания занимали мало времени, как это возможно. Для процессоров нормальным обычно будет ISR выполняющиеся в менее 40 мкс (данные с 1995). Очевидно, что 100-МГц Pentium и 4 МГц 8051 имеют очень разные временные масштабы, но концепция все та же выйти быстро!

 


 

Список литературы

 

1. https://ru.wikipedia.org/wiki/Прерывание

2. http://arduino.cc/en/Reference/attachInterrupt

.   https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_MRG/

.   https://kernel.org/doc/htmldocs/

 


 

Приложение

 

Драйвер клавиатуры на базе архитектуры Intel®

Решение, которое я нашел в том, чтобы написать что-то для прерывания клавиатуры и отключить регулярное обработчик прерывания клавиатуры в первую очередь. Так оно определяется как статический символ в исходных файлов ядра (в частности драйвера / / keyboard.c), нет никакого способа, чтобы восстановить его. Перед insmod'ing этот код, выполните на другом терминале sleep 120; reboot, если вы цените вашу файловую систему.

Этот код связывает себя IRQ 1, который является IRQ клавиатуры контролируемого в соответствии с архитектурой Intel. Потом, когда он получает прерывание клавиатуры, он читает состояние клавиатуры (это цель inb (0x64)) и скан-кода, который возвращает значение с клавиатуры. Затем, как только ядро думает, что это возможно, он выполняет got_char который дает код ключа, используемого (первые семь бит скан-кода) и была ли нажата кнопка на клавиатуре его (если 8-й бит равен нулю) или отпускании (тогда это один).

 

Пример 4.1. intrpt.c

 

/ *

* Intrpt.c - обработчик прерывания.

*

* Copyright (C) 2001 Питер Джей Зальцман

* /

 

/ *

* Необходимые заголовочные файлы

* /


 

/ *

* Стандартный модулей ядра

* /

#include <Linux / kernel.h> / * Мы делаем ядра работает * /

#include <Linux / module.h> / * В частности, модуль * /

#include <Linux / sched.h>

#include <Linux / workqueue.h>

#include <Linux / interrupt.h> / * Мы хотим прерывания * /

#include <ASM / io.h>

 

#define MY_WORK_QUEUE_NAME «WQsched.c»

struct workqueue_struct * my_workqueue;

 

/ *

* Это будет вызван ядром, как только это безопасно

* Сделать все нормально, разрешенный модулей ядра.

* /void got_char (void * scancode)

{(KERN_INFO «скан-код% X% С. \ п»,

(INT) * ((Char *) scancode) & 0x7F,

* ((Char *) scancode) & 0x80? «Отпущено»: «Нажата»);

}

 

/ *

* Эта функция ослуживает клавиатуру в прерывании. Он читает актуальны

* Информация от клавиатуры, а затем ставит не критичны по времени

* Часть в очереди. Это будет работать, когда ядро сочтет это возможным.

* /_t irq_handler (INT IRQ, void * dev_id, struct pt_regs * regs)

{

/ *

* Эти переменные являются статическими, так как они должны быть

* Доступны (через указатели) на нижней половине дня.

* /INT initialised = 0;unsigned char scancode;struct work_struct task;

unsigned char status;

 

/ *

* Чтение состояния клавиатуры

* /= inb (0x64);= inb (0x60);

(initialised == 0) {_WORK (& task got_char, & scancode);= 1;

} else {_WORK (& task got_char, & scancode);

}

_work (my_workqueue, & task);

 

return IRQ_HANDLED;

}

 

/ *

* Инициализация модуля - зарегистрировать обработчик прерываний

* /init_module ()

{_workqueue = create_workqueue (MY_WORK_QUEUE_NAME);

 

/ *

* С обработчик клавиатуры не будет сосуществовать с другим обработчиком,

* Как США, мы должны отключить его (освободить IRQ) прежде, чем мы делаем

* Что-нибудь. Так как мы не знаем, где он находится, нет никакого способа, чтобы

* Возможности переустановить его - поэтому компьютер придется перезагрузить

* Когда мы сделали.

* /_irq (1, NULL);

 

/ *

* Запрос IRQ 1, IRQ клавиатуры, чтобы перейти к нашей irq_handler.

* SA_SHIRQ означает, что мы готовы иметь суются обработчики на этом IRQ.

* SA_INTERRUPT могут быть использованы, чтобы обработчик в быстрого прерывания.

* /request_irq (1, / * о IRQ клавиатуры номер на ПК * /

irq_handler, / * наш обработчик * /_SHIRQ, «test_keyboard_irq_handler»,

(void *) (irq_handler));

}

 

/ *

* Убирать

* /cleanup_module ()

{

/ *

* Это только здесь для полноты картины. Это совершенно не имеет значения, так как

* Мы не есть способ восстановить нормальную прерываний от клавиатуры, так

* Компьютер совершенно бесполезно и должен быть перезагружен.

* /_irq (1, NULL);

}

 

/ *

* Некоторые функции work_queue связанные только доступны GPL лицензированных модулей

* /_LICENSE («GPL»);

 

На практике обращения с IRQ может быть немного сложнее. Оборудование часто разработаны таким образом, что цепи двух контроллеров прерываний, так что все IRQs от контроллера прерываний В каскадированы в определенной IRQ от контроллера прерываний А. Конечно, что требует, чтобы ядро находит, какие IRQ это действительно было потом, и что добавляет накладные расходы. Другие архитектуры предложить какую-то особую, очень низкие накладные расходы, так называемый «быстрый IRQ» или FIQs. Для того чтобы воспользоваться им требуется обработчики быть написан на ассемблере, поэтому они не очень вписывается в ядро. Они могут быть сделаны, чтобы работать похожи на других, но после этой процедуры, они больше не быстрее, чем «обычных» прерываний. SMP с поддержкой ядра, работающие на системах с более чем одним процессором нужно решить еще один грузовик проблем. Это не достаточно, чтобы знать, если некоторые прерываний имеет случилось, это также важно, по какой процессора (ов) это было для. Люди по-прежнему заинтересованы в более подробной информации, возможно, захотите сделать веб-поиска для «APIC» сейчас;)


Поделиться с друзьями:

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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.068 с.