Зачем включать линию 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Мб и т. д." См. также:
- A20 Line (Википедия)