自己整理的linux内存管理子系统

自己整理的linux内存管理子系统

ID:5861606

大小:464.00 KB

页数:10页

时间:2017-12-26

自己整理的linux内存管理子系统_第1页
自己整理的linux内存管理子系统_第2页
自己整理的linux内存管理子系统_第3页
自己整理的linux内存管理子系统_第4页
自己整理的linux内存管理子系统_第5页
资源描述:

《自己整理的linux内存管理子系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、4-4linux内存管理子系统4-4linux内存管理子系统4-4-1linux内存管理(参考课件)物理地址:cpu地址总线上寻址物理内存的地址信号,是地址变换的最终结果逻辑地址:程序代码经过编译后,出现在汇编程序中的地址(程序设计时使用的地址)线性地址:又名虚拟地址,32位cpu架构下4G地址空间CPU要将一个逻辑地址转换为物理地址,需要两步:1、首先CPU利用段式内存管理单元,将逻辑地址转换成线性地址;2、再利用页式内存管理单元,把线性地址最终转换为物理地址相关公式:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)

2、(通用的)16位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)线性地址=段寄存器的值×16+逻辑地址的偏移部分物理地址=线性地址(没有页式管理)32位CPU:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)线性地址=段寄存器的值+逻辑地址的偏移部分物理地址<——>线性地址(mapping转换)ARM32位:逻辑地址=段基地址+段内偏移量(段基地址寄存器+段偏移寄存器)逻辑地址=段内偏移量(段基地址为0)线性地址=逻辑地址=段内偏移量(32位不用乘以32)物理地址<——>线性地址(mapping转

3、换)************************!!以下都是x86模式下!!*********************************段式与页式存储管理的比较如下表所示。段式页式分段由用户设计划分,每段对应一个相应的的程序模块,有完整的逻辑意义。分页用户看不见,由操作系统为内存管理划分。段面是信息的逻辑单位页面是信息的物理单位便于段的共享,执行时按需动态链接装入。页一般不能共享段长不等,可动态增长,有利于新数据增长。页面大小相同,位置不能动态增长。二维地址空间:段名、段中地址;段号、段内单元号一维地址空间4-4linux

4、内存管理子系统10/104-4linux内存管理子系统管理形式上象页式,但概念不同往往需要多次缺页中断才能把所需信息完整地调入内存实现页(段)的共享是指某些作业的逻辑页号(段号)对应同一物理页号(内存中该段的起始地址)。页(段)的保护往往需要对共享的页面(段)加上某种访问权限的限制,如不能修改等;或设置地址越界检查,对于页内地址(段内地址)大于页长(段长)的存取,产生保护中断。一、段式管理1.1、16位CPU:(没有页式管理)1.1.1、段式管理的由来:16位CPU内部有20位地址总线,可寻址2的20次方即1M的内存空间,但16位C

5、PU只有16位的寄存器,因此只能访问2的16次方即64K。因此就采用了内存分段的管理模式,在CPU内部加入了段寄存器,这样1M被分成若干个逻辑段,每个逻辑段的要求如下:1、逻辑段的起始地址(段地址)必须是16的整数倍,即最后4个二进制位须全是0(因此不必保存)。2、逻辑段的最大容量为64K。   段寄存器是为了对内存进行分段管理而增加的,16位CPU有4个段寄存器,程序可同时访问4个不同含义的段。 1、CS+IP:用于代码段的访问,CS指向存放程序的段基地址,IP指向下条要执行的执行在CS端的偏移量,用这2个寄存器就可以得到一个内存

6、物理地址,该地址存放着一条要执行的指令。2、SS+SP:用于堆栈段的访问,SS指向堆栈段的基地址,SP指向栈顶了,可以通过SS和SP两个寄存器直接访问栈顶单元的内存物理地址。 3、DS+BX:用于数据段的访问。DS中的值左移4位得到数据段起始地址,再加上BX中的偏移量,得到一个存储单元的物理地址。 4、ES+BX:用于附加段的访问。ES中的值左移4位得到附加段起始地址,再加上BX中的偏移量,得到一个存储单元的物理地址。三、32位CPU  2种工作模式:实模式和保护模式 1、实模式下,32位内存管理和16位CPU是一致的。4-4lin

7、ux内存管理子系统10/104-4linux内存管理子系统 2、段基地址长达32位,每个段的最大容量4G,段寄存器的值是段地址的“选择器”,用该选择器从内存中得到一个32位的段地址,存储器单元的物理地址就是该段地址加上段内偏移量。得到线性地址空间。     从管理和效率的角度出发,线性地址被分为固定长度的组,成为页,例如32位机器,线性地址最大可为4G,如果用4KB为一个页来划分,这样整个线性地址就被划分为2的20次方个页。     线性地址通过映射关系得到物理地址。四、linux段管理   所有段的基地址为0,每个段的逻辑地址空间

8、范围为0~4G,因为每个段的基地址为0,因此,逻辑地址到线性地址映射不变,在Linux中所提到的逻辑地址和线性地址指的也就是同一地址。看来,linux巧妙的把段机制给绕过去了,完全利用了分页机制。linux2.6.29采用四级页管理架

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

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

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