Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 223
Благодарности: 53

Профиль | Отправить PM | Цитировать


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 (возможно, ошибаюсь, и в расширенном режиме используется другая команда).

-------
Переустановка Windows - как разморозка холодильника. Помогает, но ненадолго...


Последний раз редактировалось ab57, 19-08-2009 в 10:30. Причина: Добавил про IRET

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:46, 18-08-2009 | #17