x86 - Максимально адресуемый объем памяти

Тема в разделе "WASM.BEGINNERS", создана пользователем OxMDN, 18 фев 2009.

  1. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    Товарищи объясните мне плз, внятно, какой максимальный
    объем памяти можно адресовать в архитектуре x86?
    Ессно вопрос о защищенном режиме.

    Правильно ли я понимаю, что исходя из структуры дескриптора
    в GDT и LDT получаются следующие цифры:

    максимально дальний адресуемый адрес =
    масимальное смещение базы (32 бита = 4Гб)+
    масимальный лимит (20бит в страничном режиме = 4Гб) =
    8Гб


    То есть в итоге получаем максимльно достижимое адресуемое смещение 8Г?

    Если в моих домыслах, что-то очень криво пинайте меня больно!!!

    А еще интересно какое расширение получили дескрипторы сегментов и прочие
    для I64 архитектуры? и где более подробно об этой I64 с точки зрения програмизма
    можно почитать...

    Фсем заранее спасибо!
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Какой памяти - физической или виртуальной?
     
  3. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    читай вопрос - все будет ясно!
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    OxMDN
    Прочитал еще раз - всеравно не ясно.
     
  5. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    Какую память распределяют при помощи GDT или я что-то неясно сказал?
    Короче, если что-то не ясно преложи свое более коректное видение вопроса, ок?!
     
  6. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    OxMDN
    Ты путаешь теплое с мягким.
    Смещение задается 32 битным регистром - соответственно максимальный адресуемый объем - 4ГБ.
    Физически может быть доступно 64ГБ на системах с поддержкой PAE (Physical Address Extension)
     
  7. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    А еще внимательнее вопрос почитать?!
    Я вопрос задал про адресацию физической памяти в защищеном режиме
    при помощи дескрипторов таблицы GDT, которые и задают данное распределение.
    Что с чем я спутал можно поподробнее?

    Если нет намерения давать корректных и подробных разъяснений, то плз не надо замусоривать ветку, ок? дабы другим было проще чиать этот наш бред!
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Чтобы не переливать с пустого в порожнее надо определиться с терминами.
    Что ты подразумеваешь под адресацией физической памяти?
    В x86 архитектуре обращение к памяти производится по логическим адресам, которые потом транслируются в физические.
    Нет возможности явно указать физический адрес в команде обращения к памяти.
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Y_Mur
    Ага... и самое главное, что ссылку на свой пост. :-D Который там, кстати, довольно не в тему. :)
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    l_inc
    Зато здесь он - развёрнутый ответ на вопрос ТС :))
     
  12. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    Ребята очень прошу, если не понимаете о чем речь не замусыривайте нитку, ок?
    Просто я уже не знаю как вам дальше объяснить. Неужели не ясны слова - защищенный режим, GDT?
    Может хотя бы модераторы ответят - великие Гуру?
     
  13. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    Под физической понимаю память - распределение, которой в защищенном
    режиме производиться при помощи дескрипторов GDT, так понятней?

    Структура дескриптора имеет вид (можно посмотреть хотябы в разделе "Адресация в защищенном режиме" С.В.Зубков) :

    слово 3 (старшее):
    биты 15 – 8: биты 31 – 24 базы
    бит 7: бит гранулярности (0 — лимит в байтах, 1 — лимит в 4-килобайтных единицах)
    бит 6: бит разрядности (0/1 — 16-битный/32-битный сегмент)
    бит 5: 0
    бит 4: зарезервировано для операционной системы
    биты 3 – 0: биты 19 – 16 лимита
    слово 2:
    бит 15: бит присутствия сегмента
    биты 14 – 13: уровень привилегий дескриптора (DPL)
    бит 12: тип дескриптора (0 — системный, 1 — обычный)
    биты 11 – 8: тип сегмента
    биты 7 – 0: биты 23 – 16 базы
    слово 1: биты 15 – 0 базы
    слово 0 (младшее): биты 15 – 0 лимита

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

    Вот еще ссылка может поможет в понимание вопроса http://www.dstu.edu.ru/povtas/stud/books/net_os/glava8.html
    Только мне кажеться, что тут ошибочка закрадываеться все сразу
    начинают считать максимальное кол-во записей в GDT описывающих сегменты по 4Гб и таким образом получают пресловутые 64Тб, хотя при этом никто не смотрит на структуру
    дескриптора сегмента в GDT, который позволяет по моим несложным подсчетам адресовать только 8Гб
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Повторюсь (#8):
    (32 бита = 4Гб)+масимальный лимит (20бит в страничном режиме = 4Гб) =8Гб - затем аппаратно обрезается до 4Гб, так же как и потенциально 34Гб адрес вида [eax+8*ecx+offset].
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    OxMDN
    А может ты вначале научишься читать?
    Тебя ткнули носом сказали что ты сам непонимаешь что спрашиваешь!
    Тут еще надо добавить линейную.
    Ты не ответил.
    При помощи GDT настраивают отоброжение логического адресса на линейный.
    Так тебе какой адресс нужен?

    В вопросе про это нислова. Нипридумывай. Обэтом тебе несколько раз написали.
    Нам то ясно. А вот тебе скорее всего нет.

    Максимальный линейный адресс 4 ГБ. Максимальный физический 2^36=64ГБ
    Объэтом тоже тебе написали.
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Я спрашивал не про физическую память, а про адресацию физической памяти.
    Причем тут структура дескриптора?
    Нет в защищенном режиме команд для обращения к физической памяти напрямую.
     
  17. OxMDN

    OxMDN New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2003
    Сообщения:
    11
    Адрес:
    Moscow
    В тему то въехали? :) Похоже нет!
    Какое аппратное обрезание в записях дескрипторов в GDT?
     
  18. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Y_Mur
    Зачем ты складываешь макс. размер сегмента с лимитом?
     
  19. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    OxMDN
    Налицо явное непонимание того, что такое дескриптор и для чего он служит.
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Partner
    Это не я складываю - это взято из первого поста ТС и это не "размер + лимит", а классическая base + offset ;)

    OxMDN
    Обрезается при попытке использования этого 8Гб адреса ;)
    Я там по приведённой ссылке достаточно подробно расписал что "навычислять" можно всяких вариантов адресации, но на практике они аппаратно ограничены 4Гб.