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