Организация памяти в ОС семейства Windows

    Пост создан для публикации одной единственной картинки (кликабельна). На мой взгляд, она как нельзя лучше передаёт атмосферу того как устроена память в компьютере. Я изобразил её на 3-4 курсе института на A4 при объяснении положения дел товарищу. Так она мне тогда понравилась, что дал себе обещание нарисовать её в электронном виде.

    Исходник в формате VSD (Microsoft Visio) лежит у меня в DropBox. Если имеются уточнения, поправки, комментарии — прошу под кат.

    Отношение между ВАП и ВП:


    Образ загружается в виртуальную память системы (ВП) единожды и проецируется в те виртуальные адресные пространства (ВАП), в которых он востребован. Образ EXE или DLL идентифицируется уникальным путём к файлу. Соответственно, если к одному и тому же файлу ведут несколько путей, можно произвести множественную загрузку одного и того же модуля. В системе имеется набор DLL, которые подгружаются во все программы, такие как kernel32.dll и прочие…

    Отношение между ВП и ФП:


    Физическая память (ФП) состоит из страниц. Любой модуль EXE или DLL занимает некоторое число таких страниц. При загрузке системой модулей для них ищутся свободные страницы, в которые загружается образ файла. Модули проецируются в виртуальную память и загружаются в физическую по мере необходимости средствами ОС. Также проецирование можно использовать для пользовательских файлов (также называется маппинг файлов — mapping).

    Отношение между ФП и железом:


    Операционная система может по своему усмотрению перемещать страницы физической памяти в файл подкачки и обратно. При обращении исполняемого кода к странице, находящейся в файле подкачки, производится выгрузка страницы в ОЗУ. Если к странице долгое время не осуществлялся доступ и возникла потребность в памяти, ОС может перемещение страницы в файл подкачки.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 25

      +8
      Мне кажется, картинка требует пояснений :)
        0
        Сейчас допишу основные моменты…
          +9
          Да там же и так ясно сия ОС часто делает фап-фап-фап… 8)
          • UFO just landed and posted this here
          +1
          Еще неплохо бы указать разделение на код\данные.
            0
            Гарвардскую архитектуру что ли увидеть?
            • UFO just landed and posted this here
              +1
              Может дорисуете (исходник то я выложил)? Ведь не хочется прямо таки уж усложнять…
                0
                Увы, у меня совершенно антидизайнерские наклонности, все что связано с изобразительным искусством и инфографикой выходит уродливым.
              +1
              Может я что-то не понимаю, но в чем принципиальная разница между файлом подкачки на SSD и на HDD?
                –1
                Ну это просто для примера… что файл подкачки он не один может быть… Два одинаковых диска выглядели не очень…
                • UFO just landed and posted this here
                  –1
                  Зачем так много пробелов? В NT ведь есть дефрагментация памяти (да где её нет...).
                    +2
                    Ну это просто чтобы показать, что сегменты в общем случае находятся не рядом.
                    +6
                    Недоделанная какая-то статья!
                      0
                      Я об этом предупредил в первом же предложении…
                      +5
                      А где память устройств? Буфера? Видео память?
                      Теперь наверное уже «классический» пример: 4 ГБ ОЗУ и 32-битная ОС.
                        +2
                        Если интересна эта тема то рекомендую глянуть книгу The Design and Implementation of the FreeBSD Operating System где *очень* хорошо описывается как работает виртуальная память в BSD/Mach/XNU (macosx). Эти алгоритмы в большой степени применимы к любой другой ОС.

                        Если интересно Linux specific detail то рекомендую книгу Understanding the Linux Kernel.
                          +1
                          Мне было проще писать на картинке EXE и DLL, потому написал, что это для Windows… Впринципе, эта картинка относится ко многим ОС…
                          –1
                          Да там же и так ясно сия ОС часто делает фап-фап-фап… 8)
                          0
                          А где кэш 1 2 3 уровня на этой картинке? И как из этой картинки можно понять реализацию страничной адресации?
                          Тема на самом деле интересная, но стоит довести до ума статью.
                          • UFO just landed and posted this here
                              0
                              В этой картинке нет LDT
                                0
                                В GDT, LDT в современных ОС загружаются заглушки, на amd64 их вообще сначала не было (а причина добавления — виртуализация, что сейчас не актуально благодаря аппаратной поддержке). Так что используются по сути исключительно страницы.

                          Only users with full accounts can post comments. Log in, please.