【备战软考(嵌入式系统设计师)】05 - 分区存储管理

分区方式

主要是三种分区方式:

固定分区,就是将主存事先分成几个固定大小的分区,并且不管将作业分配完分区之后,该分区剩多少,都不能再给其他作业使用了。这样的优点就是简单,缺点也很明显,就是不灵活,且容易产生内部碎片。

可变分区,顾名思义,就是大小可变,每次划分当前作业所需要的大小。相比固定分区,资源利用率提升了不少。不过这样是不产生了内部碎片了。但是会导致产生外部碎片,也就是把主存的空间切割成了很多块。

以防有小伙伴不理解外部碎片是怎么产生的,我结合着下面的图片简单说一下。

一开始是不会有内部碎片和外部碎片的,比如是像左边那样依次分配好的。不过不同作业的速度不一样,也许在中间来的作业先执行完成,释放资源之后就会像右图那样在作业1和作业3之间产生了可分配的空闲块,也就是外部碎片

随着主存工作时间越来越长,主存空间内的外部碎片就会越来越多,这样像是主存被切割成了好几个区域。

可重定位分区,在可变分区的基础上,在外部作业请求空间的时候得不到满足时,移动所有已经分配好的区域,将它们移到同一块区域,这样就把主存的空间分为了两个部分,已分配和未分配。这样主存空间的利用率就最大化了,但是效率低,开销大。并且这个概念我是第一次听到,在我买的书上看到的,这边分享一下。

可变分区分配算法

上面说了可变分区会导致外部碎片的产生,不过外部碎片也是可以供后来的作业使用的,由于碎片有很多,那么分配给作业的区域也就可以选择,由此就产生了分配算法。

最先匹配算法:也就是按照顺序依次查找空闲区域,一旦遇到满足大小条件的区域就分配给作业,那怕这块空闲区域有100k,而这个作业只需要1k的大小。不过因为这是可变分区,因此也只会给这个作业分配1k的空间,就是空闲区域会从100k变成99k。

下次匹配算法:跟最先匹配算法类似,那刚刚的例子接着用,如果下次又来了个2k的作业,那么按照最先匹配算法会接着分给99k的那个空闲区对吧,如果是下次匹配算法,那么会跳过99k这个空闲区,给这个2k的作业分配下一个匹配的区域。也就是说下次匹配算法会从上一次分配的空闲区的下一个空闲区开始匹配。

最佳匹配算法&最坏匹配算法:顾名思义,分配给大小最合适的区域和分配给大小最不合适的区域。最佳匹配算法由于会分配大小与作业最相近(需要大于等于作业要求的大小)的空闲块,由于基本上大小不可能一模一样,所以会产生很小的基本不可再利用的空闲块。而最快匹配算法则是会产生较大的可以再利用的空闲块。

这俩算法我们要辩证地看,虽然最佳匹配算法会产生很小的空闲块,但是这是大小和作业最相近的空闲块了,也算是物尽其用了。

虽然最坏匹配算法产生的外部碎片是比较大的空闲块,但是长期下去就不会再有比较大的空闲块了,这时候来个要求比较大的作业就无法满足了。

存储管理

上面是讲主存的,下面是讲内存的。

因为内存比较小,而有时候我们的进程比较大无法全部加载进内存里,因此就出现了存储管理,也就是把比较大的进程拆分成一个个小部分,然后依次放进内存,轮流执行,这样尽管我们的内存不能一次性加载完内存,但可以通过轮流的方式加载完进程。

存储管理主要分为三种,页式存储,段式存储,段页式存储。从名字也看的出来,段页式是吸取了页式和段式的优点了。不过我们还是需要先来了解了解页式存储和段式存储。

页式存储

简单来说就是把我们的进程分成一个个大小固定一致的页,我们的内存也一样分成一个个的大小一致的物理块。我们就以页为单位去执行进程,这就叫做页式存储。

执行的时候我们依靠地址去寻找数据的,因此我们还需要寻找不同进程页对应到内存中的地址是在哪里。

进程拿到手的是一个逻辑地址,要靠逻辑地址找到对应的数据就需要转换成物理地址。

逻辑地址分为页号和业内地址。

首先如果用页式存储的话会有一个页表,我们可以拿着页号去页表那里找到页号对应的是内存的那一个物理块,知道哪个物理块之后,再拿着页内地址去找物理块里的对应位置,因为页的大小和物理块的大小是一致的,所以页内地址就可以看成是块内地址,叫法不同而已。

页内地址所占的位数取决于页的大小,如果一个页给它分配2k,那么页内地址就是11位。

优点:利用率高,碎片小,分配与管理简单。

缺点:系统开销大,可能产生抖动现象。

段式存储

与页式存储差不多,只不过是从分页变成分段,页的大小是固定的,但是段的大小却是灵活的。

和页式存储第二个不一样的就是,段式存储用的是段表。

段表中有三个部分,段号,段长,基地址。

由于页式存储的页是固定大小的,因此页表中只需要包含页号和块号即可。

而段式存储的段的不固定大小的,因此就需要基地址来找到数据从哪里开始,段长来告诉我们这个段的大小是多少。

优点:多道程序共享内存,各段程序修改互不影响。

缺点:内存利用率低,内存碎片浪费大。

段页式存储

段页式存储结合了页式存储和段式存储,是先分段再分页。

优点:就是页式存储的优点和段式存储的优点

缺点:开销大,执行速度下降。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值