操作系统 | 您所在的位置:网站首页 › 分区的方法有哪几种 › 操作系统 |
分区存储管理是把主存储器中的用户区作为一个连续区或分成若干个连续区进行管理,每个连续区中可装入一个作业。 多道程序系统一般都采用多个分区的存储管理,具体可分为固定分区和可变分区两种方式。 一、固定分区存储管理把主存中可分配的用户区域预先划分成若干个连续的分区,每个连续区的大小可以相同,也可以不同。但是,一旦划分好分区之后,主存中分区的个数就固定了,且每个分区的大小也固定不变。这是一种静态分区法。 在固定分区方式管理下,每个分区用来装入一个作业。由于主存中有多个分区,就可同时在每个分区中装入一个作业。所以,这种存储管理方式适用于多道程序系统。 为了管理主存空间的使用,必须设置一张“主存分配表”(分区说明表),以说明各分区的分配情况。主存分配表中应指出各分区的起始地址和长度,并为每个分区设一个标志位。当标志位为“0”时,表示对应的分区是空闲分区,当标志位为非“0”时,表示对应的分区已被某作业占用。空闲分区可以用来装作业。 当作业队列中有作业要装入主存时,存储管理可采用“顺序分配算法”进行主存空间的分配。顺序查看主存分配表,找到一个标志为“0”的并且长度大于或等于欲装入作业的地址空间长度的分区,则把此分区分配给该作业,相应表目的标志位改成作业名的标识;若找不到一个这样的空闲分区,则该作业暂时不能装入主存。 主存空间的释放很简单。某作业执行结束后必须归还所占的分区,这时存储管理根据作业名查看主存分配表,找到相应的表目后,把其中的标志位重新置成“0”即可。 2、地址转换固定分区管理方式下作业的地址转换常采用静态重定位技术。 3、存储保护固定分区管理方式下只考虑判断其物理地址即可。常采用“界限寄存器对”法。If 下限地址2.调整相应的空闲分区表和已分配分区表。 评价:性能一般但实现比较简单直接,易于释放时合并相邻空间分区。比较容易的满足大作业的需要。完成一次分配平均需要的搜索次数较大,影响了工作效率。
尽可能地利用存储器中低地址的空闲区,而尽量保存高地址的空闲区。 最佳适应算法算法思想:由于可变分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。因此为了保证当“大进程”到来时能有连续的大片空间,优先使用更小的空闲区。 实现步骤: 空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区表,找到大小能够满足要求的第一个空闲分区。评价:尽可能地保留了较大的空间。 产生大量的不能被使用的很小的空闲区。因此这种方法会产生很多的外部碎片。所以该算法分配效果不一定是最佳的。
尽可能地利用存储器中小的空闲区,而尽量保存大的空闲区。 最坏适应算法算法思想:为了解决最佳适应算法的问题——即留下太多难以利用的小碎片,可以在每次分配时,优先使用最大的连续空闲区,这样分配后的空闲区就不会太小,更方便使用。 实现步骤: 空闲分区按照容量递减次序链接。每次分配内存时顺序查找空闲分区表,找到大小能满足要求的第一个空闲分区。 评价:分割后产生的空闲区一般仍可以供以后分配使用。工作一段时间后,不能满足大作业对空闲区的请求。 尽可能地利用存储器中大的空闲区。 三种算法的比较:
可变分区内存回收 只比固定分区管理增加了合并相邻空闲区的操作。主要是为了及时减少“外碎片”,利于今后大作业的到来。实现回收内存空间,关键是修改空闲分区表和已分配分区表。 回收内存分区时可能会遇到的四种情况: (a)若释放区R既有上邻空闲区,又有下邻空闲区。将三个空闲区合并成一个大空闲区。 先将R与F2合并记为F2,再将F2与F1合并记为F1,并将F2从链中删除。 IF (B+H1=C) AND (C+L2=D)THEN 修改空闲表,分配表。 (b)若释放区R只有上邻空闲区F1。 则只修改空闲区F1大小即可。
IF (D+H2=E)THEN 修改空闲表,分配表。 (c)只有下邻空闲区
修改空闲区F2的首地址。F2的大小=F2的大小+R的大小 (d)既无上邻又无下邻空闲区Else 修改释放区的首地址为空闲区的起始地址 地址转换动态重定位 分区的存储保护If 下限地址 |
CopyRight 2018-2019 实验室设备网 版权所有 |