45、MS-Windows编程中的内存管理与相关操作

Windows内存管理与编程操作

MS-Windows编程中的内存管理与相关操作

1. 线性地址与逻辑地址转换

在多任务操作系统中,多个程序可同时在内存中运行,每个程序都有自己的数据区域。例如,若三个程序都有一个偏移量为200h的变量,x86处理器会通过一到两步的过程将每个变量的偏移量转换为唯一的内存位置。
- 第一步 :将段值与变量的偏移量相结合,创建线性地址。线性地址是一个32位整数,范围在0到FFFFFFFFh之间,它指向一个内存位置。若禁用分页功能,线性地址可能就是目标数据的物理地址。
- 第二步 :像MS - Windows和Linux等操作系统采用分页功能,允许程序使用比计算机物理内存更多的线性内存。此时需要进行页转换,将线性地址转换为物理地址。

线性地址的计算方式为:每个段选择器指向描述符表中的一个段描述符,该描述符包含内存段的基地址。将逻辑地址中的32位偏移量加到段的基地址上,就生成了32位线性地址。如下流程图所示:

graph LR
    A[逻辑地址(选择器 + 偏移量)] --> B[段描述符表]
    B --> C[段描述符(含基地址)]
    A --> D[偏移量]
    C --> E[基地址]
    D --> F[相加]
    E --> F
    F --> G[线性地址]
2. 分页功能

分页是x86处理器的重要特性,它使计算机能够运行原本无法全部装入内存的程序组合。处理器最初只将程序的一部分加载到内

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值