赞
踩
这种方式只适合于单一用户,单一任务的单道用户程序的情况,换句话说,就是一次只能有一个进程跑在内存中
其缺点是
这是最简单的躲到程序存储管理的方式,即内存中可以跑多个进程。系统将用户区提前分成大小固定的分区。
特别的是,固定分区分配有两种不同的方式(这里的固定,是指它们的大小都提前固定好,以后不能更改)
动态分区分配相比于前两者就非常灵活了,它会根据进程的大小动态的建立分区,进程多大,分区就占多大。
如下图,有 4 个进程的大小依次是 20MB,14MB,18MB,8MB。总共的内存大小是 64MB。其中操作系统的系统区占 8MB,用户区占 56MB。
在上半部分中,当 1,2,3 进程被分配完后,第四个进程 8MB 大于剩余的分区 4MB。如果此时进程 2 等待被换出,那么进程 4 就可以被换入(图第二行第二幅),此时产生新的分区 6MB(仔细观察图)。同理的方式可以进行其他的换入换出操作。
【注】这里的换出,指的是从内存将,将这个进程换出到磁盘(硬盘)中
其缺点是容易形成外部碎片,但可以通过紧凑的方式来优化这个问题。
内部碎片是已经被分配出去,但是被分配者未使用,而又不能给其他进程使用。好比如我囤积了大量的粮食,我没有吃,别人也吃不了我的
比如我们最开始讲的单一连续分配,因为整个用户区都只分配一个进程,而进程大小可能远远小于用户区大小,这时空闲的用户区又不能提供给其他进程使用,我们就可以称这些空闲用户区是内部碎片。
外部碎片是没有分配出去,但是因为空间太小了而无法提供给任何进程。好比如只有一粒粮食,给谁都没用,太少了。
比如我们最后讲的动态分区分配。因为每个进程都是“量体裁衣”式的进行分区分配,所以不存在内部碎片,但是很可能存在外部碎片,假如当前剩余的空闲分区是 2MB,而要装入的进程最小都是 3MB,那么这个空闲分区(在没有进程换出的情况下),就一直无法使用,称之为外部碎片。
上面我们介绍了三种连续分配的内存管理模式,但是,当一个进程进入一个内存中时,究竟如何选择将其放入那个空闲分区中呢,这里涉及的就动态分区的算法。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。