Chinaunix首页 | 论坛 | 博客
  • 博客访问: 667882
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类:

2011-01-02 19:59:12

固定分区存储管理

    固定分区存储管理是预先把可分配的主存储器空间分割成若干个连续区域,每个区域的大小可以相同,也可以不同。

为了说明各分区的分配和使用情况,存储管理需设置一张主存分配表,该表如图6-4所示。

分区号

起始地址

长度

占用标志

1

8K

8K

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中,第25分区分别被作业Job1Job2占用,而其余分区为空闲。

    由于固定分区存储管理是预先将主存分割成若干个区,如果分割时各区的大小是按顺序排列的,如图6-3,那么固定分区存储管理的主存分配算法十分简单,有兴趣的同学可以把它作为课后练习。

固定分区存储管理的地址转换可以采用静态定位方式,装入程序在进行地址转换时检查其绝对地址是否在指定的分区中,若是,则可把程序装入,否则不能装入,且应归还所分析的区域。固定分区方式的主存去配很简单,只需将主存分配表中相应分区的占用标志位置成0即可。

采用固定分区存储管理,主存空间的利用不高,例如图6-4中若Job1Job2两个作业实际只是10K和18K的主存,但它们却占用了16K和32K的区域,共有20K的主存区域占而不用,所以这种分配方式存储空间利用率不高,然而这种方法简单,因此,对于程序大小和出现频繁次数已知的情形,还是合适的。例如IBMOS/MFT,它是任务数固定的多道程序设计系统,它的主存分配就采用固定分区方式。

可变分区存储管理

    可变分区方式是按作业的大小来划分分区。当要装入一个作业时,根据作业需要的主存量查看主存中是否有足够的空间,若有,则按需要量分割一个分区分配给该作业;若无,则令该作业等待主存空间。由于分区的大小是按作业的实际需要量来定的,且分区的个数也是随机的,所以可以克服固定分区方式中的主存空间的浪费。

       随着作业的装入、撤离,主存空间被分成许多个分区,有的分区被作业占用,而有的分区是空闲的。当一个新的作业要求装入时,必须找一个足够大的空闲区,把作业装入该区,如果找到的空闲区大于作业需要量,则作业装入后又把原来的空闲区分成两部分,一部分给作业占用了;另一部分又分成为一个较小的空闲区。当一作主行结束撤离时,它归还的区域如果与其它空闲区相邻,则可合成一个较大的空闲区,以利大作业的装入。采用采用可变分区方式的主存分配示例如图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最坏适应算法。最坏适应算法 是挑选一个最大的空闲区分割给作业使用,这样可使剩下的空闲区不至于太小,这种算法对中、小作业是有利的。采用这种分配算法时可把空闲区按大小以递减顺利排列,查找时总是从最大的一个区开始。按这种方法,在收回一个分区时也必须对表格重新排列。

移动技术

当在未分配表中找不到一个足够大的空闲区来装入作业时,可采用移动技术把在主存中的作业改变存放区域,同时修改它们的基址/限长值,从而使分散的空闲区汇集成一片而有利于作业的装入。

    移动虽可汇集主存的空闲区,但也增加了系统的开销,而且不是任何时候都能对一道程序进行移动的。由于外围设备与主存储器交换信息时,通道总是按已经确定的主存绝对地址完成信息传输的。所以当一道程序正在与外围设备交换数据时往往不能移动。

阅读(6911) | 评论(1) | 转发(0) |
0

上一篇:死锁及其预防

下一篇:Cache存储器

给主人留下些什么吧!~~

chinaunix网友2011-03-07 14:30:08

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com