操作系统复习4_存储器管理.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统复习4_存储器管理

存储器管理 4.1 存储器的层次结构—存储器应容量大,便宜,速度跟上处理器 4.1.1 多级存储器结构 通常有三层,细分为六层,如图4-1, 越往上,速度越快,容量越小,价格越贵。 寄存器和主存又称可执行存储器, 进程可直接用指令访问,辅存只能用I/O访问。 4.1.2 主存储器与寄存器 1.主存储器---内存,保存进程运行时的程序和数据。CPU与外围设备交换的信息一般也依托于主存储器地址空间。为缓和访存速度远低于CPU执行指令的速度,在计算机系统中引入了寄存器和高速缓存。 2.寄存器---与CPU协调工作,用于加速存储器的访问速度,如用寄存器存放操作数,或用地址寄存器加快地址转换速度等。 4.1.3 高速缓存和磁盘缓存 1.高速缓存---根据程序执行的局部性原理将主存中一些经常访问的信息(程序、数据、指令等)存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。  2.磁盘缓存---将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。它依托于固定磁盘,提供对主存储器存储空间的扩充,即利用主存中的存储空间,来暂存从磁盘中读/写入的信息。 4.2 程序的装入和链接 多道程序运行,需先创建进程。而创建进程第一步是将程序和数据装入内存。将源程序变为可在内存中执行的程序,通常都要经过以下几个步骤: 编译---若干个目标模块; 链接---链接目标模块和库函数,形成装入模块; 装入---将装入模块装入内存。 图 4-2 对用户程序的处理步骤 4.2.1 程序的装入——无需连接的单目标模块装入(理解装入方式) 1. 绝对装入方式(Absolute Loading Mode) ---只适用单道程序环境 如果知道程序的内存位置,编译将产生绝对地址的目标代码,按照绝对地址将程序和数据装入内存。由于程序的逻辑地址与实际内存地址完全相同,故不须对程序和数据的地址进行修改。 绝对地址:可在编译时给出或由程序员直接赋予。若由程序员直接给出,不利于程序或数据修改,因此,通常是在程序中采用符号地址,然后在编译或汇编时转换为绝对地址。 2. 可重定位装入方式(Relocation Loading Mode) ---适于多道程序环境 多道程序环境下,编译程序不能预知目标模块在内存的位置。目标模块的起始地址是0,其它地址也都是相对于0计算的。此时应采用可重定位装入方式,根据内存情况,将模块装入到内存的适当位置,如图4-3 作业装入内存时的情况 。 动态运行时装入方式(Dynamic Run-time Loading) ---适于多道程序环境 可重定位装入方式并不允许程序运行时在内存中移动位置。但是,在运行过程中它在内存中的位置可能经常要改变,此时就应采用动态运行时装入方式。 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行。因此,装入内存后的所有地址都仍是相对地址。 问题:程序装入内存后修改地址的时机是什么? 4.3 连续分配方式 4.3.3 动态分区分配——根据进程需要动态分配内存 分区分配中的数据结构 (1) 空闲分区表—用若干表目记录每个空闲分区的分区序号、分区始址及分区的大小等数据项。 (2) 空闲分区链--为实现对空闲分区的分配和链接,在每分区起始部分,设置前向指针,尾部则设置一后向指针。为检索方便,在分区前、后向指针中,重复设置状态位和分区大小表目。当分区被分配后,把状态位由“0”改为“1”时,前、后向指针失去意义。 图 4-5 空闲链结构 分区分配算法(P123) 1)首次适应算法(first-fit)—空闲分区链以地址递增次序链接 每次按分区链的次序从头查找,找到符合要求的第一个分区。 2) 循环首次适应算法—FF算法的变种 从上次找到的空闲分区位置开始循环查找,找到后,修改起始查找指针。 3) 最佳适应算法—空闲分区按容量从小到大排序 把能满足要求的、最小的空闲分区分配给作业 4) 最坏适应算法——空闲分区按容量从大到小排序 挑选最大的空闲区分给作业使用; 快速适应算法—根据容量大小设立多个空闲分区链表 分区分配操作 1.分配内存 请求分区u.size; 空闲分区m.size; m.size-u.size≤size,说明多余部分太小, 不再切割,将整个分区分配给请求者;否则从该分区中划分一块请求大小的内存空间,余下部分仍留在空闲分区链。如图4-6 内存分配流程。 2.回收内存 (1) 回收区与插入点的前一空闲分区F1相邻:合并,修改F1大小。 (2) 回收区与后一空闲分区F2相邻:合并,修改首地址和大小。 (3) 回收区同时与前、后两个分区邻接:合并,修改F1大小,取消F2。 (4) 回收区不邻接:

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档