Извините, я не был уверен, подходит ли это место для этого, но я надеюсь, что это приемлемо, извините, если это не так!:)
В настоящее время я делаю модуль в теории операционных систем, и у меня есть несколько концепций, которые я не могу понять - это правильное место, чтобы задавать вопросы?
Мой главный вопросо прерываниях.Когда процессор обнаруживает, что произошло прерывание, я понимаю, что оно должно выяснить, откуда возникло это прерывание.Насколько я понимаю, кто-нибудь может сказать мне, если это правильно, и объяснить несколько пробелов в моих знаниях?
Чтобы ЦП мог определить, откуда возникло прерывание, он может запросить все объекты, чтобы определить источник,но эти вопросы на основе ввода / вывода заняли бы много времени.Вместо этого он использует цикл прерываний и ожидает идентификатор прерывания на шине данных.Если это 8-битная шина данных, существует 256 уровней прерываний (то есть 2 ^ 8).(Почему это так?)
Таким образом, подпрограмма обслуживания прерываний (ISR) записывается для каждого возможного уровня прерывания и сохраняется в таблице в фиксированном месте (вектор прерывания), который стандартизируется процессором.В моих заметках говорится: «Местоположение должно быть известно до получения адреса» (Что это значит?)
Идентификатор уровня прерывания, полученный как часть цикла прерывания, используется как индекс в векторе прерывания (Можеткто-нибудь сломать это немного, пожалуйста?).Насколько я понимаю, значение, идентификатор уровня прерывания передается в ЦП и используется для указания на вектор прерывания.
Кроме того, что это значит, когда прерывание называется "обслуживаемым"?
Большое спасибо, и извините за длинные абзацы, меня просто немного смущают многие аспекты этого!