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