Пространства адресов

Тема в разделе "WASM.BEGINNERS", создана пользователем defaultplayer, 28 дек 2008.

  1. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    Да в том-то и дело, что если принять "виртуальный адрес Винды = линейный адрес ИА-32", то на другие платформы это будет непереносимо. Ну нету на Альфе никакого аналога линейного адреса ИА-32, не говоря о том, что с точки зрения прикладных программ на ИА-32 никакого линейного адреса не существует -- есть только селекторы сегментов и смещения.

    А насчёт приведённой Вами таблицы Вы одно забываете. "Нормальная" прикладная программа в Винде не манипулирует с селекторами сегментов, а работает исключительно со смещениями при неизменных значениях селекторов, обеспеченных самой системой. В такой ситуации программа имеет дело с 32-разрядными "адресами", однозначно отображаемыми на физическую память.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    То, что я принимаю для IA-32, не играет абсолютно никакой роли для других платформ:
    Виртуальный адрес Windows = линейный адрес IA-32
    Виртуальный адрес Windows = эффективный (или какой он там...) в PowerPC
    Виртуальный адрес Windows = виртуальный адрес Alpha
    Виртуальный адрес Windows = опупенный адрес OpupennoPC
    Какое равенство мы берём, зависит от платформы, но для Windows-программ это всё равно будет виртуальный адрес, который абстрагирует программы как от платформы, так и от соответствующего названия адреса на этой платформе.
    Согласен. ОК. Не существует. Для них существует виртуальный. Но для IA-32 (для самого процессора) тот же самый адрес будет линейным.
    И разница между моим утверждением и Вашим в том, что мне не приходится вносить поправки для исключения "ненормальных" программ, а Вам приходится. Так какое утверждение лучше? То, которое вносит набор исключений, или всё таки то, которое универсально подходит для всех случаев?
     
  3. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    Не годится. Программы должны работать с виртуальными адресами. А с линейным адресом ИА-32 работать программно невозможно, он чисто аппаратный.

    Лучше моё. Потому что Ваше работает только для ИА-32, а моё работает везде, где работает или потенциально может работать Винда. А "ненормальные" программы всегда были, есть и будут -- но они являются платформенно-зависимыми со всем вытекающим из этого.
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Я ведь не говорил, что они работают с линейными адресами. Не работают. Ещё раз повторяю: НЕ РА-БО-ТА-ЮТ. Под IA-32 они работают с логическими адресами.
    Простите, но Ваше утверждение работает тоже только для IA-32. Потому как, например, для Alpha высказывание: "виртуальный адрес в Windows - это логический адрес IA-32", — просто не имеет смысла, т.к. речь в высказывании идёт исключительно об IA-32, и оно не подразумевает ни наличия, ни отсутствия других платформ, т.к. относится исключительно к IA-32.
     
  5. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    а о каком пространстве говорят, когда говорят про сегменты?

    SII
    Потому что Ваше работает только для ИА-32
    так вы с ним согласны?
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    defaultplayer
    В Windows нет сегментов, и Intel тоже пишет о простой плоской модели: "Application programs have access to a continuous, unsegmented address space". Поэтому понятие логического АП не определено.
    Согласен, разумеется. :) Просто SII этого ещё не понял. Всё дело в синтаксисе и семантике, но об этом только после того, как SII полностью согласится. :)
     
  7. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    вы незабыли что плоская модель это попрежнему "сегментная" модель? а сегментировано у нас логическое ап, или это не аргумент?
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    defaultplayer
    Я не понимаю, что означает "сегментная" в кавычках. В простой плоской модели для программ нет сегментов, соответственно применить приведенное Вами высказывание (так же, как и понятие виртуального АП) к Windows-приложениям невозможно.
     
  9. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    А согласно документации Майкрософт, программы работают с виртуальными адресами. С виртуальными и только с виртуальными. И если под ИА-32 программы работают с логическими, то значит, это логические и виртуальные -- одно и то же, но никак не линейные и виртуальные.

    Прощаю. Я неудачно выразился. Имелось в виду, что виртуальный адрес Винды -- это исходный адрес на любой процессорной архитектуре, а не какой-то промежуточный. А линейный адрес ИА-32 является промежуточным, а не исходным.
     
  10. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    Я настолько важная особа, что все должны ждать моего согласия? Всё, срочно начинаю жутко гордиться :)))

    defaultplayer
    l_inc

    Термином "логическое адресное пространство" можно оперировать только в том случае, если договориться, что оно означает. Как, собственно, и любыми другими терминами. А оба вы, как мне кажется, нигде толком это не обозначили. Может, стоит всё ж либо сказать, что это такое, либо просто не использовать этот термин?
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Да!
     
  12. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    :) Потому что при работе с API-функциями, база сегмента должна быть нулевая. :)
    Согласно документации Microsoft 400000h - это виртуальный адрес. А согласно документации Intel 23h:400000h - это соответствующий ему логический адрес, а ещё 27h:0h - это тоже соответствующий ему логический адрес (при условии, что я определил соответствующй дескриптор). Зато линейный адрес и там, и там - это 400000h. И после этого Вы можете говорить о том, что виртуальный - это логический? Разницу между адресами замечаете?
    Вообще-то из-за этого "неудачного выражения" и затянулся спор.
    Вот объясните, с чего Вы так решили? Единственное условие для объяснения - Вы не можете аргументировать это тем, что программы используют "исходный адрес". Мне это и так известно. :)
    Я здесь не причём. :) defaultplayer первый начал его употреблять. :) Даже несмотря на то, что мы договорились не определять этот термин.
     
  13. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    кавычки можно убрать, это я таким образом выделил название модели
    если майкрософт опускает описание сегментации за ненадобностью так как термин виртуальный применим к плоским ап, это неозначает что его нет. в конце концов вы согласились со мной в том что программы оперируют селекторами явно или неявно, что подразумевает что вы помните о сегментации хоть, еще раз повторюсь, она и скрыта разработчиками оси
     
  14. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    действительно договаривались, только чтобы не усложнять разговор, на самом деле нам предстоит и это выяснить, но пока есть действительно неопределенные вещи, и делать какие-то выводы рановато
     
  15. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    И могу, и буду. Точнее, буду говорить, что виртуальный адрес Винды -- это смещение в логическом адресе ИА-32.

    Потому что программы в Винде работают с виртуальными адресами. Платформенно-независимым функциям API передаются именно виртуальные адреса, а не что-то другое. Программы к своим собственным коду и данным обращаются по виртуальным адресам. А значит, виртуальные адреса -- это то, что непосредственно доступно для манипуляции со стороны программ. Причём для прямой манипуляции.
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    defaultplayer
    Селекторы сегментов есть. Сегментные регистры есть. Сегментации нет. И дело не в том, что Microsoft опускает её за ненадобностью, а именно в том, что её нет в простой плоской модели (я уже привёл цитату Intel об этом), которую использует Windows.
     
  17. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Вы отходите от своего представления, руководствуясь тем, что Microsoft пишет о 32-битности виртуального адреса. А это (отходить) неверно, т.к. именно это и добавляет исключение "ненормальных" программ. Вам не стоит обращать внимание на 32-битность виртуального адреса. И тогда Вы будете говорить правильнее (с Вашей позиции): виртуальный адрес в Windows - это логический адрес в IA-32.
    В API передаются виртуальные адреса только потому, что база сегментов должна быть нулевая, иначе большинство API не будут работать. А вот для прямой манипуляции в общем случае виртуальные адреса программам всё-таки недоступны, т.к. логические адреса не ограничиваются только адресами с нулевой базой.
     
  18. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    l_inc
    следующее же предложение за процитированным вами - "To the greatest extent possible, this basic flat model hides the segmentation mechanism"
    нет и скрыта это разные вещи, согласны или нет?

    SII
    можете не гордиться, вы олицетворение другой точки зрения, тоесть всех людей придерживающихся такой точки зрения, вы конечно за всех остальных не в ответе, но для меня на даном этапе это так. таких споров пол инета, и так его никто недоводил до конца, по крайней мере я ненашел, я также предпологаю что тонны макулатуры по данной теме это хламье. Вы не поверете если я вам скажу что термин "линейно-физическое отображение", применимый к ИА-32, я нашел на одном только ресурсе среди рускоязычных, это при том сколько инфы по этой теме написано, переписано, а термин "логическо-физическое отображение" и подавно никто неслышал
     
  19. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Я тоже не понмаю.
    Сегментация это разбиения чего-то на кусочки. И неважно, как архитектурно представлены эти кусочки. Хоть атомами. Важно что оно составное.
    В IA-32 сгменация представлена двумя механизмами это
    сегменты и страничный механизм.

    Термин сегментация существовал за долго до процессоров.
    Сегменты появились еще во времена x86. А вот что бы не придумывать новых терминов оставили старые.

    Виртуальный адрес в виндоусе - это такой адрес в процессе адрес, которого может отличаться от физического. На самом деле в MSDN применяется виртуальный адрес и в более широком смысл в ряде статей.
    Логический адрес в IA-32 это адрес вида сегмент: смещение.
    Виртуальный адрес гораздо шире. Поэтому под него может попадать все что угодно.

    Если говорить относительно IA32 то под виртуальный адрес попадает как логический так и линейный.
    Но термин виртуальный не позволяет отличить одного и другого. Да собственно этого и не нужно.
    В виндоусе плоская модель. Она не использует сегменты IA-32. Но сегментация все же есть.
     
  20. defaultplayer

    defaultplayer New Member

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