Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 24 стр.

UptoLike

Виртуальные страницы могут отображаться операционной системой
в страницы физической памяти, могут храниться в файле подкачки, а так-
же могут быть вообще недоступны процессу. Обращение к недоступной
виртуальной странице вызывает аварийное завершение процесса с сооб-
щением «Access violation».
Адресное пространство процесса называется виртуальным, потому
что процесс для работы с памятью использует не реальные адреса физиче-
ской памяти, а так называемые виртуальные адреса. При обращении по
некоторому виртуальному адресу происходит перевод этого виртуального
адреса в физический адрес. Перевод виртуальных адресов в физические
адреса реализован на аппаратном уровне в процессоре и поэтому осущест-
вляется достаточно быстро.
Рис. 2.2. Перевод виртуального адреса в физический адрес
Рассмотрим на примере, как осуществляется перевод некоторого
виртуального адреса vx в физический адрес px (рис 2.2). Сначала вычисля-
ется номер vnum виртуальной страницы, соответствующий виртуальному
адресу vx, а также смещение delta виртуального адреса относительно на-
чала этой виртуальной страницы:
vnum := vx div 4096;
delta := vx mod 4096;
Далее возможны три варианта развития событий:
1. Виртуальная страница vnum недоступна. В этом случае перевод
виртуального адреса vx в физический адрес невозможен, и про-
цесс завершается с сообщением «Access Violation»;
2. Виртуальная страница находится в файле страничной подкачки,
Структура программных компонентов
35
2.1.1. Управление памятью в Windows
Прежде чем перейти к рассмотрению формата PE, необходимо пого-
ворить об особенностях управления памятью в Windows, так как без зна-
ния этих особенностей невозможно понять некоторые существенные де-
тали формата.
Управление памятью в Windows NT/2k/XP/2k3 осуществляет менед-
жер виртуальной памяти (virtual-memory manager). Он использует стра-
ничную схему управления памятью, при которой вся физическая память
делится на одинаковые отрезки размером в 4096 байт, называемые физи-
ческими страницами. Если физических страниц не хватает для работы си-
стемы, редко используемые страницы могут вытесняться на жесткий диск,
в один или несколько файлов подкачки (pagefiles). Вытесненные страни-
цы затем могут быть загружены обратно в память, если возникнет необхо-
димость. Таким образом, программы могут использовать значительно
большее количество памяти, чем реально присутствует в системе.
2.1.1.1. Виртуальное адресное пространство процесса
Каждый процесс в Windows запускается в своем виртуальном адрес-
ном пространстве размером в 4 Гб. При этом первые 2 Гб адресного про-
странства могут непосредственно использоваться процессом, а остальные
2 Гб резервируются операционной системой для своих нужд (рис. 2.1).
Рис. 2.1. Виртуальное адресное пространство процесса
Виртуальное адресное пространство также делится на виртуальные
страницы размером в 4096 байт. При этом процессу выделяется только то
количество виртуальных страниц, которое ему реально нужно. Поэтому
тот факт, что процесс может адресовать 4 Гб виртуального адресного про-
странства, еще не означает, что каждому процессу выделяется по 4 Гб опе-
ративной памяти. Как правило, процесс использует только малую часть
своего адресного пространства, хотя стремительное удешевление модулей
памяти способно в самое ближайшее время существенно изменить карти-
ну и вызвать повсеместно переход к 64-разрядным архитектурам.
34
CIL и системное программирование в Microsoft .NET
Зарезервировано
операционной
системой
Доступно процессу
4 ГБ
2 ГБ
0
Виртуальное адресное
пространство
Виртуальная
страница
vnum
delta
Виртуальный
адрес
vx
Физическая
память
Физическая
страница
pnum
delta
Физический
адрес
px
0 0
34                          CIL и системное программирование в Microsoft .NET   Структура программных компонентов                                            35


2.1.1. Управление памятью в Windows                                                  Виртуальные страницы могут отображаться операционной системой
                                                                                в страницы физической памяти, могут храниться в файле подкачки, а так-
     Прежде чем перейти к рассмотрению формата PE, необходимо пого-             же могут быть вообще недоступны процессу. Обращение к недоступной
ворить об особенностях управления памятью в Windows, так как без зна-           виртуальной странице вызывает аварийное завершение процесса с сооб-
ния этих особенностей невозможно понять некоторые существенные де-              щением «Access violation».
тали формата.                                                                        Адресное пространство процесса называется виртуальным, потому
     Управление памятью в Windows NT/2k/XP/2k3 осуществляет менед-              что процесс для работы с памятью использует не реальные адреса физиче-
жер виртуальной памяти (virtual-memory manager). Он использует стра-            ской памяти, а так называемые виртуальные адреса. При обращении по
ничную схему управления памятью, при которой вся физическая память              некоторому виртуальному адресу происходит перевод этого виртуального
делится на одинаковые отрезки размером в 4096 байт, называемые физи-            адреса в физический адрес. Перевод виртуальных адресов в физические
ческими страницами. Если физических страниц не хватает для работы си-           адреса реализован на аппаратном уровне в процессоре и поэтому осущест-
стемы, редко используемые страницы могут вытесняться на жесткий диск,           вляется достаточно быстро.
в один или несколько файлов подкачки (pagefiles). Вытесненные страни-
цы затем могут быть загружены обратно в память, если возникнет необхо-                            Виртуальное адресное
димость. Таким образом, программы могут использовать значительно                                      пространство
большее количество памяти, чем реально присутствует в системе.                                                                              Физическая
                                                                                 Виртуальный
                                                                                                                                              память
                                                                                    адрес
2.1.1.1. Виртуальное адресное пространство процесса                                   vx                                     Физический
     Каждый процесс в Windows запускается в своем виртуальном адрес-                                                           адрес
                                                                                                      Виртуальная
ном пространстве размером в 4 Гб. При этом первые 2 Гб адресного про-                                                            px
                                                                                                       страница
странства могут непосредственно использоваться процессом, а остальные




                                                                                          delta
                                                                                                         vnum                               Физическая
2 Гб резервируются операционной системой для своих нужд (рис. 2.1).
                                4 ГБ                                                                                                         страница
                                                                                                                                    delta




     Зарезервировано                                                                                                                           pnum
       операционной
         системой
                                2 ГБ                                                                                     0                               0
     Доступно процессу                                                               Рис. 2.2. Перевод виртуального адреса в физический адрес
                                0                                                    Рассмотрим на примере, как осуществляется перевод некоторого
      Рис. 2.1. Виртуальное адресное пространство процесса                      виртуального адреса vx в физический адрес px (рис 2.2). Сначала вычисля-
                                                                                ется номер vnum виртуальной страницы, соответствующий виртуальному
     Виртуальное адресное пространство также делится на виртуальные             адресу vx, а также смещение delta виртуального адреса относительно на-
страницы размером в 4096 байт. При этом процессу выделяется только то           чала этой виртуальной страницы:
количество виртуальных страниц, которое ему реально нужно. Поэтому                   vnum := vx div 4096;
тот факт, что процесс может адресовать 4 Гб виртуального адресного про-              delta := vx mod 4096;
странства, еще не означает, что каждому процессу выделяется по 4 Гб опе-             Далее возможны три варианта развития событий:
ративной памяти. Как правило, процесс использует только малую часть                    1. Виртуальная страница vnum недоступна. В этом случае перевод
своего адресного пространства, хотя стремительное удешевление модулей                     виртуального адреса vx в физический адрес невозможен, и про-
памяти способно в самое ближайшее время существенно изменить карти-                       цесс завершается с сообщением «Access Violation»;
ну и вызвать повсеместно переход к 64-разрядным архитектурам.                          2. Виртуальная страница находится в файле страничной подкачки,