在windows系统中个,各个进程具有和谐独立的虚拟地址空间(Virtual Address
Space)。这一地方空间的深浅与总括机硬件、操作系统以及应用程序都有涉嫌。

windows虚拟内存机制,虚拟内存机制

在windows系统中个,各种进程具有本身单独的虚拟地址空间(Virtual Address
Space)。这一地方空间的轻重与电脑硬件、操作系统以及应用程序都有关系。

对于三二十一位程序来说,最多能使用2GB空间(0x000一千0-0x7FFEFFFF)。为了得到3GB的地点空间,在不一致的windows系统中得以依照如下方法来拓展增加。

1.操作系统方面

① 32位windowsXP

澳门金沙国际 1

② 三十一人win7 — 管理员权限执行命令:bcdedit /set increaseuserva 3072来打开

③ 6三人win7 — 对三十个人程序暗中同意开启3GB,无需额外安装

2.应用程序方面

无论叁拾伍位依旧6肆人windows若要让叁十一个人程序能拔取3GB内存,必须在链接时添加参数:
/LAENVISIONGEADDRESSAWARE

Windows大旨编程,虚拟内存机制。 

进程地址空间区段

澳门金沙国际 2

注:进度地址空间在低地址,操作系统内核在高地址

 

经过地址空间分布(以2GB为例)

澳门金沙国际 3

Windows系统在进度空间中专门划出一块0x九千0000 –
0x八千0000(共256MB)区域,用于映射这几个常用的系统DLL(如kernel32.dll、ntdll.dll等)

对系统DLL的暗中认同基地址进行调整,避免加载时争执,触发ReBasing(重定集散地址)

注:集散地址必须对齐到分配粒度(64KB)

 

Win7下,exe在PE文件中基地址为0x500000,DllPrj.dll的军事集散地址为0x一千0000且该地方未被别的dll占用;但实际exe被映射到0xEC0000,DllPrj.dll被映射到0x535A0000

生成exe和dll模块时,链接时采用了参数/DYNAMIChina Basketball AssociationSE(启用动态集散地址)

注:地址空间布局随机化, Address space layout randomization
(ASL汉兰达):防备恶意程序对已知地址举行抨击

 

windows内存分配进程可细化为以下三个要点:

① 保留一段虚拟内存地址空间:从进程的4GB中保存一段地址空间。//
带MEM_RESERVE参数的VirtualAlloc函数

   
开头地址必须是系统分配粒度的平头倍(64KB),大小必须是系统页面大小的整数倍(4KB)。

② 提交一段虚拟内存地址空间:将经过已封存的一段地址空间映射机器的虚拟内存上。//
带MEM_COMMIT参数的VirtualAlloc函数

    起先地址和尺寸都不可以不是页面大小的整数倍(4KB)。


将虚拟内存地址空间映射到大体内存页(RAM):在造访进程提交的页面被访问时,通过缺页中断(又名页缺失、页面错误,
PageFault)机制来实在分配物理内存页,同时修改对应页面的地方空间映射关系。

注1:在先后中所访问的地址都必须是保存并付出的虚拟内存地址

注2:可以应用VirtualFree来刑满释放保留或提交的虚拟内存地址空间

 

内存目的定义

澳门金沙国际 4

澳门金沙国际 5

虚拟内存:

Private Bytes  // 进度Committed的杜撰内存字节数
   对应win7义务管理器中的【提南开小】,能源管理器中的【提交】

Peak Private Bytes  // 进度Committed的虚拟内存的万丈峰字节数

Virtual Size // 进度Reserved的虚拟地址空间字节数

Page Faults  // 暴发过的缺页中断次数   
对应win7任务管理器中的【页面错误】

物理内存:

Working Set = WS Private + WS Shareable  // 进度占用物理内存总字节数
 对应win7任务管理器中的【工作设置(内存)】,财富管理器中的【工作集】

     WS Private //
进度独享的大体内存字节数(如:堆内存+栈内存+cow机制创制的内存)  
对应win7任务管理器中的【内存(专用工作集)】,财富管理器中的【专用】

     WS Shareable  //
进度可与其他进度共享的情理内存字节数(如:exe及dll代码段、数据段等)
 对应win7财富管理器中的【可共享】

     WS Shared  // 进度已与此外进度共享的大体内存字节数,WS
Shared<=WS Shareable

                         //
若只运维1个exe实例,那么exe的代码段、数据段等不会被共享,因此就不计算在WS
Shared中

Peak Working Set // 物理内存的最高峰字节数
 对应win7任务管理器中的【峰值工作设置(内存)】

注:无论是虚拟内存照旧物理内存下的逐条目标,都以通过总括用户态的那部分占用

 

页交流文件

页互换文件(Page
File):一般被看做可写物理内存页的后备存储器。Windows下该文件名为pagefile.sys,位于各盘的根目录中。

                                     
能够根据机器的软硬件情状来安装页互换文件的大小,甚至关闭页互换文件的行使。

澳门金沙国际 6

澳门金沙国际 7

 

页出(Page
Out):当物理内存不够时,系统会将一部分不平日拔取且有后备的情理内存页释放,并将虚拟地址映射关系指向后备。

①以页互换文件(如:堆、栈等)为后备:在页沟通文件中分配空间,并拷贝内容到内部后再自由

②以内存映射文件(如:exe、dll等)为后备:直接出狱

页入(Page
In):当系统读取某些虚拟内存地址,而该地址所在的页不在物理内存页中时,将时有暴发三个缺页中断,

告知系统从页互换文件或然内存映射文件中取回包括该地点的虚构内存页(即:将内容拷回到物理内存页,并建立新的虚拟地址映射到大体内存页上,然后释放页交流文件中对应部分的半空中)

 

写时复制机制

写时复制机制(copy on write,
COW):当WTiggoITECOPY属性内存页面被涂改时,会触发内存页拷贝,以此来节省物理内存和页沟通文件的占有。

注:系统在映射exe或dll文件时会把数据页内定为PAGE_W大切诺基ITECOPY属性,代码页指定为PAGE_EXECUTE_WRITECOPY属性

具体经过:


当进度对内存页执行修改操作时,系统会找3个闲置的物理内存页,并拷贝全部内容到新页上,然后标记新页的后备存储器为页交换文件,最后将经过的虚构内存页指向新的物理内存页。


经过上述手续,进程就足以采用自个儿副本了,修改在新的物理页上拓展,而不对原来的内存页发生其余影响。

 

重定集散地址

重定基地址(Rebasing):模块装载时,即使目的地址被私吞或基于安全着想,系统会基于模块的所需地址空间的轻重为其分配二个新的集散地址,并将模块装载到该集散地址处。

问题:

①  即使发生了Rebasing,当模块映射时,要对重一直表中全部页举行地址创新。

② 系统校对这一个地址的页面时,会接触写时复制机制。

 

地点空间布局随机化(Address space layout randomization,ASLR)

微软在Vista系统中引入了名为ASL汉兰达的技能,模块每便会被加载到任意地方(伪随机),防患恶意程序对已知地址实行抨击。

ASLSportage不仅对模块地址做了任性处理,还对堆、栈、进度环境块(Process
Environment Block, PEB)、线程环境块(Thread Environment Block,
TEB)的地点也进展了随机化。

ASL卡宴技术将Rebasing放到内核中举行拍卖,意味着可以在系统范围上(原来只可以在进程范围内),最大程度上减小Rebasing的暴发,从而省去物理内存和页交流文件的使用。

 

PE文件装载

澳门金沙国际 8

 

注:映射必须以页面(4KB)为单位,并根据页边界举行对齐

执行完映射后,绝一大半指令和数据都还从未被装入物理内存中。装载过程是随着程序的实践动态进展的。

切切实实进度:cpu在做客指令和数据时,发现该地方所在的页不在物理内存页中时,会接触缺页中断,此时系统会找一个闲置的大体内存页,并将内容从后备中(印象文件或页互换文件中)载入到该物理内存页中。

在windows系统中个,每种进程具有自身独立的虚拟地址空间( Virtual Address
Space )。这一地点空间的大大小小与计…

在windows系统中个,各种进度具有自身单身的虚拟地址空间(Virtual Address
Space)。这一地址空间的大大小小与统计机硬件、操作系统以及应用程序都有关联。

1.
各样进度都有和好的虚拟地址空间,对于叁11人机器而言,那几个地方空间的大大小小为4GB(2^32
/ 1024^3),这么些虚拟地址空间只但是是三个内存地址空间,

对此三九位程序来说,最多能使用2GB空间(0x000一千0-0x7FFEFFFF)。为了拿到3GB的地点空间,在不相同的windows系统中可以听从如下方法来开展扩大。

对于叁十五个人程序来说,最多能使用2GB空间(0x000一千0-0x7FFEFFFF)。为了取得3GB的地点空间,在不一样的windows系统中得以依照如下方法来展开扩张。

   
为了可以平常读/写多少,大家还必要把物理存储器分配或映射到相应的地点空间。

1.操作系统方面

1.操作系统方面

  1. 各种进度的地址空间被划分为广大上空,包蕴:

① 32位windowsXP

① 32位windowsXP

    1).
空指针赋值分区:在差其余操作系统中大多都为0x00000000到0x0000FFFF的闭区间,大小为64KB,该分区是为着扶助捕获对空指针的赋值,

澳门金沙国际 9

澳门金沙国际 10

                             
该区域禁止访问,没有任何方法可以让我们分配到放在这一地址区间内的虚拟内存。

② 叁拾壹位win7 — 管理员权限执行命令:bcdedit
/set increaseuserva 3072来开启

② 三十二位win7 — 管理员权限执行命令:bcdedit
/set increaseuserva 3072来开启

    2). 用户格局分区:
进度地址空间的集散地,大小取决于CPU连串布局X86约为2GB,

③ 6三个人win7 — 对33位程序默许开启3GB,无需额外安装

③ 6三位win7 — 对3一个人程序默许开启3GB,无需额外设置

    3).
内核方式分区:操作系统代码的集散地。与线程调度、内存管理、文件系统帮忙、网络帮忙以及配备驱动程序相关的代码都载入到该分区。驻留在这

2.应用程序方面

2.应用程序方面

                           一分区内的别的事物为富有进程共有。

随便叁拾人依然6肆人windows若要让叁拾陆位程序能拔取3GB内存,必须在链接时抬高参数:
/LALacrosseGEADDRESSAWARE

不论30个人仍然六十个人windows若要让三拾位程序能应用3GB内存,必须在链接时抬高参数:
/LACRUISERGEADDRESSAWARE

3.
当系统创立壹个经过并赋予它地址空间时,可用地址空间中的大多数都以不了了之的或尚未分配的。为了利用那有个别地方空间,大家务必调用VirtualAlloc来

 

 

   
分配其中的区域。分配地址空间区域时,系统会确保区域的苗子地址正好是分配粒度(依照CPU平台而有所不一致)的整数倍,并且会确保区域的大小刚好

进度地址空间区段

进程地址空间区段

    是系统页面大小的整数倍,X86和X64系统使用的页面大小为4KB

澳门金沙国际 11

澳门金沙国际 12

   
注意尽管系统鲜明应用程序在预订地方空间区域时起首地址必须是分配粒度的整数倍,但系统协调却不设有一样的限定。

注:进度地址空间在低地址,操作系统内核在高地址

注:进度地址空间在低地址,操作系统内核在高地址

4.
为了利用锁预约的地点空间区域,大家还非得分配物理存储器,并将积存器映射到所订购的区域,那个进度称为调拨物理存储器。

 

 

   
当大家调拨物理存储器给区域时并不必要给全部区域都调拨物理存储器,只要求给钦点页面调拨物理存储器。

进程地址空间分布(以2GB为例)

经过地址空间分布(以2GB为例)

5.
磁盘上的公文被叫作页交流文件,其中蕴蓄虚拟内存,可以供其余进程使用,当应用程序调用VirtualAlloc函数来把物理内存调拨给地方空间区域时,该

澳门金沙国际 13

澳门金沙国际 14

   
空间实在是从硬盘上的页交换文件分配得到的。系统页交流文件的高低决定应用程序可用内存总量的根本元素,机器实际装备的内存总量对它的影响相对

Windows系统在进程空间中尤其划出一块0x九千0000 –
0x70000000(共256MB)区域,用于映射这一个常用的系统DLL(如kernel32.dll、ntdll.dll等)

Windows系统在进度空间中特意划出一块0x八千0000 –
0x八千0000(共256MB)区域,用于映射这么些常用的系统DLL(如kernel32.dll、ntdll.dll等)

    较小。

对系统DLL的暗许基地址举行调整,防止加载时争辩,触发ReBasing(重定基地址)

对系统DLL的暗中同意集散地址举办调整,幸免加载时争论,触发ReBasing(重定集散地址)

  1. 规定线程访问数据流程。

注:集散地址必须对齐到分配粒度(64KB)

注:集散地址必须对齐到分配粒度(64KB)

    

 

 

Win7下,exe在PE文件中集散地址为0x四千00,DllPrj.dll的驻地址为0x一千0000且该地址未被其余dll占用;但实际exe被映射到0xEC0000,DllPrj.dll被映射到0x535A0000

Win7下,exe在PE文件中集散地址为0x六千00,DllPrj.dll的军事集散地址为0x一千0000且该地址未被其它dll占用;但实际exe被映射到0xEC0000,DllPrj.dll被映射到0x535A0000

生成exe和dll模块时,链接时采取了参数/DYNAMICBASE(启用动态集散地址)

生成exe和dll模块时,链接时使用了参数/DYNAMIChina Basketball AssociationSE(启用动态集散地址)

注:地址空间布局随机化,
Address space layout randomization
(ASLR):防患恶意程序对已知地址进行攻击

注:地址空间布局随机化,
Address space layout randomization
(ASLR):防患恶意程序对已知地址举办攻击

 

 

windows内存分配进度可细化为以下三个中央:

windows内存分配进度可细化为以下贰个宗旨:

① 保留一段虚拟内存地址空间:从进度的4GB中保留一段地址空间。// 带MEM_RESERVE参数的VirtualAlloc函数

① 保留一段虚拟内存地址空间:从进度的4GB中保留一段地址空间。// 带MEM_RESERVE参数的VirtualAlloc函数

   
起头地址必须是系统分配粒度的整数倍(64KB),大小必须是系统页面大小的整数倍(4KB)。

   
先导地址必须是系统分配粒度的整数倍(64KB),大小必须是系统页面大小的整数倍(4KB)。

② 提交一段虚拟内存地址空间:将经过已保存的一段地址空间映射机器的虚拟内存上。// 带MEM_COMMIT参数的VirtualAlloc函数

② 提交一段虚拟内存地址空间:将经过已封存的一段地址空间映射机器的虚拟内存上。// 带MEM_COMMIT参数的VirtualAlloc函数

    先河地址和尺寸都必须是页面大小的整数倍(4KB)。

    早先地址和大小都无法不是页面大小的整数倍(4KB)。


将虚拟内存地址空间映射到大体内存页(RAM):在走访进程提交的页面被访问时,通过缺页中断(又名页缺失、页面错误,
PageFault)机制来真的分配物理内存页,同时修改对应页面的地方空间映射关系。


将虚拟内存地址空间映射到大体内存页(RAM):在访问进程提交的页面被访问时,通过缺页中断(又名页缺失、页面错误,
PageFault)编制来真正分配物理内存页,同时修改对应页面的地点空间映射关系。

注1:在程序中所访问的地点都不能不是保留并付诸的虚拟内存地址

注1:在程序中所访问的地方都必须是保留并交付的虚拟内存地址

注2:可以行使VirtualFree来刑满释放保留或提交的虚拟内存地址空间

注2:可以使用VirtualFree来刑满释放保留或提交的虚拟内存地址空间

 

 

内存目标定义

内存目标定义

澳门金沙国际 15

澳门金沙国际 16

澳门金沙国际 17

澳门金沙国际 18

Total = Image + Mapped File + Shareable + Heap + Managed Heap + Stack +
Private Data + Unusable

Total = Image + Mapped File + Shareable + Heap + Managed Heap + Stack +
Private Data + Unusable

Image:exe、dll等可实施模块的代码段、数据段等

Image:exe、dll等可实施模块的代码段、数据段等

Mapped File:作为数据载入的内存映射文件

Mapped File:作为数据载入的内存映射文件

Shareable:进程间共享内存、新闻等

Shareable:进度间共享内存、新闻等

Heap:malloc()、new、HeapAlloc()、LocalAlloc()创立出来的村办内存,由用户态堆管理器统一保管

Heap:malloc()、new、HeapAlloc()、LocalAlloc()创制出来的私有内存,由用户态堆管理器统一管理

Managed Heap:由GC管理的个体内存

Managed Heap:由GC管理的私家内存

Stack:线程栈

Stack:线程栈

Private Data:由VirtualAlloc()创立出来的私有内存

Private Data:由VirtualAlloc()成立出来的个体内存

Page Table:分配在内核态的页表

Page Table:分配在内核态的页表

Unusable:起头地址以64KB对齐,导致有个别空头的悠闲内存地址空间

Unusable:早先地址以64KB对齐,导致部分失效的悠闲内存地址空间

Free:空闲内存地址空间

Free:空闲内存地址空间



Blocks:拥有内存块的个数

Blocks:拥有内存块的个数

Largest:全体内存块中最大三个的size

Largest:全体内存块中最大2个的size

 

 

虚拟内存:

虚拟内存:

Private Bytes  //
进度Committed的虚构内存字节数
   对应VMMap的Private、win7任务管理器中的【提清华小】,能源管理器中的【提交】

Private Bytes  //
进程Committed的虚构内存字节数
   对应VMMap的Private、win7职务管理器中的【提武大小】,财富管理器中的【提交】

Peak Private Bytes  //
进程Committed的虚拟内存的最高峰字节数

Peak Private Bytes  //
进度Committed的虚拟内存的最高峰字节数

Virtual Size //
进程Reserved的虚拟地址空间字节数

Virtual Size //
进度Reserved的虚拟地址空间字节数

Page Faults  // 暴发过的缺页中断次数   
对应win7义务管理器中的【页面错误】

Page Faults  // 爆发过的缺页中断次数   
对应win7义务管理器中的【页面错误】

大体内存:

大体内存:

Working Set = WS Private + WS Shareable  // 进度占用物理内存总字节数
 对应win7职责管理器中的【工作设置(内存)】,财富管理器中的【工作集】

Working Set = WS Private + WS Shareable  // 进程占用物理内存总字节数
 对应win7义务管理器中的【工作设置(内存)】,能源管理器中的【工作集】

     WS Private //
进度独享的大体内存字节数(如:堆内存+栈内存+cow机制创制的内存)  
对应win7职责管理器中的【内存(专用工作集)】,能源管理器中的【专用】

     WS Private //
进度独享的情理内存字节数(如:堆内存+栈内存+cow机制创立的内存)  
对应win7义务管理器中的【内存(专用工作集)】,能源管理器中的【专用】

     WS Shareable  //
进度可与任何进程共享的物理内存字节数(如:exe及dll代码段、数据段等)
 对应win7能源管理器中的【可共享】

     WS Shareable  //
进度可与其余进度共享的大体内存字节数(如:exe及dll代码段、数据段等)
 对应win7财富管理器中的【可共享】

     WS Shared  //
进度已与其它进程共享的物理内存字节数,WS Shared<=WS Shareable

     WS Shared  //
进度已与其余进度共享的大体内存字节数,WS Shared<=WS Shareable

                         //
若只运行一个exe实例,那么exe的代码段、数据段等不会被共享,因此就不计算在WS
Shared中

                         //
若只运行3个exe实例,那么exe的代码段、数据段等不会被共享,因而就不计算在WS
Shared中

Peak Working Set // 物理内存的参天峰字节数
 对应win7职分管理器中的【峰值工作设置(内存)】

Peak Working Set // 物理内存的万丈峰字节数
 对应win7职分管理器中的【峰值工作设置(内存)】

注:无论是虚拟内存照旧物理内存下的各样目标,都以由此总括用户态的那有个别占用

注:无论是虚拟内存依然物理内存下的顺序目的,都以由此计算用户态的那有些占用

澳门金沙国际 , 

 

页互换文件

页沟通文件

页沟通文件(Page
File):一般被当作可写物理内存页的后备存储器。Windows下该文件名为pagefile.sys,位于各盘的根目录中。

页互换文件(Page
File):一般被用作可写物理内存页的后备存储器。Windows下该公文名为pagefile.sys,位于各盘的根目录中。

                                     
可以按照机器的软硬件情况来设置页交流文件的轻重缓急,甚至倒闭页沟通文件的行使。

                                     
可以依照机器的软硬件情形来安装页交流文件的大小,甚至倒闭页互换文件的行使。

澳门金沙国际 19

澳门金沙国际 20

澳门金沙国际 21

澳门金沙国际 22

 

 

页出(Page
Out):当物理内存不够时,系统会将一些不平日使用且有后备的情理内存页释放,并将虚拟地址映射关系指向后备。

页出(Page
Out):当物理内存不够时,系统会将一部分不日常利用且有后备的物理内存页释放,并将虚拟地址映射关系指向后备。

①以页沟通文件(如:堆、栈等)为后备:在页交换文件中分红空间,并拷贝内容到中间后再自由

①以页沟通文件(如:堆、栈等)为后备:在页交流文件中分配空间,并拷贝内容到其中后再自由

②以内存映射文件(如:exe、dll等)为后备:直接出狱

②以内存映射文件(如:exe、dll等)为后备:直接出狱

页入(Page
In):当系统读取某些虚拟内存地址,而该地点所在的页不在物理内存页中时,将时有发生1个缺页中断,

页入(Page
In):当系统读取有个别虚拟内存地址,而该地址所在的页不在物理内存页中时,将时有发生一个缺页中断,

告诉系统从页沟通文件恐怕内存映射文件中取回包涵该地方的杜撰内存页(即:将内容拷回到物理内存页,并树立新的虚拟地址映射到大体内存页上,然后释放页交换文件中对应部分的长空)

告知系统从页互换文件大概内存映射文件中取回包括该地点的杜撰内存页(即:将内容拷回到物理内存页,并确立新的虚拟地址映射到大体内存页上,然后释放页交流文件中对应部分的上空)

 

 

写时复制机制

写时复制机制

写时复制机制(copy on write,
COW):当W索罗德ITECOPY属性内存页面被改动时,会触发内存页拷贝,以此来节省物理内存和页沟通文件的挤占。

写时复制机制(copy on write,
COW):当WSportageITECOPY属性内存页面被改动时,会触发内存页拷贝,以此来节省物理内存和页互换文件的占据。

注:系统在映射exe或dll文件时会把数据页内定为PAGE_WEnclaveITECOPY属性,代码页钦定为PAGE_EXECUTE_WRITECOPY属性

注:系统在映射exe或dll文件时会把数据页钦赐为PAGE_WSportageITECOPY属性,代码页内定为PAGE_EXECUTE_WRITECOPY属性

切切实实进程:

实际经过:


当进度对内存页执行修改操作时,系统会找多少个闲置的大体内存页,并拷贝全数故事情节到新页上,然后标记新页的后备存储器为页互换文件,最终将经过的杜撰内存页指向新的情理内存页。


当进程对内存页执行修改操作时,系统会找一个闲置的情理内存页,并拷贝全数情节到新页上,然后标记新页的后备存储器为页沟通文件,最终将经过的虚构内存页指向新的情理内存页。


经过上述手续,进度就可以运用本人副本了,修改在新的物理页上拓展,而不对原本的内存页暴发其余影响。


经过上述手续,进程就可以拔取本身副本了,修改在新的物理页上进展,而不对原来的内存页发生任何影响。

 

 

重定集散地址

重定集散地址

重定集散地址(Rebasing):模块装载时,即便目的地方被私吞或基于安全考虑,系统会基于模块的所需地址空间的轻重缓急为其分配壹个新的集散地址,并将模块装载到该集散地址处。

重定集散地址(Rebasing):模块装载时,假使目的地址被侵夺或依照安全着想,系统会基于模块的所需地址空间的大大小小为其分配3个新的集散地址,并将模块装载到该集散地址处。

问题:

问题:

①  万一发生了Rebasing,当模块映射时,要对重平素表中全体页举办地址更正。

①  借使爆发了Rebasing,当模块映射时,要对重一直表中全数页举办地址修正。

② 系统矫正那么些地址的页面时,会触发写时复制机制。

② 系统矫正那几个地址的页面时,会触发写时复制机制。

 

 

地点空间布局随机化(Address
space layout randomization,ASLR)

地址空间布局随机化(Address
space layout randomization,ASLR)

微软在Vista系统中引入了名为ASL途乐的技能,模块每一趟会被加载到任意地方(伪随机),防备恶意程序对已知地址举行抨击。

微软在Vista系统中引入了名为ASL劲客的技术,模块每一趟会被加载到任意地点(伪随机),防患恶意程序对已知地址举办攻击。

ASLRubicon不仅对模块地址做了随便处理,还对堆、栈、进度环境块(Process
Environment Block, PEB)、线程环境块(Thread Environment Block,
TEB)的地方也进展了随机化。

ASL瑞鹰不仅对模块地址做了自由处理,还对堆、栈、进程环境块(Process
Environment Block, PEB)、线程环境块(Thread Environment Block,
TEB)的地址也展开了随机化。

ASL牧马人技术将Rebasing放到内核中举办处理,意味着可以在系统范围上(原来只幸亏经过范围内),最大程度上裁减Rebasing的发生,从而省去物理内存和页互换文件的运用。

ASL福特Explorer技术将Rebasing放到内核中举办拍卖,意味着可以在系统范围上(原来只好在进程范围内),最大程度上收缩Rebasing的发生,从而节省物理内存和页互换文件的接纳。

 

 

PE文件装载

PE文件装载

澳门金沙国际 23

澳门金沙国际 24

 

 

注:映射必须以页面(4KB)为单位,并根据页边界举行对齐

注:映射必须以页面(4KB)为单位,并遵从页边界进行对齐

执行完映射后,绝一大半指令和数据都还一直不被装入物理内存中。装载进程是随着程序的实施动态进展的。

推行完映射后,绝半数以上指令和数据都还尚未被装入物理内存中。装载进度是随着程序的执行动态进展的。

切切实实进度:cpu在做客指令和数据时,发现该地方所在的页不在物理内存页中时,会接触缺页中断,此时系统会找一个闲置的大体内存页,并将内容从后备中(印象文件或页互换文件中)载入到该物理内存页中。

切切实实进程:cpu在做客指令和数据时,发现该地址所在的页不在物理内存页中时,会接触缺页中断,此时系统会找1个闲置的情理内存页,并将内容从后备中(影像文件或页交流文件中)载入到该物理内存页中。

相关文章