Windows内核原理与实现之Windows内存管理概述

Windows采用页式内存管理,利用Intel x86处理器的特性,通过段描述符构建线性地址空间。系统分为内核模式(0特权级)和用户模式(3特权级)。内核模式共享0x80000000~0xffffffff的系统地址空间,用户模式则有各自私有的0x00000000~0x7fffffff地址空间。Windows通过VAD平衡二叉树管理虚拟地址,使用PFN数据库和链表管理物理页面,实现按需分配和换入换出。页面错误异常处理器负责分配物理页面,工作集管理器负责内存的全局策略,如工作集修剪。
摘要由CSDN通过智能技术生成

Windows采用了页式内存管理方案,在Intel x86处理器上,Windows不使用段来管理虚拟内存,但是,Intel x86处理器在访问内存时必须要通过段描述符,这意味着Windows将所有的段描述符都构造成了从基地址0开始,且段的大小设置为0x80000000、0xc0000000或0xffffffff,具体取决于段的用途和系统设置。所以,Windows系统中的代码,包括操作系统本身的代码和应用程序代码,所面对的地址空间都是线性地址空间。这种做法相当于屏蔽了处理器中的逻辑地址概念,段只被用于访问控制和内存保护。

Windows使用了两种特权级别:0和3,其中特权级0称为内核模式,特权级3称为用户模式。当处理器执行内核模式代码时,它们处于系统地址空间,位于0x80000000~0xffffffff,所有进程共享此地址;当处理器执行用户模式代码时,它们处于进程地址空间,位于0x00000000~0x7fffffff,这部分空间是进程私有的。用户模式代码只能访问进程自身的数据,而内核模式代码不仅可以访问当前进程的数据,也可以访问系统地址空间中的数据。所有的进程,一旦进入到内核模式,则共享同样的系统地址空间。

其次,在Windows的每个地址空间中,虚拟地址空间的分配和回收都必须按照严格的规则进行。Windows规定,应用程序在使用内存以前必须先申请,所以,操作系统内部可以根据引用程序的申请和释放操作来维护好整个虚拟地址空间的内存分配情况。而且,Windows也采用了按需分配的策略。也就是说,只有当一段虚拟内存正真被使用的时候,系统才会为它分配页面和物理页面。每个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡而伟大(心之所向)

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值