Важный вопрос по поводу распределения памяти.

Тема в разделе "WASM.ASSEMBLER", создана пользователем NoName, 31 авг 2011.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Делаю загрузку ОС по неким адресам и недавно обнаружил что на некоторых процессорных модулях по физическим адресам начиная с 0x200.000 лежат BIOS-ы! Я удивлен. Кроме того содержимое этой памяти различается при различных начальных настройках.
    Вопросы. Насколько безопасно туда грузится? Как это лучше проверять? Как определить занятость участков памяти где нет e820? Как получить гарантии о том что моя память не будет искажена?
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Помнится, на ru.osdev.wikia.com я писал не только про E820, но и про альтернативные способы.
     
  3. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Вы уверены, что эти BIOS'ы являются не какими-то временными данными этапа загрузки и уже не представляют ценности?
    К тому же насколько мне известно после перехода в защищённый режим большая часть кода BIOS остаётся не у дел (точнее - всё кроме кода для SMM, который впрочем обычно лежит совсем по другим адресам и получить к нему доступ не так то просто).
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    e820 пишет что эти области можно использовать.
    Но я в этом сильно сомневаюсь. Там биосы от RAID, Ethernet и т.п.
    К тому же о каких временных данных размером с мегабайт идет речь?
     
  5. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Там есть следующие сигнатуры (перечисляю последовательно, как он расположены в памяти):
    Код (Text):
    1. $PnP - много раз встречается
    2. VIA VT6421 RAID BIOS Setting Utility v4.94
    3. If you want to install Linux Default partition RAID driver, please DO NOT use OPROM creation operation!
    4. HardWare Initiate failed, Please Check Device!!!
    5. The Bios does not be installed. Press <g> to continue!
    6. VIA RAID 0
    7. VIA RAID 1
    8. VIA RAID 0+1
    9. VIA RAID JBOD
    10. VRQS
    11. Power off and check the failed drive
    12. "Destroy the                       "
    13. Choose replacement drive and rebuild
    14. Continue to boot
    15. Power off and check the failed drive
    16. "Destroy the"
    17. "Continue to boot"
    18. "Broken Raid "
    19. "Critical Status "
    20. "A disk member of a mirroring"
    21. " array has failed or is not"
    22.  
    23. ...очень много строк...
    24.  
    25. Enter the VIA RAID Utility after exiting?(Y/N)
    26.  
    27. ...очень много строк... (статусные сообщения, явные строки из программы по созданию рейдов)
    28.  
    29. Большой блок с 0xFF в котром местами как-будто сделаны искажения точечно.
    30. Он лежит в диапазоне 0x210200-0x22FFFF
    31.  
    32. После идут нули с точечными повреждениями 0x230000 - 0x24FFF0
    33.  
    34. а потом опять...
    35. долбанный A20
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    NoName
    Судя по строчкам эта часть связана с RAID.
    У рейд контролера есть свой постоянная память ROM.
    При инициализации компьютера BIOS грузит ROM устройств в том числе и RAID.
    Каждый ROM обязан начинаться $PnP.
    При инициализации биос передаёт управление в ROM. ROM волен использовать всю память компьютера, при этом при завершении работы он не обязан чистить за собой. Факт на лицо.

    Что можно сказать про RAID. То что в его ROM понапихано много разных утилит: форматирования, восстановления и тд.

    Дальше идут догадки. Так как для таких вот утилит RAID нужен ROM видео карты. А в первом мегабайте уже всё забито.
    Единственный выход это выставить 0C0000h для ROM RAID скопировать себя в область выше 1МБ для страховки во второй. Затем вернуть управление теперь биос в область 0C0000h отображает ROM видеокарты. А после уже снова передаёт управление на RAID ROM который скопирован выше 2 МБ.

    Второе предположение более вероятное. Как я уже писал в ROM RAID понапихано много утилит. И чтобы разместить в маленьком ROM их сжимают. А для работы естественно разархивируют.
     
  7. designed

    designed New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2011
    Сообщения:
    1
    Адрес:
    Ташкент
    Я с тобой полность согласен
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    могу сказать одно. при помощи e820 всю память не проверишь. там же сказано что адреса принадлежашье картам расширения нужно проверять через их интерфейс (pci например)