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

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

  1. SII

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

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

    А что я дурак, мы это установили ещё страницы три назад, так что у меня ничего умного и не спрашивайте. Какой спрос с дурака-то?
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    топику теперь точно мандец..
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    defaultplayer
    Это уже Вам решать. И верить или не верить не нужно. Я просто показал, что противоречия нет. Всё, во что мы всю тему упирались, - это не противоречие, т.к. Microsoft просто говорит о разных вещах: в одном случае о семантике виртуального адреса, а в другом о синтаксисе.
    Ну просто так получилось, что гладко понятие виртуального адреса Microsoft не ложится ни на одно введённое Intel понятие. И что бы там SII не кричал про кроссплатформенность (хотя она, разумеется, играет свою роль), оно очень неплохо сочетается с понятием Intel виртуальной памяти, которая существует только при включённом пэйджинге (Intel её так ввела). Так вот чтобы положить виртуальный адрес Microsoft на понятия Intel, его приходится разбить на две составляющие: синтаксис и семантику.
    И Broken Sword ИМХО неправ не в том, что говорит, что виртуальный адрес Microsoft - это логический адрес IA-32, а в том, что говорит, что неверно высказывание о том, что виртуальный адрес Microsoft - линейный адрес IA-32. Оба высказывания - это части одной "истины". :)
    SII
    А это Вы зря. Лично я изначально ввязался в спор только по одной причине: мне не понравилось то, что написал defaultplayer в 39-м посте: "Та вы походу вообще не в теме". И "истиной" я назвал свой подход в качестве аналогии к фразе: "В споре рождается истина". Мне лично нравится думать, что спор - это не перепалка нескольких дураков, с пеной у рта друг другу что-то доказывающих, а обсуждение, которое в конце концов приведёт к истине, если у обсуждающих хватит достоинства не наезжать друг на друга.
     
  4. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    Верите...? нет?..Я вообще не читал что тут в теме понаписано..
    хотя увидел одну строчку..
    defaultplayer
    И просто не мог не отписать!...вспомнился случай..
    Захожу в супермаркет... покупаю торт..за рублей этак 300... 3 колы 2-х литровых.... вафельный торт..что-то ещё..уже не помню....вышло примерно на рублей 700...
    ну значит так.. подхожу к кассе, выкладываю всё это дело, ..кассир считывает штрих коды..со всех товаров... и ему монитор показыват =)... покупка на сумму 120 рублей (+ - копейки..).... я стою в непонятках.... думаю, что-то не так.... и мне говорят с Вас 120 рублей стокато копеек..и отпустили меня с богом........... я вообще тогда подумал следующее....
    Теперь люди верят тому, что показывает компьютер.......больше, чем глазам своим.......
     
  5. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
  6. SII

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

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

    Спор может привести к истине (и то не гарантированно) только в том случае, когда пытаются найти истину, а не отстоять свою точку зрения независимо от степени её соответствия истине.

    Попробуйте подойти формально-логически к попытке соотнесения того, что Майкрософт называет виртуальным адресом, и того, что мы имеем на ИА-32. Майкрософт пишет о виртуальном адресе, что: 1) он имеет размер 32 бита; 2) он передаётся в качестве параметра в различные функции API; 3) он посредством страничного механизма преобразуется в физический адрес.

    Если проанализировать то, что мы имеем на ИА-32, получится, что всем трём критериям удовлетворяет только то, что Интел называет смещением в составе логического адреса: 1) полный логический адрес имеет размер 48 бит, а значит, не удовлетворяет п. 1; кроме того, он сегментированный, а Майкрософт неявно предполагает, что виртуальный адрес "непрерывен" в связи с использованием плоской модели памяти; 2) линейный адрес программам прямо не доступен, а значит, не может передаваться как параметр, т.е. не удовлетворяет п. 2.

    Ну а смещение из логического адреса: 1) удовлетворяет п. 1, поскольку является 32-разрядным и "непрерывным"; 2) доступно программам и действительно передаётся в качестве параметра, называемого в документации Майкрософт "виртуальным адресом"; 3) оно преобразуется в физический адрес с помощью страничного механизма (да, через линейный адрес и при участии селектора сегмента, но, тем не менее, преобразуется). Единственное, что приходится дополнительно оговаривать, -- это необходимость нулевой базы для сегментов, что, однако, имеет место в действительности, а кроме того, подразумевается тем, что Майкрософт прямо говорит о плоском характере виртуального адресного пространства, т.е. не предполагает использование для его адресации чего-либо помимо 32-разрядного виртуального адреса.

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

    Просьба это как наезд не рассматривать. Это скорей призыв точно определиться с исходной базой, от которой ведутся рассуждения, и строго её придерживаться, если только в процессе обсуждения не обнаружится, что база имеет дефекты и нуждается в пересмотре.
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Проблема в том, что в мою базу, на которую я опираюсь, также входит то, что Вы называете исключениями. Я пытаюсь избежать этих исключений. И ещё один минус Вашего варианта в том, что Intel чётко пишет, что программы работают с логическим адресом (в то время как Microsoft при этом говорит о виртуальном адресе), а не со смещением логического адреса, даже если база равна нулю. И я не хочу об этом забывать. А соответственно просто так кусок логического адреса выкинуть нельзя.
    ИМХО я в посте 167 предложил вариант, при котором нет необходимости вводить исключения. Покажите, где противоречия в моём подходе.
    [ADDED]
    Я не игнорирую, а интерпретирую. Microsoft говорит, что я передаю виртуальный адрес? Отлично. А я знаю, что я передаю логический (не смещение, а именно логический!). Попробуйте поменять базу, оставив то же самое смещение. Поведение функции изменится? Изменится. Значит смещение - не единственный аргумент, передаваемый в функцию, а есть также и база, которая неявно в неё передаётся.
    [ADDED]
     
  8. SII

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

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

    Кстати, руководство Интел Вы зря сюда приплели. Точней, Вы на его основе сделали ошибочный вывод, что программы должны работать и со смещением, и с селектором логического адреса. Программы могут с ними работать, но на практике при использовании плоской модели памяти им достаточно одних смещений. Именно это (работу только со смещениями, но не с селекторами) Винда и подразумевает, ведь виртуальное адресное пространство в ней плоское. Ну а то, что программист может сделать финт ушами и начать самостоятельно работать с сегментами, концепцией системы не предусмотрено. Наличие некоторых функций для этого отнюдь не опровергает сказанное мною, потому что эти функции являются платформенно-зависимыми, ну а Винда концептуально является независимой от аппаратной платформы системой, о чём я говорю и буду говорить постоянно. Подобные платформенно-зависимые функции включаются в систему для увеличения её эффективности или возможностей на конкретных аппаратных платформах, но не более того.
     
  9. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    l_inc
    Ложь. Функции принимают в качестве адреса один 32-разрядный параметр, называемый в документации Интел смещением. Селекторы в функции не передаются. Ссылки на то, что это "типа глобальные переменные языка высокого уровня", не принимаются: в числе параметров функций АПИ никакие "глобальные", "неявные" и т.д. параметры не упоминаются и не предусматриваются; напротив, все параметры там расписаны чётко и недвусмысленно, и места для селекторов сегментов там нет. А то, что поведение функции при смене значения сегментного регистра поменяется (перестаёт соответствовать описанию в документации), говорит лишь о том, что создатель системы не предусматривает изменения значений сегментных регистров, а значит, подобное изменение противоречит замыслу создателя ОС.
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    SII
    Надоело. :)
     
  11. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    "Операционные системы" Х.М.Дейтел, П.Дж.Дейтел, Д.Р.Чофнес
    "Operating Systems" H.M.Deitel, P.J.Deitel, D.R.Choffnes
    Толстенный талмуд про устройство операционных систем и IA-32 тоже. У меня есть только в натуральном виде, а в интернете - не искал, может и не найдете.

    Я не буду читать все 8 страницы ответов, прилеплю только свое (цитата из этой книги):
    Кстати, из этой книги я только что узнал что в защищенном режиме 6 сегментов, а не 4! :)

    Сзади книжки написано:
    www.deitel.com - можно подписаться на рассылку новостей и, получить самые свежие сведения...
    deitel@deitel.com - связаться с авторами.
     
  12. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    #2 MSoft
    Это в Windows, в ней все сегменты - в одном адресном пространстве. А сегментов всего - 6, значит и вирт. памяти максимум = 4*6=24 Гб.

    #5 Mika0x65
    При отсутствии сегментации виртуальный адрес равняется линейному.
    То есть в реальном режиме ;). А там нет термина "виртуальный".

    #11 Pavia
    физический=линейный
    логический=виртуальный

    Дальше читать не стал.
    Я думаю, что надо чтобы кто-то один привел хорошие (а главное - правильные) примеры из хороших источников и все это взяли за основу. А так в этом длинном разговоре вы только путает друг друга.
     
  13. defaultplayer

    defaultplayer New Member

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

    определение просто сказка, как я ранее не догадался, ведь сегмент - это логический объект, множество адресов в нем и есть логическое ап. l_inc а вам как такое определение?
     
  14. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    defaultplayer
    Может мы не поняли друг друга? Windows приложения сует в одно адресное пространство (потому и модель памяти у нее - плоская) - все сегменты в нем - одного смещения. А реально x86 позволяет создавать эти сегменты непересекающимися. А раз макс. размер сегмента = 4 Гб, а сегментов - 6, то и макс. размер всего адресного пространства для процесса = 24 Гб.
    Это ты сейчас на цитату ругаешься?
     
  15. defaultplayer

    defaultplayer New Member

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

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Я что у меня там не так?
    P.S. Я там в #192 дал адрес авторов книги.
     
  17. defaultplayer

    defaultplayer New Member

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

    defaultplayer New Member

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

     
  19. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    defaultplayer

    > может кто-то качественно перевести цитату? она с мсдн

    на RSDN есть спец.форум по переводам, лучше спросите там: http://www.rsdn.ru/Forum/group/dictionary.aspx
     
  20. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Менеджер виртуальной памяти (VMM) в Windows NT совсем не похож на менеджер памяти использовавшийся в предыдущих версиях оперерационных систем Windows. Опираясь на 32-битную адресную модель Windows NT способна отказаться от сегментной архитекуры предыдущих версий Windows.
    Вместо этого VMM использует 32-битные виртуальные адреса для прямого доступа ко всем 4 гигабайтам процесса.
    На первый взгляд может показаться ограничением, что без сегмента для относительной адресации нет возможности перенести область памяти без коррекции адреса, который ссылается на нее.
    В действительности VMM может делать это используя виртуальную адресацию.
    Каждое приложение способно ссылаться на область физической памяти через конкретный, неизменный на протяжении всей жизни приложения, виртуальный адрес.
    Будет ли область памяти перемещена или сброшена на диск, VMM позаботится об этом абсолютно независимо от приложения, подобно изменению селектора в таблице дескрипторов (LDT)