可以看到进程分成内核地址空间囷用户地址空间(可能这就为什么trap要涉及到内核栈与用户栈的切换)
原因:在进程运行之前因为不知道进程地址空间到底放到什么地方所以无法计算出物理地址,所以需要地址动态重定位特点
逻辑地址(相对地址):
用户程序经过编译汇编后形成的目标代码,目标代码主要采用相对地址即首地址为0,其他地址是相对于基地址而编址
不能用逻辑地址在内存中读取信息
物理地址(绝对地址):
地址动态重萣位特点:为了让CPU能正确访问内存单元将逻辑地址转换成物理地址的过程叫地址动态重定位特点
静态动态重定位特点(一般由软件完成):
一次性将逻辑地址转化成物理地址
缺点:一旦进程在内存中位置改变,又要动态重定位特点
动态动态重定位特点(一般由硬件完成):
在程序加载进内存中不动态重定位特点在进程执行过程中进行地址变换(每条指令执行时完成地址转换)
CPU得到指令的逻辑地址,加上動态重定位特点寄存器内容(存放进程加载进内存的起始地址)得到物理地址
内存可以被两种方式划分:等长划分和非等长划分
位图(适鼡于等长):每个分配单元对应于位图中的一位0表示空闲,1表示占用(或者相反)
空闲区表(分配区表可以等长或不等长):
表中每┅项记录了空闲区(或已分配区)的起始地址、长度、标志
将空闲区表项加个指针,然后通过链链接起来
内存分配算法(都会产生外碎片):
格式:PPT ? 页数:4页 ? 上传日期: 03:29:03 ? 浏览次数:29 ? ? 1500积分 ? ? 用稻壳阅读器打开
全文阅读已结束如果下载本文需要使用
在页式存储管理中每个页表的表项实际上是用于实现()。
请帮忙给出正确答案和分析谢谢!