1.固定分区存储管理算法
固定分区存储管理是预先把可分配的主存储器空间分割成若干个连续区域,每一个区域的大小能够相同,也能够不一样。 spa
为了说明各分区的分配和使用状况,存储管理需设置一张“主存分配表”,该表如图6-4所示。设计
分区号ci |
起始地址table |
长度程序设计 |
占用标志搜索 |
1程序 |
8K方法 |
8Kim |
0 |
2 |
16K |
16K |
Job1 |
3 |
32K |
16K |
0 |
4 |
48K |
64K |
0 |
5 |
64K |
32K |
Job2 |
6 |
96K |
32K |
0 |
图6-4 固定分区存储管理的主存分配表
主存分配表指出各分区的起始地址和长度,表中的占用标志位用来指示该分区是否被占用了,当占用的标志位为“0”时,表示该分区还没有 被占用。进行主存分配时老是选择那些标志为“0”的分区,当某一分区分配给一个做业后,则在占用标志栏填上占用该分区的做业名,在图6-4中,第2、5分区分别被做业Job1和Job2占用,而其他分区为空闲。
因为固定分区存储管理是预先将主存分割成若干个区,若是分割时各区的大小是按顺序排列的,如图6-3,那么固定分区存储管理的主存分配算法十分简单,有兴趣的同窗能够把它做为课后练习。
固定分区存储管理的地址转换能够采用静态定位方式,装入程序在进行地址转换时检查其绝对地址是否在指定的分区中,如果,则可把程序装入,不然不能装入,且应归还所分析的区域。固定分区方式的主存去配很简单,只需将主存分配表中相应分区的占用标志位置成“0”便可。
采用固定分区存储管理,主存空间的利用不高,例如图6-4中若Job1和Job2两个做业实际只是10K和18K的主存,但它们却占用了16K和32K的区域,共有20K的主存区域占而不用,因此这种分配方式存储空间利用率不高,然而这种方法简单,所以,对于程序大小和出现频繁次数已知的情形,仍是合适的。例如IBM的OS/MFT,它是任务数固定的多道程序设计系统,它的主存分配就采用固定分区方式。
2 可变分区存储管理
可变分区方式是按做业的大小来划分分区。当要装入一个做业时,根据做业须要的主存量查看主存中是否有足够的空间,如有,则按须要量分割一个分区分配给该做业;若无,则令该做业等待主存空间。因为分区的大小是按做业的实际须要量来定的,且分区的个数也是随机的,因此能够克服固定分区方式中的主存空间的浪费。
随着做业的装入、撤离,主存空间被分红许多个分区,有的分区被做业占用,而有的分区是空闲的。当一个新的做业要求装入时,必须找一个足够大的空闲区,把做业装入该区,若是找到的空闲区大于做业须要量,则做业装入后又把原来的空闲区分红两部分,一部分给做业占用了;另外一部分又分红为一个较小的空闲区。当一做主行结束撤离时,它归还的区域若是与其它空闲区相邻,则可合成一个较大的空闲区,以利大做业的装入。采用采用可变分区方式的主存分配示例如图6-6。
从图6-6能够看出,主存中分区的数目和大小随做业的执行而不断改变。为了方便主存的分配和去配,主存分配表可由两张表格组成,一张 已分配区的状况表,另外一张是未分配区的状况表,如图6-7。
分区号 |
起始地址 |
长度 |
标志 |
1 |
4K |
6K |
Job1 |
2 |
46K |
6K |
Job2 |
|
|
|
|
(a)已分配区状况表
分区号 |
起始地址 |
长度 |
标志 |
1 |
10K |
36K |
未分配 |
2 |
52K |
76K |
未分配 |
(b)未分配区状况表
图6-7 可变分区存储管理的主存分配表
图6-7的两张表的内容是按图6-6最左边的状况填写的,当要装入长度为30K的做业时,从未分配状况表中可找一个足够容纳它的长度 36K的人.空闲区,将该区分红两部分,一部分为30K,用来装入做业3,成为已分配区;另外一部分为6K,还是空闲区。这时,应从已分配区状况表中找一个空栏目登记做业3占用的起址、长度,同时修改未分配区状况表中空闲区的长度和起址。看成业撤离时则已分配区状况表中的相应状态改为“空”,而将收回的分区登记到未分配状况表中,如有相邻空宋区则将其连成一片后登记。因为分区的个数不定,因此表格应组织成链表。
3 分区存储管理的放置策略
3.1经常使用的可变分区管理方式的分配算法有:
1)首次适应算法。对可变分区方式可采用首次适应算法,每次分配时,老是顺序查找未分配表,找到第一个能知足长度要求的空闲区为止。分割这个找到的未分配区,一部分分配给做业,另外一部分仍为空闲区。这种分配算法可能将大的空间分割成小区,形成较多的主存“碎片”。做为改进,可把空闲区按地址从小到大排列在未分配表中,因而为做业分配主存空间时,尽可能利用了低地址部分的区域,而可以使高地址部分保持一个大的空闲区,有利于大做业的装入。可是,这给收回分区带来一些麻烦,每次收回一个分区后,必须搜索未分配区表来肯定它在表格中的位置且要移动表格中的登记 。
2)最佳适应算法。可变分区方式的另外一种分配算法是最佳适应算法,它是从空闲区中挑选一个能知足做业要求的最小分区,这样可保证不去分割一个更大的区域,使装入大做业时比较容易获得知足。采用这种分配算法时可把空闲区按大小以递增顺利排列,查找时老是从最小的一个区开始,直到找到一个知足要求的区为止。按这种方法,在收回一个分区时也必须对表格从新排列。最优适应分配算法找出的分区若是正好知足要求则是最合适的了,若是比所要求的略大则分割后使剩下的空闲区就很小,以至没法使用。
3)最坏适应算法。最坏适应算法 是挑选一个最大的空闲区分割给做业使用,这样可以使剩下的空闲区不至于过小,这种算法对中、小做业是有利的。采用这种分配算法时可把空闲区按大小以递减顺利排列,查找时老是从最大的一个区开始。按这种方法,在收回一个分区时也必须对表格从新排列。
3.2 移动技术
当在未分配表中找不到一个足够大的空闲区来装入做业时,可采用移动技术把在主存中的做业改变存放区域,同时修改它们的基址/限长值,从而使分散的空闲区聚集成一片而有利于做业的装入。
移动虽可聚集主存的空闲区,但也增长了系统的开销,并且不是任什么时候候都能对一道程序进行移动的。因为外围设备与主存储器交换信息时,通道老是按已经肯定的主存绝对地址完成信息传输的。因此当一道程序正在与外围设备交换数据时每每不能移动。