windows操作系统原理深入探索分析

windows操作系统原理深入探索分析

ID:18154227

大小:757.00 KB

页数:125页

时间:2018-09-14

windows操作系统原理深入探索分析_第1页
windows操作系统原理深入探索分析_第2页
windows操作系统原理深入探索分析_第3页
windows操作系统原理深入探索分析_第4页
windows操作系统原理深入探索分析_第5页
资源描述:

《windows操作系统原理深入探索分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.小议WindowsNT/2000分页机制                    WebCrazy(tsu00@263.net)   内存管理是操作系统最重要的一部分,其决定了操作系统的性能。IntelX86采用分段、分页的内存机制,WindowsNT/2000充分利用了此项先进的机制。段内IA-32体系使用页目录(PageDirectory)与页表(PageTable,SoftICE中Page命令可以显示出页目录与页表等)形成对4G地址的寻址能力。文中未特别说明,均讨论运行平台为Intel32位处理器的W

2、indowsNT/2000,所提及的Windows也仅指WindowsNT/2000。Windows中不管用户态与核心态的代码段、数据段与堆栈段基址均为0,文中提到的逻辑地址(由段基址与偏移量两部分组成)与线性地址值是相等的。由于对于用户来说线性地址是其可见的,若我未特别指出物理地址,所说的地址也仅指线性地址。   页目录(PDE)由1024项组成,每项均指向一页表(PTE),每一页表也由1024个页组成,IA-32体系每页大小为4K,所以可寻址范围为4G(1024*1024*4K)。Windows中每个进程

3、都拥有其各自的进程地址空间,即拥有其各自的页目录与页表。每个进程均使用线性地址C0300000H指向其特定的页目录所在的地址,而页目录中每项(即页表)均依次排列在线性地址C0000000H处,每个页表均占用4K(1024*4)字节,如第一个页表位于C0000000H处,而第二个页表位于C0000000+1000H(4K),即C0001000中,依次类推,计算公式即为C0000000H+页目录偏移值(线性地址的高10位)*1000H,在下面我将利用此公式。当然以上描述的前提是每个页表均位于物理内存中(由页目录中

4、每项中的P位指定),这也是为什么IA-32使用两级页表的原因,否则每个进程除其代码与数据等外还额外需要4M(4*1024*1024)的存储器。   上面的机制即实现了物理地址寻址,也就实现了在WindowsNT/2000中物理地址与线性地址的相互转换(虽然CPU在对内存操作时只需要线性地址转换成物理地址,但我们在分析程序代码等仍需要物理地址转换成线性地址)。照例先看看SoftICE的分析吧:   //addrexplorer命令后以下操作将只在进程explorer的私有进程空间进行   :addrexplor

5、er   //显示explorer进程页目录所在物理地址,即进程切换至explorer后PDBR(CR3)中的值   :addr   CR3    LDTBase:LimitKPEBAddrPID Name           .           .           .   00C10000              FF9FC920 036Cexplorer           .           .           .   /*       线性地址的格式:0-11位对应1页(4096字节

6、)的偏移量       12-21位对当前页表中1024项中寻址       22-31位对页目录进行寻址       高20位(12-31位)又称为桢       根据上面提及的公式,即可以得到物理地址高20位的值,再加上线性地址页表偏移(作为物理       地址的低12位),即实现了线性地址转化为物理地址,用公式表示为:        @(C0000000h+PDE*1000h+PTE*4)&0fffff000h+PO       =@(C0000000h+4*(PDE*400h+PTE))&0ffff

7、f000h+PO       =@(C0000000h+(PDE>>10d+PTE)<<2d)&0fffff000h+PO       =@(C0000000h+(LA>>12d)<<2d)&0fffff000h+PO       =@(C0000000h+(LA&0xFFFFF000)>>10d)&0fffff000h+PO           上式中用PDE与PTE分别代表PageDirectory与PageTable的偏移值,用LA代表给定的线性       地址,用PO代表LA的低12位,用h与d分别

8、代表16/10进制,@后表示取后地址指针中的内容。       如此分析后,线性地址C0300000所对应的页目录为300h,页表为300h,偏移量为0       则C0000000h+PD*1000h+PT*4+PO=C0000000+300h*1000h+300h*4+0   */   :ddc0000000+300*1000+300*4l4   0010:C0300C0000C1006301

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。