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

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

  1. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    defaultplayer
    Линейной адрес его пощупать трудно. Это как электроны. Вроде бы есть, а пощупать нельзя и увидеть нельзя.
    Нужно что-то чтобы отразились его свойства. Так и с линейным адресом нужно сделать плоскую память припомощи задания сегментов с базой ноль и пределом 4ГБ.
    Виртуальный он шире и подходит. Захотели использовать этот термин использовали. Тем более это более универсально и возможно тот, который писал спецификацию о линейном адресе вовсе не знал. Или просто фазы луны совпали.
    Интел просто решило назвать свою абстракцию линейным адресом. Название верно, но суть отражает очень плохо. А придумывать какой-то специфический термин не стали.
     
  2. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    Mika0x65
    я обратное нигде не утверждал

    несовсем понял что здесь вам неясно, косвенный через таблицы, прямой не через таблицы
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Если страничное преобразование включено, то все адреса подменяются по таблице. Если выключено -- ни один не подменяется.
     
  4. defaultplayer

    defaultplayer New Member

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

    самое интересное что из всей литературы интел, в литературе 1987 года, я нашел все-таки два упоминания виртуального адресного пространства, в первом случае использовалось для описания логического АП, во втором при описании пэйджинга, и значит линейного АП. В дальнейшей литературе этот термин был удален.
     
  5. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    Mika0x65
    это утверждение очевидно на первый взгляд, так как зачем подменять 1 на 1 например , это же непроизводительно. Но вы ошибаетесь, в реальном режиме физическое адресное пространство меньше линейного и поэтому процессор преобразовует логический FFFF:0010 в линейный 100000 а его подменяет на физический 00000.
     
  6. SII

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

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

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    defaultplayer
    Ну, во-первых, не всегда подменяется ;). Во-вторых, это не подмена, а просто обрезание адреса, т.к. разрядность не позволяет.
     
  8. defaultplayer

    defaultplayer New Member

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

    SII
    логический 48-ми разрядный и программы имеют дело именно с ним явно(far указатели) или неявно(near), а майкрософт говорит о разбиении 32-х разрядного, называя его виртуальным, значит виртуальный и логический не взаимозаменяемые термины, очевиднее термином виртуальный майкрософт заменяет термин линейный, но вот по какой причине я и хотел бы выяснить.
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    defaultplayer
    Нельзя все воспринимать буквально. Все слова субъективные. Что тяжелая работа это там где тяжести носят? Или все же там где устают больше? Ну не 48 бит логический. И вообще не в битах дело.

    Майкрософт говорит о виртуальном по отношению к процессу. Так что не 32 там, а больше, так как процессов больше.
    Термин линейный Майкрософт не заменяет, она им просто не пользуется. Да и какая линейность если есть разбиение? И о каком разбиении идет речь? Поэтому виртуальный все верно. Процессов больше физического размера памяти может быть меньше. Поэтому виртуальный адрес. Так как не строгого соответствия физическому.

    Нелинейный. Потому что этот термин не отражает сути. Есть у нас разбиение, а это значит что адреса могут идти как угодно. Вот до 4ГБ линейно? ДА у нас идет 0 1 2 3 и тд. А если посмотреть как в физической памяти 0 1 5 10 15. Не линейный. Поэтому термин линейный тут не к чему.
    Интел ввила понятие Линейного адреса ну и что. 4ГБ ограничило. А то что он в физической памяти не линеен, то это как? Линейный адрес не линеен ну нонцес! Однако в области задачи преобразования адресов можем ввести.

    Вот есть такая вещь в математике как сингулярность. Казалось бы, если скорость все время падает, то точка недолжна пройти заданный отрезок однако проходит. Нет разрыва. Так и тут в конкретной точке можно сказать тут есть линейность. Но когда мы выходим на другой уровень абстракции ставим себя в другие условия уже все меняется. И никогда автомобиль если будет все время сбрасывать скорость не проедет бесконечный маршрут. Просто остановиться.
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Еще раз повторю виртуальный адресс в виндоусе это процесс:смещение. И говорить что он линеен глупо. Смотри выше. На 86 процесс можно представить как сегмен:смещение или CR3:Смещение. Или просто ввести переменную п. И делать переключения страниц в таблице преобразований адрессов. Или загружать выгружать все из памяти. Просто это опускается из вида.
     
  11. SII

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

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

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    Pavia
    субъективный это обратный объективному, а объективность это реальность, 48-ми разрядный адрес это реальность, ну не код же мне вам приводить, и интел об этом не двусмысленно пишет.
    "A logical address consists of a 16-bit segment selector and a 32-bit offset"

    и интел говорит по отношению к задаче, только о линейном

    а если 0 1 2 3 тождественно на 0 1 2 3? можно использовать термин линейный?

    да, действительно как это, линейный адрес в физическом адресном пространстве где только физические адреса?
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    defaultplayer
    Где реальность? В 8086? Реальность 32. В x86 реальность 48 в x86-64 реальность 64 бита. И не говорите что там нет сегментов есть, даже если захотеть то ими можно пользоваться.

    Не говорит она такого. Опять ты пытаешься выдать желаемое за действительное.
    Пойми ты что мир не сосредоточен в одной точке.

    Задорнова слышал как старушка свиней называет собаками? А немец понять не может где свиньи где собаки. тут вопросив в том : стоит так называть или нет? Поймут тебя или нет?
    Так вот слово линейность никак не подходит того что ты под ним понимаешь. Да и МС еще раз повторюсь, делает виндовс для разных платформ. Хочет она называть это виртуальным и делает и имеет право. Делает это верно потому что понимает совершенно другое нежели чем ты пытаешься этому приписать. А Интел говорит о своем в конкретной области. Не зачем собаку свиньей называть хоть она грязная и пахнет плохо. Есть кошка зовут Белка. Ты же не будешь писать, если она пропадет: “пропала белка”. Ты напишешь: “пропала кошка”.

    А что не линеен чтоли. Вот она память мегабайт за мегобайтом идет линейно.
    Физическии адресса они физически представленны шиной на материнке. Не не увелбнеш ты строго одна за другой лини.
     
  14. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    defaultplayer
    Есть такой фильм. "Расписание на послезавтра" Фильм специально для тебя. Остальные могуп посмотреть фильм. Фильм не скушний, только его нужно прочувствовать понять и осознать. А не просто бездумно посмотреть.
    И ответь на вопрос "Розовый конь в природе существует?"

    офтотоп. Предлагаю бойкотировать первый канал в новогоднею ночь, так как он уже не первый новый год показывает какую-то ерунду.
     
  15. defaultplayer

    defaultplayer New Member

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

    http://msdn.microsoft.com/en-us/library/ms810616.aspx

    Pavia

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

    до этого момента вы понимали о каком процессоре и операционном режиме идет речь, хотел еще написать в прошлом посте когда цитировал интел, ну да ладно..

    "Each task has its own linear address space that is mapped to the physical address space"
     
  16. Pavia

    Pavia Well-Known Member

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

    Простите. Я думал она не писала. Просто это подрузомивывалось. Но это не меняет картины.
    Зайдем с другой стороны ты в каком номере квартиры живешь? У вас в доме номера идут по порядку? Если идут значит они линейны однако не 48 битные. Так что надеюсь понятно что термин линейное адрестное пространство шире. А виртуальное оно потому что не физическое.
    Физическии и виртуальные адресса они по сути линейны оба. А вот когда смотришь на отоброжение то оно не линейно. Нужно отличать поэтому говорить о линеном адрестном пространстве не корректно ну не отрожает оно сути картины. Несно это линейное физическое или линейное виртуальное адрестное пространство.
     
  17. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    defaultplayer
    Ещё один раз для особо одарённых. В Винде используется ПЛОСКАЯ модель памяти, и прикладной программист НЕ РАБОТАЕТ с селекторами сегментов. Поэтому С ТОЧКИ ЗРЕНИЯ ПРИКЛАДНОГО ПРОГРАММИСТА весь виртуальный адрес -- это 32-разрядное смещение. Хотя С ТОЧКИ ЗРЕНИЯ ПРОЦЕССОРА и ОПЕРАЦИОННОЙ СИСТЕМЫ виртуальный адрес по-прежнему 48-разрядный, и иных вариантов в рамках 32-разрядной архитектуры ИА-32 НЕТ И БЫТЬ НЕ МОЖЕТ.

    МСДН пишется для ПРИКЛАДНЫХ ПРОГРАММИСТОВ, которые работают ТОЛЬКО СО СМЕЩЕНИЯМИ. Поэтому там 32-разрядное смещение и называется виртуальным адресом, хотя это только ЧАСТЬ настоящего виртуального адреса. И применяется такое вольное обращение с терминами для того, чтобы не забивать текст более длинными выражениями вроде "смещения из состава полного виртуального адреса".
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Может. Я уже в какойто ветке приводил пример. С точки зрения ОС виртуальный адресс может быть таким. Компьютер:процесор:сегмент:смещение, а на какой архитектуре не важно.
    Для процессора CR3:сегмент:смещение. В рамках мануэлов сегмент:смещение. В рамках приклодников он вообще состоит из смещения.
     
  19. defaultplayer

    defaultplayer New Member

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

    процессору фиолетово, какой там программист и с чем он там не работает

    нет точки зрения операционной системы, это ваша точка зрения, ОС адреса не преобразовует, это делает процессор, и он незнает операционная система это или нет, он распознает привелигированный код и непревелигированный(или менее, более)

    ага, ага, селекторы это фигня, но про таблицы страниц им надо рассказать

    это вообще хит. И вдруг откуда невозьмись виндоус функция обратилась к сегменту через сегментный регистр fs по смещению 120h байт. Ой-ой, а смещение, которое вы называете "смещения из состава полного виртуального адреса", совсем неравно линейному адресу, тааа пофигу, расскажем ПРИКЛАДНЫМ ПРОГРАММИСТАМ, что и этот "виртуальный" адрес можно разложить на три части, ведь они та про TEB нифига не подозревают. Та вы походу вообще не в теме.
     
  20. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    defaultplayer
    Вот именно что процессору фиолетову. И программисту фиолетово на проц. Он знает что у него есть адресс и ему не важно как он преобразовывается в физический. Ему нужно знать что разные процессы не получат доступ. А то что адресса совподают. Так на то и виртуальные адресса.

    Спорное утверждение, а кто задачи переключает а кто CR3 меняет? Я вызываю MMIOSpace задаю физический адресс мне ОС возращает виртуальный. Вот она работа ОС.

    Конечно фигня. И страницы тоже. Но страницы важнее. Сегменты в виндоусе не используются, а используются страницы. А что бы их переключить используется CR3. И делает это ОС. Программисту по сути фиолетово кто там преобразовывает страницы ОС или процессор. Можно ведь сделать исключение и подменять страницы вручную, тоесть средствами ОС. Собтвенно так и происходит. То есть все-таки с точки зрения программиста приклодника адреса преобразовывает ОС.

    А то что в вашей ссылке рассказывается про странице и линейный адресс. Ну так это статья некоторого человека про страницы как они работуют. Потому что многии не понимают. Вот он и пробовал объяснить на языке обывателя работу процессора. Так что бы не обовсем, а только о частном. Статья не очень удачная. Может он тоже со слов кого-то писал. Мы же не знаем.