操作系统——存储管理

作者:李东龙

        存储管理中大概涉及到了下图所示的这些知识点。

 

         在了解存储管理之前,我们必须要知道计算机当中有那些存储器,这些存储器有那些特点,他们是如何工作的!如下图所示:

         除了上面这三种存储器,还有寄存器。

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

 

         他们这四种存储器各自有各自的特点,各自有各自的功能,也有不同的管理方法。当然了从目的上讲,对与存储器的管理目的无非有两点:1、让有限的空间能够存储更多的东西。2、从使用上更加快捷方便。

Cache的引入本身就是为了匹配CPU和内存不同的工作速度的。这就可见人们精益求精的精神。

 

       对于存储管理主要是对内存的管理,包括分成两个方面:分区存储、分页存储、分段存储、段页式、虚拟存储。 

 分区存储管理:                                                                                                                                                             

         分区存储管理又分成三部分:固定分区存储管理管理、可变分区存储管理、可重定位存储。

         固定分区存储管理

         把主存可分配的用户区域预先划分成若干个连续区。(划分好之后就不能再变了——区个数和区大小)各个区的大小可以相同,也可以不同。

         通过分区分配表记录分区的使用情况。通过此表来对内存进行回收,提供下一次分配。

         既然已经按照这种方式存储了,就应该考虑一下如何在这种方式下提高主存的利用率。  

1)  按照经常出现的作业的大小和数量来划分分区,尽可能使各个分区被充分利用。

2)  将分区按由小到大的顺序排列,当作业进入时从先往后查找大小刚刚合适的分区。

3)  按作业大小分成不同的队列,不同的队列等待响应大小的分区。

 

        可变分区存储管理

        不是预先把主存储器中的用户区域划分分区,而是在作业要求装入主存储器时,根据作业需要的主存空间大小和当时主存空间使用情况来决定是否为作业分配一个分区。这样就和固定分区不一样了,他的分区大小不定,分区个数也确定。

        可变分区常用的分配算法有:最先适应、最优适应、最快适应。

        最先适应是顺序的查找,找到第一块满足作业需求的空闲块,然后占据作业需要的一部分,剩下的部分等待下一次分配(这里是和固定分区的最大区别,固定分区每一个分区只能存放一个作业,剩下的空间是不能再提供给其他作业使用的,造成很大的资源浪费)。

        只是这样按照物理顺序的查找的话,我们对这些空间的控制很小,不知道是多大的一块空间被我们分割了。本身可以接受较大的需求较大的作业的空间很有可能被我们切掉了一部分,而变的无法使用。所以就对此作出了改进,把空闲区域地顺序从小到大登记在空间区表中。

        最优适应算法,第一综合了上面的改进,以及固定分区的方式。将空闲区按照从小到大排序,然后顺序的查找刚好满足作业要求的空闲区。这样可以尽可能的保证大空间完整。但是在长期采用这样的存储方式的话会产生很多较小的不连续的小空间不能被利用和大空间的形成。

        最差适应方式,这中算法和最优的做法基本一样,只不过是每一次都用最大的空间区解决作业的要求。剩下的空间还能给其他的作业使用。

        上面基本上把基本算法说了一下,其实前面的算法各自有各自的优点和缺陷。那就要看我们是什么需求了!

        在可变分区中还有一种非常重要的技术——移动技术。就是将所有被使用过的空间移动到一起,当然空闲的空间也就连到一起了。这样分配起来就容易多了。每次回收的空间也融合到一起。虽然分配空间上很容易了,但是移动以存储的作业也会增加系统开销。

  

分页存储管理、分段存储管理、段页式存储管理                                                                                                       

       这三种存储方式非常相似,都是将主存以及作业进行划分,通过不同的存储方式,将作业存储调入到主存当中去。

       页式存储先将主存以及作业分成一页一页的,页的大小是固定的。不过主存叫做块,大小与作业的页相同。当程序被调入主存的时,选择一个没有被使用过的页面将程序调入,然后在寄存器的页表中记录下页号和块号的对应。

       由于页式存储存在一些弊端,他显得那么死板。一些程序可能就剩下很少的东西了也能占据一页的空间。或是两者关系非常紧密但是被存储在不同的页中,在执行和交互上存在问题。所以引出了段式存储,和页式相比优点在于,不同的段长度可以不同也可以相同。这样一来就很好的解决了切断联系或是浪费空间的问题了。但是在页表中必须记录各段的长度。

        段页式从名称来看就知道是页式存储和段式存储的融合,综合了他们各自的优点。

 

虚拟存储                                                                                                                                                                       

        从上面的这些存储来看,都必须把作业全部都调入到内存当中去才可以。如果是一个非常大的软件如果一直没有足够的空间,那该软件就永远无法执行。

        为了解决此问题,引入了虚拟存储。

        虚拟存储的书上也讲了一大堆,其大概可以这样理解。如果较大的作业想要执行,将先将其当前使用的模块调入内存当中去去执行。用到其他模块式再调入,暂时用不到的模块就暂时存放在硬盘当中。

        通过这样的方式,将庞大的作业虚构成一个整体。

 

 

        对存储管理大概就写这么,其实一块内容都非常相似。只要掌握他们的相同部分和之间的区别就可以了,这样也就节省了我们的大脑。单独使用的时候,再将其构造出来就可以了~

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值