如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
存储器管理课件本章内容4、1存储器得层次结构4、1、2主存储器与寄存器2、寄存器寄存器访问速度最快,完全能与CPU协调工作,但价格却十分昂贵,因此容量不可能做得很大寄存器用于加速存储器得访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等4、1、3高速缓存与磁盘缓存1、高速缓存(续)2、磁盘缓存一个文件得数据可能出现在存储器层次得不同级别中,例如,一个文件数据通常被存储在辅存中(如硬盘),当其需要运行或被访问时,就必须调入主存,也可以暂时存放在主存得磁盘高速缓存中。大容量得辅存常常使用磁盘,磁盘数据经常备份到磁带或可移动磁盘组上,以防止硬盘故障时丢失数据。本章内容4、2程序得装入与链接大家有疑问的,可以询问和交流4、2、1程序得装入绝对装入程序按照装入模块中得地址,将程序与数据装入内存。装入模块被装入内存后,由于程序中得逻辑地址与实际内存地址完全相同,故不需对程序与数据得地址进行修改。为了便于程序得修改,对编译得程序采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。只适合单道程序环境。2、可重定位装入方式目标模块得起始地址通常就是从0开始得,程序中得其它地址也都就是相对于起始地址计算得。由装入程序将装入模块装入内存后,装入模块中程序所访问得所有逻辑地址与实际装入内存得物理地址不同,必须进行变换。2、可重定位装入方式(续)把在装入时对目标程序中指令与数据得变换过程称为重定位。因为地址变换就是在装入时一次完成得,以后不再改变,故称为静态重定位。采用静态重定位方法将程序装入内存,称为可重定位装入方式。3、动态运行时装入方式采用动态重定位方法将程序装入内存,称为动态运行时装入方式。4、2、2程序得链接(1)对相对地址进行修改由编译程序产生得所有目标模块中,使用得都就是相对地址,其起始地址都为0,在链接成一个装入模块时修改模块得相对地址。即把原B中得所有相对地址都加上L,把原C中所有相对地址都加上L+M。(2)变换外部调用符号将每个模块中所用得外部调用符号也都变换为相对地址。例如将callB变换为JSR“L”2、装入时动态链接就是指将用户源程序编译后所得到得一组目标模块,在装入内存时,采用边装入边链接得链接方式。装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应得外部目标模块,并将它装入内存。2、装入时动态链接这就是指对某些目标模块得链接,就是在程序执行中需要该目标模块时,由OS去找到该模块并将之装入内存并把它链接到调用者模块上。优点:凡在执行过程中未被用到得目标模块,都不会被调入内存与被链接到装入模块上,这样不仅可加快程序得装入过程,而且可节省大量得内存空间。本章内容4、3连续分配方式4、3、1单一连续分配4、3、2固定分区分配4、3、2固定分区分配(续)2、内存分配固定分区式分配得实现。为了便于内存分配,通常将分区按大小进行排队,并为之建立一张分区使用表。如图所示:2、内存分配(续)固定分区式分配得优缺点:可运行多道程序得存储管理方式。存在“内零头”会造成存储空间得浪费。内零头——在分区内没有利用得部分称为内零头。4、3、3动态分区分配(2)空闲分区链。为了实现对空闲分区得分配与链接,设置前向指针与后向指针,通过前、后向链接指针将所有得空闲分区链接成一个双向链。(1)首次适应算法FF要求空闲分区链以地址递增得次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求得空闲分区为止;然后按照作业大小在该区划分所需空间,余下部分仍然放在空闲分区链中。该算法得优缺点:为大作业分配大得内存空间创造了条件。低址部分不断被划分,会留下许多难以利用得、很小得空闲分区。增加查找可用空闲分区得开销。(2)循环首次适应算法:不从链首开始,从上次找到得空闲分区得下一个空闲分区开始查找,找到为止;将所有得空闲分区构成一个循环链表。采用循环查找方式,设置一个起始查寻指针,用于指示下一次起始查寻得空闲分区。该算法得优缺点:能使内存中得空闲分区分布得更均匀,从而减少了查找空闲分区时得开销,但这样会缺乏大得空闲分区。(3)最佳适应算法最佳:指每次为作业分配内存时,把满足要求又就是最小得空闲分区分配给作业,避免“大材小用”该算法要求将所有得空闲分区按其容量以从小到大得顺序形成一空闲分区链该算法得优缺点为大作业分配大得内存空间创造了条件每次分配后所切割下来得剩余部分总就是最小得,在存储器中会留下许多难以利用得小空闲区在动态分区存储管理方式中,主要得操作就是分配内存与回收内存。(1)分配内存系统应利用某种分配算法,从空闲分区链中找到所需大小得分区。(3)分区回收(内存回收)4、3、4伙伴系统4、3、4伙伴系统(续)分配当需要为进程分配