распределение физической памяти PM

Тема в разделе "WASM.BEGINNERS", создана пользователем newty, 10 июн 2008.

  1. newty

    newty New Member

    Публикаций:
    0
    Регистрация:
    10 июн 2008
    Сообщения:
    10
    Добрый вечер еще раз
    Появился еще такой вопрос: я перевожу процессор в защищенный режим, инициализирую IDT. После чего нужно включить страничную адресацию.
    Можно ли каталог страниц и таблицу страниц разместить, начиная с нулевого физического адреса? Каталог состоит из 1-й PDE (занимает первые 4К), таблица содержит только 1024 элемента (умещается в следующую физическую страницу).

    Из того, что я нашел в ин-нете, я затру таблицу векторов (но она ведь уже не нужна, верно?) и область "данных BIOS". Вот насчет последнего я не уверен - можно ли так делать?

    Насколько я понял, хранить свои служебные данные в PM бессмысленно только в области UMA (физ. адреса 0xA000 - 0xF000), Верно?

    P.S. Пожалуйста, не нужно рекомендовать хранить таблицы "от греха (в смысле, от младших адресов) подальше", хотелось бы по наименьшим адресам :). Спасибо
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я не думаю, что ты сможешь использовать биос в защищенном режиме полноценно, там, конечно, есть какие-то 32битные точки входа, но вот я не знаю, нужна ли им эта "область данных", тем более, что эти точки входа, насколько я помню, специально рассчитаны на страничную адресацию и поэтому там не зашиты никакие абсолютные адреса.

    У себя в ОС я смело затираю первую физ страницу. Но... у меня после включения защ.режима биос больше не трогается. Если и ты не трогаешь, три смело =)

    IVT реального режима (Interrupt Vector Table) и в помине не нужна в защищенном режиме. совершенно.
     
  3. newty

    newty New Member

    Публикаций:
    0
    Регистрация:
    10 июн 2008
    Сообщения:
    10
    Еще раз спасибо, Great.
    Вот только на полвопроса не получил ответа :). Можно хранить сервисные данные по любым адресам, кроме области UpperMemoryArea (384 кБ)? Или есть еще какие-то "запрещенные" участки?

    P.S. Хотя и в UMA, кажется, можно втиснуться в 0xD000 - 0xEFFF?
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Нет не верно. Есть можество диапозонов заприщенных и разрешенных для ОС. Для их определения используем INT 15h eax, e820h
    Облость переменных BIOS можно затереть, но не желательно. Поэтому обычно первый мегабайт как-то и не трогают. У меня так добавленн вызов прерываний через VM86 поэтому я первый мегобайт использую только для этого, а так больше и не трогую.

    К примеру для инициализации многопроцессорных систем используют адресс 40h:67h - область переменных BIOS.

    32 битных точек мало. Непомню чтобы они требовали область переменных BIOS. На строничую адрисациию им наплевать. Они требуют селектор , те сегмент с заданными физическими адрессами. Но обычно это F000 C000, а вот облость BIOS не припомню чтобы входила кудато.
     
  5. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    аналогично. Жаль на практике страничную пока не применял. Наверно поэтому и не вижу причин, почему бы ее не разместить где то еще, в той же base memory.