- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机操作系统主讲教师:王 晓 晔 E-mail:wangxye@163.com 第四章 存储器管理 4.1 存储器的层次结构4.2 程序的装入和连接 4.3 连续分配方式 4.4 基本分页存储管理方式 4.5 基本分段存储管理方式 4.6 虚拟存储器的基本概念 4.7 请求分页存储管理方式4.8 页面置换算法4.9 请求分段存储管理方式 4.1 存储器的层次结构4.1.1 多级存储器结构4.1.2 主存储器与寄存器主存储器寄存器4.1.3 高速缓存和磁盘缓存 高速缓存 磁盘缓存 4.2 程序的装入和链接4.2.1 程序的装入1. 绝对装入方式(Absolute Loading Mode) 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。 但在由程序员直接给出绝对地址时, 不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。3. 动态运行时装入方式(Denamle Run-time Loading) 动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此, 装入内存后的所有地址都仍是相对地址。 3. 运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。 4.3 连续分配方式4.3.1 单一连续分配这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间, 提供给用户使用。 4.3.2 固定分区分配 1. 划分分区的方法 (1) 分区大小相等, 即使所有的内存分区大小相等。 (2) 分区大小不等。 (1) 首次适应算法FF。 (2) 循环首次适应算法,该算法是由首次适应算法演变而成的。(3) 最佳适应算法。(4) 最坏适应算法(5) 快速适应算法4.3.4 伙伴系统伙伴系统规定,无论已分配分区或空闲分区,其大小均为2的k次幂,k为整数,1=k=m,其中:21表示分配的最小分区的大小,2m表示分配的最大分区的大小,通常2m是整个可分配内存的大小。假设系统的可利用空间容量为2m个字,则系统开始运行时,整个内存区是一个大小为2m的空闲分区。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k个空闲分区链表。当需要为进程分配一个长度为n的存储空间时,首先计算一个i值,使2i-1=n= 2i,然后在空闲分区大小为为2i的空闲分区链表中查找。若找到,即把该空闲分区分配给进程。否则,表明长度为2i的空闲分区已经耗尽,则在分区大小为2i+1的空闲分区链表中寻找。若存在2i+1的一个空闲分区,则把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的一个分区用于分配,而把另一个加入分区大小为2i的空闲分区链表中。若大小为2i+1的空闲分区也不存在,则需要查找大小为2i+2的空闲分区,若找到则对其进行两次分割:第一次,将其分割为大小为2i+1的两个分区,一个用于分配,一个加入到大小为2i+1的空闲分区链表中;第二次,将第一次用于分配的空闲区分割为2i的两个分区,一个用于分配,一个加入到大小为2i的空闲分区链表中。若仍然找不到,则继续查找大小为2i+3的空闲分区,以此类推。由此可见,在最坏的情况下,可能需要对2k的空闲分区进行k次分割才能得到所需分区。与一次分配可能要进行多次分割一样,一次回收也可能要进行多次合并,如回收大小为2i的空闲分区时,若事先已存在2i的空闲分区时,则应将其与伙伴分区合并为大小为2i+1的空闲分区,若事先已存在2i+1的空闲分区,又应继续与其伙伴分区合并为大小为2i+2的空闲分区,以此类推。4.3.5 哈希算法哈希算法就是利用哈希快速查
文档评论(0)