Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Помогите разобраться с прерываниями (http://forum.oszone.net/showthread.php?t=147301)

sdima85 06-08-2009 17:03 1187288

Помогите разобраться с прерываниями
 
Какие прерывания куда распределены?
Куда указывают те прерывания которые BIOS не распределил?

ref 06-08-2009 20:06 1187466

Вот очень много букв про прерывания. :wow:
Осваивайте! :lamer:

sdima85 06-08-2009 21:28 1187545

Хорошая статья.
Но все же куда указывают те прерывания которые BIOS не распределил (при условии что есть не занятые)?

sdima85 07-08-2009 17:26 1188365

Цитата:

Цитата ref
Вот очень много букв про прерывания. »

В статье написано:"APIC (Advanced Programmable Interrupt Controller) - усовершенствованный программируемый контроллер прерываний. Для многопроцессорных систем это необходимая система, так как позволяет распределить меж процессорами нагрузку по работе с устройствами. То есть, этот контроллер можно запрограммировать на обработку некоторых линий прерываний первым процессором, а некоторых - вторым. Для однопроцессорных систем эта опция всего лишь включает возможность использования в операционных системах WindowsXP и Windows2000 виртуальных прерываний."

На Wikipedia :"С ростом числа устройств пришлось решать проблемы прерываний. Устройств стало очень много. На одном прерывании висело до 4 устройств. Помимо прочего старый механизм прерываний давал большие задержки на шине PCI. Что привело к появлению IOAPIC, позволяющего использовать 24 и более аппаратных прерывания вместо 16 PIC. Ограничение в 16 аппаратных прерываний не менялось с 1982 года. На данный момент IOAPIC имеет только 24 прерывания"

Кому верить? Сколько аппаратных прерываний 16 или 24?
И все же куда указывают те прерывания которые BIOS не распределил (при условии что есть не занятые)?

sdima85 14-08-2009 14:47 1193561

Еще в одной статье:

Преимущества расширенного контроллера прерываний:
возможность реализации межпроцессорных прерываний - сигналов от одного процессора другому
поддержка до 256 входов IRQ, в отличие от 16 на классической IBM PC

Сколько аппаратных прерываний в APIC?

DVDshnik 14-08-2009 14:53 1193567

Аппаратных прерываний 16, поскольку поначалу использовались две восьмивходовых микросхемы, и имеют прерывания эти номера с нулевого до 15. Все остальные прерывания виртуальные.

sdima85 14-08-2009 15:34 1193584

А сколько виртуальных 24 или 256?

Если можно ссылку на источник.
Потому как выше цитаты из 3х статей, и в каждой по разному!

lxa85 14-08-2009 15:47 1193591

sdima85, Питер Абель. Ассемблер и программирование для IBM PC
(текст не форматировал)
ГЛАВА 23. Прерывания BIOS и DOS
------------------------------------------------------------
Прерывания BIOS и DOS
читать дальше »
Цель: Описать функции, доступные через прерывания BIOS и
DOS.

ВВЕДЕНИЕ
------------------------------------------------------------

Прерывание представляет собой операцию, которая приоста
навливает выполнение программ для специальных системных
действий. Необходимость прерываний обусловлено двумя
основными причинами: преднамеренный запрос таких действий,
как операции ввода-вывода на различные устройства и
непредвиденные программные ошибки (например, переполнение
при делении).
Система BIOS (Basic Input/Output System) находится в ROM
и управляет всеми прерываниями в системе. В предыдущих
главах уже использовались некоторые прерывания для вывода на
экран дисковых операций ввода-вывода и печати. В этой главе
описаны различные BIOS- и DOS-прерывания, резидентные
программы и команды IN и OUT.

ОБСЛУЖИВАНИЕ ПРЕРЫВАНИЙ
------------------------------------------------------------

В компьютерах IBM PC ROM находится по адресу FFFF0H. При
включении компьютера процессор устанавливает состояние
сброса, выполняет контроль четности, устанавливает в
регистре CS значение FFFFH, а в регистре IP - нуль. Первая
выполняемая команда поэтому находится по адресу FFFF:0 или
FFFF0, что является точкой входа в BIOS. BIOS проверяет
различные порты компьютера для определения и инициализации
подключенных устрой ств. Затем BIOS создает в начале памяти
(по адресу 0) таблицу прерываний, которая содержит адреса
обработчиков прерываний, и выполняет две операции INT 11H
(запрос списка присоединенного оборудования) и INT 12H
(запрос размера физической памяти).
Следующим шагом BIOS определяет имеется ли на диске или
дискете операционная система DOS. Если обнаружена системная
дискета, то BIOS выполняет прерывание INT 19H для доступа к
первому сектору диска, содержащему блок начальной загрузки.
Этот блок представляет собой программу, которая считывает
системные файлы IBMBIO.COM, IBMDOS.COM и COMMAND.COM с диска
в память. После этого память имеет следующее распределение:

Таблица векторов прерываний
Данные BIOS
IBMBIO.COM и IBMDOS.COM
Резидентная часть COMMAND.COM
Доступная память для прикладных программ
Транзитная часть COMMAND.COM
Конец RAM (ОЗУ)
ROM BASIC
ROM BIOS

Внешние устройства передают сигнал внимания через контакт
INTR в процессор. Процессор реагирует на этот запрос, если
флаг прерывания IF установлен в 1 (прерывание разрешено), и
(в большинстве случаев) игнорирует запрос, если флаг IF
установлен в 0 (прерывание запрещено).
Операнд в команде прерывания, например, INT 12H, содержит
тип прерывания, который идентифицирует запрос. Для каждого
типа система содержит адрес в таблице векторов прерываний,
начинающейся по адресу 0000. Так как в таблице имеется 256
четырехбайтовых элементов, то она занимает первые 1024
байта памяти от шест.0 до шест.3FF. Каждый элемент таблицы
указывает на подпрограмму обработки указанного типа
прерывания и содержит адрес кодового сегмента и смещение,
которые при прерывании устанавливаются в регистры CS и IP
соответственно. Список элементов таблицы векторов прерываний
приведен на рис. 23.1.
Прерывание заносит в стек содержимое флагового регистра,
регистра CS и регистра IP. Например, для прерывания 12H
(которое возвращает в регистре AX размер памяти) адрес
элемента таблицы равен шест.0048 (шест.12 х 4 = шест.48).
Операция выделяет четырехбайтовый элемент по адресу шест.
0048 и заносит два байта в регистр IP и два байта в регистр
SS. Адрес, который получается в регистровой паре CS:IP,
представляет собой адрес начала подпрограммы в области BIOS,
которая получает управление. Возврат из этой подпрограммы
осуществляется командой IRET (Interrupt Return), которая
восстанавливает флаги и регистры CS и IP из стека и
передает управление на команду, следующую за выполненной
командой прерывания.


ПРЕРЫВАНИЯ BIOS
читать дальше »
------------------------------------------------------------

В данном разделе представлены основные прерывания BIOS.

INT 05H (Печать экрана). Приводит к передаче содержимого
экрана на печатающее устройство. INT 05H применяется для
внутренних целей, т.е. из программ, клавиши Ctrl/PrtSc
активизируют печать с клавиатуры. Данная операция маскирует
прерывания и сохраняет позицию курсора.

------------------------------------------------------------

Адрес Функция прерыаний
(шест) (шест)
0-3 0 Деление на нуль
4-7 1 Пошаговый режим (трассировка DEBUG)
8-B 2 Немаскированное прерывание (NMI)
C-F 3 Точка останова (используется в DEBUG)
10-13 4 Переполнение регистра
14-17 5 Печать экрана
18-1F 6,7 Зарезервировано
20-23 8 Сигнал от траймера
24-27 9 Сигнал от клавиатуры
28-37 A,B,C,D Используются в компьютерах AT
38-3B E Сигнал от дискетного дисковода
3C-3F F Используется для принтера
40-43 10 Управление дисплеем (см.гл. 8, 9, 10)
44-47 11 Запрос оборудования (см.гл.9)
48-4B 12 Запрос размера памяти (см.гл.2)
4C-4F 13 Дисковые операции ввода-вывода (см.гл.18)
50-53 14 Управление коммуникационным адаптером
54-57 15 Кассетные операции и спец. функции AT
58-5B 16 Ввод с клавиатуры (см.гл.9)
5C-5F 17 Вывод на принтер (см.гл.19)
60-63 18 Обращение к BASIC, встроенному в ROM
64-67 19 Перезапуск системы
68-6B 1A Запрос и установка времени и даты
6C-6F 1B Прерывание от клавиатуры
70-73 1C Прерывание от таймера
74-77 1D Адрес таблицы параметров дисплея
78-7B 1E Адрес таблицы параметров дисковода
7C-7F 1F Адрес таблицы графических символов
80-83 20 Нормальное завершение программы (DOS)
84-87 21 Обращение к функциям DOS
88-8B 22 Адрес обработки завершения задачи (DOS)
8C-8F 23 Адрес реакции по Ctrl/Break (DOS)
90-93 24 Адрес реакции на фатальную ошибку (DOS)
94-97 25 Абсолютное чтение с диска (DOS)
98-9B 26 Абсолютная запись на диск (DOS)
97-9F 27 Создание резидентной программы (DOS)
AO-FF 28-3F Другие функции DOS
100-1FF 40-7F Зарезервировано
200-217 80-85 Зарезервировано для BASIC
218-3C3 86-F0 Используются BASIC-интерпретатором
3C4-3FF F1-FF Зарезервировано

Примечание: Прерывания 00-1F относятся к BIOS, прерывания
20-FF относятся к DOS и BASIC.

------------------------------------------------------------
Рис.23.1. Таблица адресов прерываний.

cmos 14-08-2009 15:53 1193593

По datasht_у
Intel® 82093AA I/O Advanced Programmable Interrupt Controller (I/O APIC) Specification
Аппаратных прерываний 24.

cmos 14-08-2009 16:24 1193607

APIC - Контроллер прерываний (interrupt), позволяющий использовать 24 аппаратных прерывания вместо 16.

sdima85 14-08-2009 16:32 1193609

Да и здесь написано что 24

http://wiki.kldp.org/wiki.php/InterruptAndException

sdima85 17-08-2009 10:23 1195431

И все же куда указывают те вектора прерываний которые BIOS не распределил?

DVDshnik 17-08-2009 12:19 1195538

Каких таких 24? Ещё раз повторюсь, что две микросхемы по 8 входов позволяют организовать 16 прерываний. BIOS позволяет оперировать именно этими 16 прерываниями, да и то не всеми из них.

sdima85 17-08-2009 12:59 1195570

Цитата:

Цитата DVDshnik
Каких таких 24? »

APIC — Advanced Programmable Interrupt Controller. Улучшенный программируемый контроллер прерываний
Описание

В отличие от PIC поддерживает до 256 прерываний, реально же только 24. Поддерживает спецификацию PCI. Можно определить присутствие контролера командой ассемблера CPUID. APIC делится на две части: LOCAL и I/O APIC. LOCAL - располагается в процессоре, а вернее в ядре. I/O APIC контролер представлен в чипе микросхемой 82093AA.

Контроллер прерываний (interrupt), позволяющий использовать 24 аппаратных прерывания вместо 16. Ограничение в 16 аппаратных прерываний, не менявшееся с 1982 года, сдерживало установку в персональный компьютер дополнительных устройств. В конце 2001 года появились первые материнские платы с APIC.

Ссылки на источники выше.

lxa85 17-08-2009 13:40 1195598

Цитата:

Цитата sdima85
И все же куда указывают те вектора прерываний которые BIOS не распределил? »

Вариант "никуда" не рассматривался?
Я честно сказать слегка подзапутался, кто куда должен смотреть (BIOS, APCI и т.д.). Ссылку на П. Абеля я привел. Там хоть с адресами памяти приведено. Т.е. есть что посчитать и посмотреть.
А вобще это СПО, драйвера. Программисты должны знать и те технари, которые непосредственно работают с данным уровнем.

DVDshnik 18-08-2009 06:42 1196311

Тогда вообще непонятно, почему же ни в одном из BIOS'ов мне не удалось заметить номер прерывания больший, чем 15.
Цитата:

Цитата sdima85
В отличие от PIC поддерживает до 256 прерываний, реально же только 24. »

Что-то я не догоняю... Путаница в трёх соснах происходит. Внимательно посмотрите ресурсы оборудования, кои ХР распределяет, и увидите прерывания из пятого десятка, например. А уж Виста обладает несколькими сотнями прерываний.

ab57 18-08-2009 12:46 1196557

IMHO, путаница возникла из-за того, что контроллеры APIC могут работать в режиме эмуляции пары контроллеров PIC (2-х микросхем 8259, 16 линий запросов на прерывания, обрабатываемых одним процессорм). Этот режим устанавливается по включению питания при выполнении POST (поэтому в BIOSe нет номера прерывания более 15).
Цитата:

Цитата sdima85
И все же куда указывают те прерывания которые BIOS не распределил (при условии что есть не занятые)? »

Если какое-то прерывание не распределено, то вектор программы обработки такого прерывания указывает на команду IRET (возврат из обработки прерывания). Кроме того, неиспользуемые линии запросов на прерывание маскируются установкой битов регистра маски контроллера. Биты маски устанавливаются программно и могут запрещать или разрешать соответствующие прерывания.
Упрощенно, IRET восстанавливает состояние процесса на то, что было в момент прерывания (регистры, адрес команды, флаги...)

Когда же система готовится к переходу в мультипроцессорный режим, тот же самый контроллер APIC перепрограммируется в симметричный режим работы с использыванием таблицы перенаправлений прерваний.
Каждому запросу соответствует свой элемент в таблице перенаправлений, находящейся в APIC. Каждый элемент содержит вектор прерывания, процессор, который должeн его обработать и параметы анализа сигнала запроса на входе INTINn( уровень или перепад сигнала - есть запрос).
Кроме того, APIC позволяют вызывать прерывание и записью номера входа INTIN в регистр. При этом возможна и экономия сигнальных входов: APIC может иметь входы INTINn не для всех номеров запросов, посылаемых через запись в этот регистр. Однако число запросов всегда ограничивается размером таблицы перенаправлений.
Если коротко, то в современных чипсетах, в симметричном режиме работы APIC максимальное число аппаратных линий запросов на прерывание может быть 24, а запросов на прерывание до 256.
Неиспользуемое прерывание, имхо, должно также маскироваться, и его элемент в таблице перенаправлений должен содержать вектор, указывающий на команду возврата из прерывания IRET (возможно, ошибаюсь, и в расширенном режиме используется другая команда).


Время: 00:33.

Время: 00:33.
© OSzone.net 2001-