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

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

  1. l_inc

    l_inc New Member

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

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

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

    Никак нет. ИА-32 -- это тот случай, когда виртуальный адрес -- не линейный, а логический для процессора. А ПоверПЦ -- тот случай, когда виртуальный адрес Винды -- не виртуальный адрес процессора, а его эффективный адрес. А Альфа и Итаниум -- тот случай, когда виртуальный адрес Винды -- это виртуальный адрес процессора.
     
  3. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    defaultplayer
    Ссылочкой не поделитесь?

    Последнее объясняется легко. Логически TEB лежит не в отдельном адресном пространстве, а в общем виртуальном адресном пространстве процесса, и чтобы добраться до него, нужно лишь знать смещение. Применительно к IA-32 Майкрософт решила воспользоваться механизмом сегментации и использует регистр FS, но фактически в качестве регистра смещения, а не сегментного в полном смысле: модель-то памяти всё равно остаётся плоской, а FS как бы содержит смещение (хотя физически, понятное дело, он содержит селектор сегмента, а уже база этого сегмента является смещением в плоском виртуальном адресном пространстве процесса). В тех процессорах, где сегментации в столь явном виде нет (например, в Альфе) смещение до TEB должно находиться в каком-то из обычных регистров общего назначения, и там оно будет уже "честным" смещением, а не селектором.

    Не забывайте об универсальном характере ОС от Майкрософт. Она не закладывается на уникальные особенности архитектуры ни одного из процессоров. Поэтому-то и сегментацию ИА-32 она не использует (FS, как я выше описал, особый случай, "логически" сегментацией не являющийся), потому что тогда невозможно будет реализовать одинаковую с точки зрения модель управления памятью на разных процессорных архитектурах.
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Потому что обсуждение идёт только в контексте IA-32. Это раз. Во-вторых, когда Вы пишете: "виртуальный в Винде -- это логический в ИА-32", — Вы опять говорите об IA-32, а не о каких-то других платформах.
    И то, что абстракция на уровне ОС (виртуальный адрес) не является высшим уровнем абстракции на уровне аппартной платформы (логический адрес), ИМХО не должно Вас смущать и вообще иметь какое-либо значение.
    ИМХО из этих двух цитат абсолютно однозначно следует, что виртуальный адрес Microsoft - линейный адрес Intel:
    Давайте рассмотрим конкретный пример. Пусть есть два различных дескриптора сегментов. Первый дескриптор имеет базу 0, а второй дескриптор имеет базу 80000000h. Пусть есть два различных селектора сегментов: первый селектор 23h указывает на первый дескриптор, а второй селектор 27h указывает на второй дескриптор.
    Есть два различных логических адреса:
    Код (Text):
    1. 23h:80000000h          27h:00000000h
    Я думаю, что Вы не станете возражать, что они соответствуют одному и тому же линейному адресу:
    Код (Text):
    1. 80000000h                80000000h
    А вот теперь для каждого логического адреса назовите соответствующий виртуальный адрес в терминологии Microsoft.
     
  5. SII

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

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

    Я, тем не менее, упомянул ещё несколько платформ и указал, чем там будет виртуальный адрес в терминах Майкрософт.

    Из этих цитат вообще абсолютно ничего не следует. Майкрософт описывает свою программную абстракцию, а Интел -- свою конкретную аппаратную реализацию. То, что и там, и там имеет место ссылка на страничный механизм, не делает их эквивалентными.

    Майкрософт пишет, что "the system maintains a page table for each process, which is an internal data structure used to translate virtual addresses into their corresponding physical addresses", но из этого не следует, что в физические адреса транслируется непосредственно виртуальный адрес. Это говорит лишь о том, что в конечном счёте виртуальный адрес с помощью таблиц страниц будет преобразован в физический. Будет ли он предварительно подвергаться ещё каким-то воздействиям или нет, здесь ничего абсолютно не говорится, и правильно не говорится: процитированный кусок описания от Майкрософт не ориентирован строго на ИА-32, а относится к любой платформе. На Альфе и на Итаниуме виртуальный адрес будет непосредственно преобразован в физический с помощью таблиц страниц, а на ИА-32 и ПоверПЦ над ним ещё успеют поиздеваться с помощью других механизмов, уникальных для этих архитектур.

    Этот конкретный пример не является универсальным в том смысле, что он строго заточен под ИА-32, Винда же -- универсальная система.

    Фактически в этом примере имеем то же самое, что с TEB и регистром FS: использование селектора сегмента фактически в роли смещения внутри плоского виртуального адресного пространства. Мера эта во многом вынужденная: у ИА-32 очень мало регистров, к тому же они специализированные (ESI, EDI, ECX нужны для строковых операций, EAX и EDX -- для умножения-деления, EBP исторически используется для доступа к операндам в стеке, так что относительно свободным является лишь EBX).

    И ещё насчёт смещений и прочего. Разве не предполагают все кроссплатформенные функции API, что передаваемые в них адреса отсчитываются от начала виртуального адресного пространства процесса, а не от какой-то произвольной базы?
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Это смешно.
    Anybody: Не подскажете, какой функцией в винде вывести сообщение на экран?
    Anybody_else: MessageBox.
    SII to Anybody_else: Это неверно(!), потому что нельзя зацикливаться на одной винде.
    Простите, но для винды это всё таки верно.

    Ещё раз повторяю: обсуждение идёт только в контексте IA-32. И виртуальный адрес Windows - это линейный адрес в IA-32. И не важно, что там на других платформах. Именно поэтому пример "заточен" под IA-32. И учитывая то, что мы обсуждаем IA-32, ответьте всё таки на вопрос из поста 84.

    В фразе: "виртуальный в Винде -- это логический в ИА-32", — Вы упомянули исключительно IA-32, для которой это неверно.

    Ничего не знаю насчёт их кроссплатформенности, но предполагают. Именно поэтому явно в функции передаётся только смещение, а неявно также предполагается нулевая база.

    [ADDED]
    Вот и ответьте строго под IA-32. Можете даже подчеркнуть в ответе: "Для IA-32...".
    [/ADDED]
     
  7. SII

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

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

    Вот именно это смещение эти функции и считают виртуальным адресом. Собственно, Майкрософт вроде как их так и называет (во всяком случае, я так это понял из сообщения defaultplayer в конце прошлой страницы).

    Вопрос некорректен. Сравните две команды ИА-32:

    MOV EAX, var1
    MOV EAX, var1 [EBX]

    Так вот, вторая форма логически является тем же самым, что, например, MOV EAX, FS:var1, если база сегмента, селектор коего загружен в FS, равна значению EBX. Т.е. сегментация используется в качестве механизма базирования внутри одного и того же адресного пространства, а не для создания независимых адресных пространств (для чего сегментация предназначалась изначально; почему, собственно, Интел указывает на адресное пространство задачи как сумму адресных пространств сегментов, ведь с точки зрения Интел полное перекрытие сегментов -- лишь частный случай).

    Поэтому в том случае, когда адресация на ИА-32 в Винде ведётся относительно нулевой базы (через "штатные" значения селекторов сегментов), мы получаем, что виртуальный адрес = смещению логического адреса = (численно!) линейному адресу. В случае же, если используется селектор сегмента с отличающейся базой (например, как это имеет место в случае FS), получается, что виртуальный адрес = сумме смещения и базы = (численно) линейному адресу. Вы из этого заключаете, что виртуальный адрес -- это и есть линейный адрес. Но на самом деле программист работает не с линейным адресом, а с виртуальным, и ненулевая база сегмента -- это лишь аналог использования в качестве регистра базы любого из регистров общего назначения. Никаких дополнительных возможностей при этом не возникает, адресное пространство не расширяется и т.п.
     
  8. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    Извините, но здесь Вы уже врёте. В данном утрированном примере некто Anybody прямо написал, что ему нужно вывести сообщение в Винде, а не в Линухе и в Макоси, и, естественно, я б не стал утверждать, что ответ "MessageBox" является неверным. Так что с Вашей стороны -- клевета и поклёп :-P

    Ну а что касается нашей темы, то Майкрософт нигде не пишет, что все ЕЁ рассуждения относительно виртуального адреса относятся только к ИА-32, а значит, Вы не имеете права делать какие-то предположения относительно сущности этого самого виртуального адреса, основываясь только на реалиях ИА-32. Извольте учитывать и другие архитектуры, под которые проектировалась Винда.
     
  9. l_inc

    l_inc New Member

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

    P.S. Если я не отвечаю на каждую высказанную Вами мысль, это не значит, что я с ней согласился. Просто стараюсь не растягивать обсуждение.
    P.P.S.
    Моё мнение в том, что программист в общем случае не работает ни с линейным, ни с виртуальным адресом (которые всегда(!) равны). В общем случае он работает с логическим адресом. Но т.к. чаще всего (но не всегда(!)) база принимается равной нулю, то смещение из логического адреса становится численно(!) равным виртуальному (а соответственно и линейному) адресу.
     
  10. SII

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

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

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

    В том, что Вы используете аппаратно-зависимый трюк, а терминология рассчитана не на трюки, а на обычное, "правильное" использование.

    В общем, я не вижу смысла продолжать разговор. Пока Вы не отойдёте от жёсткой привязки к ИА-32, толку никакого не будет... Кстати, подумайте на досуге о том, что такое виртуальный адрес в 64-разрядной Винде на той же самой платформе ИА-32.
     
  11. SII

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

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

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Я бы мог к каждой фразе подобрать контр-аргумент :), но, учитывая, что ни Вы, ни я не хотим продолжать обсуждение, на этом и закончим. Мне теперь интересно, что скажет defaultplayer.
     
  13. Zitzy

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    объясните пожалуйста такой момент:
    все-таки вирт. АП винды == вирт. АП по мнению ИА-32? и почему во всех книгах пишут,что вирт. АП в винде максимально может быть = 4 Гб ? т.е. МС специально его так ограничили? тогда получается, что автор статьи немного заблуждается.
     
  14. SII

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

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

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    и все же? просто похожие обсуждения ведутся на 2 разных форумах. хочется узнать окончательный ответ. пока все идет к тому, что автор статьи(ссылку на которую я привел) прав.
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Zitzy
    Не провоцируйте цепную реакцию. :) Мнения разделились, и их объединение не предвидится. Прочитайте эту тему целиком. Вся аргументация здесь. Больше вряд ли кто-то скажет. При всём уважении к Broken Sword, который наверняка знал на порядок больше, чем я сейчас, ещё тогда, когда я пешком пацтол ходил, моё ИМХО — он неправ.
     
  17. defaultplayer

    defaultplayer New Member

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

    Конструктива с вашей стороны опять не последовало. К сожалению мы так неприйдем к единому мнению. Я рассматриваю и вашу позицию, но ваши мысли практически все время противоречат друг другу, что не дает мне возможности принять вашу точку зрения как единственно верной.
    Что мешает вам сделать вывод, о том, что виндоус разрабатывалась не под одну платформу(на что вы делаете постоянный акцент, и подразумевается что с этим согласны), и она рассчитана на работу только в плоском АП(с этим согласны?), поэтому в ИА-32 она выбирает сегментированную модель под название flat(с этим согласны?), которая является единственным случаем максимально напоминающем модель без сегментированного логического ап(с этим согласны?), и поэтому понятие «виртуальный» майкрософт применяет только к несегментированному ап(линейному) (с этим не согласны), и в своей литературе рассказы о сегментации опускает(с этим согласны?), так как она присутствует, например, только на ИА-32. Все сказанное выше при этом никак не портит ихнюю документацию, и не является противоречивым.
    Не валяйте дурака, я уже давал ссылку

    l_inc
    http://msdn.microsoft.com/en-us/library/bb332189.aspx
    поддерживаю, тоже на них учился, и из каких бы хороших побуждений он нехотел нам поведать истину она такой неявляется, я так думаю
     
  18. Zitzy

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    SII, Ваши рассуждения мне нравятся, но можете объяснить такое: CS и DS различаются(видно тем же windbg), почему у нас тогда по мсдн всего 4Гб(верхние 2 Гб под ОС пока не принмиаем во внимание) вместо 8Гб+4Кб ? А то читаю попутно 2 форума на одну и туже тему, запутался совсем.

    А вам, товарищи defaultplayer и l_inc, такой вопрос: что же будет виртуальным АП в понимании ИА-32, если вирт. АП винды = линейному АП интел?
     
  19. SII

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

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

    Виртуальное адресное пространство -- это то, с чем непосредственно имеет дело программист. В Винде оно, как известно, плоское, т.е. все теоретически возможные адреса входят в один набор (в противоположность сегментированной модели, где таких наборов несколько -- у каждого сегмента свой). Как бы программист не извращался, плоским оно быть не перестанет. На ИА-32 можно, например, создать дескриптор, прописать в нём ненулевую базу и задать ограниченную длину, однако этот дескриптор не даст доступа к какому-то иному пространству, не являющемуся частью общего виртуального адресного пространства, он лишь обеспечит альтернативный способ базовой адресации и одновременно защиту от выхода смещения за допустимые пределы, что может быть удобно и полезно, но принципиально новых возможностей не даёт. Именно по этой причине я привёл пример с разными вариантами команды MOV. Хотя технически команда вида MOV EAX, FS:что-то-там является, конечно, иной по сравнению с MOV EAX, адрес или MOV EAX, [EBX], при плоской модели памяти суть у них остаётся одинаковой, ведь обращение через нестандартный дескриптор не обеспечит доступ в иное адресное пространство, недоступное более "естественным" путём. Т.е., если при сегментированной модели памяти обращение через разные селекторы сегментов обеспечивают доступ к разным адресным пространствам, в общем случае недоступным с помощью иных селекторов, то в случае плоской модели любые обращения ведут в одно и то же пространство.

    Ну, всё время противоречить они не могут, хотя я не всегда, конечно, прав. Но вот что я недостаточно чётко выражаюсь, из-за чего меня не всегда верно понимают -- это вполне вероятно.

    Почти что так :) Я, конечно, согласен, что Майкрософт разрабатывала ОС под достаточно произвольную платформу и что хотя бы поэтому выбрала плоскую модель виртуальной памяти, потому что сегментированная модель требует для реализации особой аппаратной поддержки, отсутствующей на большинстве платформ. Конечно, по этой же причине на ИА-32 применяется модель flat, поскольку она является "эмуляцией" плоской модели памяти, и по этой же причине в своей литературе она молчит про сегментацию: в Винде её просто нет на "логическом" уровне (на "техническом" применительно к ИА-32 она, конечно, есть, ведь отключить аппаратную сегментацию невозможно). Это не портит документацию и не делает её противоречивой (там есть, конечно, недостатки, но они не являются следствием такого подхода).

    Остаётся только именование линейного адреса ИА-32 виртуальным, с чем я действительно не согласен. Численно, "технически" виртуальный адрес Винды действительно равен линейному адресу ИА-32, однако Майкрософт говорит, например, о передаче виртуальных адресов в функции, а передать линейный адрес нельзя, ведь он существует только во внутренних цепях процессора как "временное явление" в процессе преобразования логического адреса в физический. В то же время мы прекрасно понимаем, что на ИА-32 реально в функции передаются не полные адреса, а смещения из состава логических адресов, при этом подразумевается, что селектор сегмента указывает на дескриптор, имеющий нулевую базу (т.е. равен "нормальному" содержимому DS). Что произойдёт, если программист слепит свой дескриптор с ненулевой базой, загрузит его селектор в DS и попробует вызвать какую-нибудь стандартную функцию API, передав ей правильное смещение для данного дескриптора, я не знаю. Возможно, всё отработает корректно, а возможно, возникнет глюк. Я это не проверял и не удивлюсь, если Вы это знаете лучше меня. Однако для Винды подобное будет трюкачеством, которое на концептуальном уровне в неё не заложено хотя б в силу того, что система поддерживает разные аппаратные платформы, и узкоспецифическая вещь не может быть положена в её основу. Документация же по системе написана именно на концептуальном уровне, без привязки к особенностям аппаратной реализации. По этим причинам я и считаю, что правильным будет дать примерно такое определение: для программиста виртуальный адрес Винды -- это смещение из логического адреса ИА-32, но при этом подразумевается, что в CS, DS, ES и SS находятся стандартные значения (что и имеет место во всех сколько-нибудь "стандартных" программах, ну а какие-нибудь системы защиты от взлома не в счёт -- они по своей сущности должны строиться на трюках).

    Естественно, в серьёзной статье необходимо всё же осветить трюк с нестандартными дескрипторами, а также использование FS. Но тут надо сразу оговориться, что это уже аппаратно-зависимая реализация, поэтому "нормальные" виртуальные адреса в этом случае уже не работают. Однако суть здесь сводится к тому, что нестандартные дескрипторы сегментов (в том числе и тот, чей селектор загружается в FS самой системой) не нарушают плоского характера модели памяти, единства и неразрывности виртуального адресного пространства; они используются фактически в роли базовых регистров, т.е. принципиально обращение вроде MOV EAX, [EBX] означает то же самое, что MOV EAX, FS:0 -- в том, конечно, случае, если в EBX загружен правильный базовый адрес. Особенно хорошо это заметно в 64-разрядном режиме, где сегментации как таковой уже нет и на техническом уровне, а FS и GS фактически превратились в дополнительные базовые регистры.

    Не валяю, чесслово. Вот по этой ссылке: http://msdn.microsoft.com/en-us/library/aa366912.aspx я ничего про раскладывание не вижу. Если речь о другом, то всё ж дайте её, пожалуйста.

    Zitzy
    Откуда Вы взяли ещё +4 Кб, я объяснить не могу. А вот почему CS и DS различаются -- запросто. Дело в том, что дескрипторы сегментов в ИА-32 могут задать три вида доступа к сегменту: либо только чтение, либо чтение-выполнение, либо чтение-запись. Но нет возможности одновременно задать чтение-запись-выполнение. Именно поэтому необходимо использовать два дескриптора: один для доступа на чтение-выполнение (его селектор заносится в CS) и другой для доступа на чтение-запись (его селектор заносится в DS, ES и SS). Однако, за исключением режима доступа, эти дескрипторы одинаковы: у них задана нулевая база и максимальный предел, т.е. они обеспечивают доступ к абсолютно одной и той же памяти, только с разными разрешёнными видами доступа.
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Все равно не понимаю, о чем вы тут спорите уже на 4 страницы.
    Так же можно сказать и про страничную трансляцию - как бы не создавались таблицы страниц, это не даст доступа к какой-то другой физической памяти.
    Но я не хочу ни с кем спорить ,поскольку мне жалко свое и чужое время) И останусь при своем мнении - что виртуальный адрес это 48 бит (сегмент:смещение) и по логике сегментное преобразование мало чем отличается от страничного ( и то и другое дает возможность разными адресами (в первом случае виртуальным, во втором линейным) адресовать одни участки памяти (в первом случае виртуальной, во втором - физической)). А в MSDN линейный адрес называется виртуальным для краткости из-за плоской модели.