首页 > 汇编语言 > 汇编语言MS-Windows编程
汇编语言x86存储管理简述
本节将对 Windows 32 位存储管理进行简要说明,展示它是如何使用 x86 处理器直接内置功能的。重点关注的是存储管理的两个主要方面:
下面先简单回顾一下第2章《x86处理器架构》介绍过的一些 x86 存储管理术语:
现在再增加两个新术语:
本教程一直都忽略了段寄存器,因为用户程序从来不会直接修改这些寄存器,所以只关注了 32 位数据偏移量。但是,从系统程序员的角度来看,段寄存器是很重要的,因为它们包含了对内存段的直接引用。
- 将逻辑地址转换为线性地址
- 将线性地址转换为物理地址 ( 分页 )
下面先简单回顾一下第2章《x86处理器架构》介绍过的一些 x86 存储管理术语:
- 多任务处理 (multitasking) 允许多个程序(或任务)同时运行。处理器在所有运行程序中划分其时间。
- 段 (segments) 是可变大小的内存区,用于让程序存放代码或数据。
- 分段 (segmentation) 提供了分隔内存段的方法。它允许多个程序同时运行又不会相互干扰。
- 段描述符 (segment descriptor) 是一个 64 位的值,用于标识和描述一个内存段。它包含的信息有段基址、访问权限、段限长、类型和用法。
现在再增加两个新术语:
- 段选择符 (segment selector) 是保存在段寄存器 (CS、DS、SS、ES、FS 或 GS) 中的一个 16 位数值。
- 逻辑地址 (logical address) 就是段选择符加上一个 32 位的偏移量。
本教程一直都忽略了段寄存器,因为用户程序从来不会直接修改这些寄存器,所以只关注了 32 位数据偏移量。但是,从系统程序员的角度来看,段寄存器是很重要的,因为它们包含了对内存段的直接引用。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算
优秀文章
- Go语言匿名变量(没有名字的变量)
- C++ adjacent_difference相邻差计算方法详解
- 操作系统的计算环境应用
- C++ this指针详解
- Configuration、SessionFactory、Session、Transaction、Query和Criteria:Hibernate核心接口
- Spring事务管理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus
- JSP PageContext.getPage()方法:返回当前page对象
- String、StringBuffer和StringBuilder类的区别
- C++ vector swap()去除多余容量(详解版)
- PHP清除Cookie