X86内存管理之分段管理
来源:互联网 发布:用友u8物理数据备份 编辑:程序博客网 时间:2024/05/01 00:31
最近一直在学习X86汇编,自己打算从基础的开始学习,对以后做嵌入式开发有一定的帮助。
今天看了关于在X86处理上两种关于内存管理的方式:分段管理和分页管理,以及课程中没有讲到的段页式管理。
下面我想讲讲自己对这三个内存管理方式的理解,有错还希望大家多指教:
一.分段管理
在286以下的CPU中(8086,8088),地址线是20位,可寻址范围220b=1M。而在8088或8086中寄存器只有16位,即216b=64K,那么如果利用16寄存器访问到1M的地址空间呢?INTEL公司提出了内存分段管理机制:
1.段寄存器,首先1M内存空间正好被分为16个段,每个段的大小为64K。由于每个段为64K,那么每个段的起始地址都应该是XXXX0H这种形式。从“XXXX0H”可以看出,这个20位的地址是不能被直接存放到16位寄存器中的,但从这个地址可以看出它的最低位总是0H=0000b,则将这个地址的最低位去掉后,就可以保存到16位寄存器中,并将其称为段寄存器。
2.段内偏移,由于现在每个段都有64 K空间,则必须有一个保存段内某一个具体地址的16位寄存器,则将其称为段内偏移量寄存器。
利用以上机制后,就可以利用两个16位的寄存器(段寄存器,段内偏移量寄存器)组合在一起访问1M以内的任何内存单元 。哪如何利用这两个16位寄存器访问一个物理单元呢?物理地址:
根据前面第一点“1.段寄存器”所说的,可知段寄存器中所保存的内容是段基址被去掉最低位的0H=0000b而得到的,所以在计算真正物理地址时,必需将最后低位的0H=0000b补上,即将段基址左移四位则可得到,再加上段内偏移量,则物理地址的计算公式为:
物理址=段基址<<4 + 偏移量
由于时间关系,就写到这里吧, 有时间再将分页管理写出来!
- X86内存管理之分段管理
- 计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理
- 计算机原理学习 -- x86-32 CPU和内存管理之分段管理
- 计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理
- 计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理
- 【浅谈】x86内存管理的分段分页机制
- 内存管理相关之分段分页机制
- Linux内存管理之分段机制
- Linux内存管理之分段机制
- 内存管理相关之分段分页机制
- linux内存管理-分段管理
- 内存管理、分段、分页
- 之二:X86页式内存管理
- linux 内存管理 x86
- x86内存管理
- 学习内存管理---分段、分页
- 分段和分页内存管理
- 分页分段分区内存管理
- ASCII 、GB2312、GBK、GB18030、unicode、UTF-8字符集编码详解
- 改变控件的背景色
- 要从文件中读入文本
- [软件人生]9年后重回沈阳怀
- 在ISA Server 2006中发布安全Web服务
- X86内存管理之分段管理
- 超级玛丽增强版新鲜出炉,源码发布
- iText导出PDF经典实现
- 2008年“TI杯”湖北省大学生电子设计竞赛元件清单
- RFs类的GetDir函数出现的问题
- 软件标准化开发结构目录
- 简单javaBean对像转化为javascript可识别的对象的方法。初级文章
- P2P 之 UDP穿透NAT的原理与实现
- 我对MMU的理解