Составители:
Рубрика:
Виртуальные страницы могут отображаться операционной системой
в страницы физической памяти, могут храниться в файле подкачки, а так-
же могут быть вообще недоступны процессу. Обращение к недоступной
виртуальной странице вызывает аварийное завершение процесса с сооб-
щением «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. Виртуальная страница находится в файле страничной подкачки,
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »