目录
固定分区
固定分区是一种静态分区方式,在系统生成时已将主存划分成若干个区域,每个分区大小可不等。操作系统通过主存分配情况管理主存。这种方法主要问题是已分配区中存在未用空间,原因是程序或者作业的大小不可能恰好等于分区的大小,造成了空间的浪费。
可变分区
可变分区是一种动态分区方式,存储空间的划分是作业装入时进行的,故分区的个数可变,分区的大小刚好等于作业的大小。可变分区分配需要两种管理表格,其中已分配表记录已分配区的情况,未分配表记录非分配区情况。
首次适应算法
每当用户申请一个空间,系统总是从内存的低地址开始选择一个能装入作业的空白区。当用户释放空间时,该算法更易实现相邻空白区合并。
某系统内存128k,现有作业4申请10k内存 ,使用不同算法会产生怎样的结果
未分配前: 分配后:
最佳适应法
将空白空间从小到大连接,把作业的大小按从小到大的顺序与空白空间比较,找到一个最接近用户需求的分区。这种算法能保留较大的空白区,缺点是空闲区不可能每次都与用户需要的区大小相等,所以必然将一个区域一分为二,随着系统不断释放空间,可能使小分区小到无法继续分配,将这样无用的小分区成为外碎片。
分配后:
最差适应算法
系统总是将用户作业装入最大的·空白分区。这种算法将最大的一个分区一分为二,所以所剩空白区最大,不容易产生外碎片。
分配后:
循环首次适应算法
与首次适应算法不同,每次分配是从刚开始分配的空白区开始寻找一个能满足用户要求的空白区。
引用可变分区后虽然主存分配更灵活,也提高主存的利用率,但是由于系统不断地分配回收中,必然出现一些不连续的小的空闲块,尽管这些小的空闲块总和可能大于作业需要的空间,但是由于不连续而无法分配,产生未分配区的无用空间,通常称为外碎片。解决碎片的方法是向一个方向,移动已分配的作业将未分配的小块拼凑在一起。
首次循环算法是从顺序空白区域25k,27k,11k最后再到25k的区域
先把作业分配到第一个可以放入作业的区域,第二次放入作业考虑27k的区域,第三次考虑11k的区域,第四次考虑放入作业后的25k区域,以此类推。可以使每块区域都平均地分到作业。
分配后:
可重定义分区
可重定义分区是解决碎片问题的简单并有效的方法。基本思想是移动所有已分配好的分区,使之成为连续区域。由于移动需要代价,所以通常是用户请求空间得不到满足时进行。注意,分区靠拢移动会导致地址变化,所以有地址重定位问题。