Зачем включать линию A20 в защищенном режиме?

в исходном файле сборки загрузчика Linux 0.01 включена строка A20.

С boot/boot.s:

| that was painless, now we enable A20

call     empty_8042
mov al,#0xD1

...

далее загрузчик переходит в защищенный режим.

в реальном режиме включение строки A20 предоставляет нам расширение адресного пространства на 64 Кб-16 байт.
В защищенном режиме адресная шина разблокируется автоматически.

почему загрузчик включает адресную строку A20, когда переход в защищенный режим будет делать в любом случае?

1 ответов


в реальном режиме включение строки A20 предоставляет нам расширение адресного пространства на 64 Кб-16 байт.

правильно, в реальном режиме (на 286+) вы можете установить регистр сегмента в 0xFFFF, который позволит вам получить доступ к памяти (0xFFFF << 4) + 64K.

в защищенном режиме адресная шина разблокируется автоматически.

защищенный режим-это режим процессора, поэтому он не" разблокирует " шину, он просто позволяет дополнительное адресное пространство для использования, который требует больше контактов на адресной шине.

почему загрузчик включает адресную строку A20, когда переход в защищенный режим будет делать это в любом случае?

потому что это не так. "A20" обычно относится к аппаратному взлому, добавленному в PC-AT, который должен быть отключен, прежде чем защищенный режим будет функционировать должным образом.

во-первых, вспомните, что старые старые процессоры (через 80186) могли получить доступ только к 1 MiB памяти, и, таким образом имел 20 адресных строк (A0 - A19). Некоторые очень старые программы, воспользовавшись тем, что доступ к памяти выше 1 Мб будет обертывание в нижней памяти.

когда 286 добавил больше адресных строк, IBM не хотела нарушать совместимость с этим старым программным обеспечением, поэтому они сделали невообразимое: они поставили внешний gate на 21-й адресной строке (A20) и оставил его по умолчанию, повторно включив поведение обертки, поэтому старое программное обеспечение все равно будет функционировать правильно. Таким образом, сам 286 ничего не знает об этом взломе - он является внешним по отношению к процессору. Для процессора A20 ничем не отличается от любой другой адресной строки.

этот строб, (строб A20), проконтролирован штырем GPIO на регуляторе IC клавиатуры. Таким образом, вам нужно включить его перед переходом в защищенный режим. Если вы этого не сделали (и говорите, что вы сопоставили все 4 ГБ физической памяти), то как Майкл Петч указал, " каждая нечетная область мегабайта будет недоступна. Так 1Мб-2Мб фактически справка 0-1Мб, 3Мб-4Мб ссылка на 2Мб-3Мб и т. д." См. также: