4.2 连续分配方式
连续分配方式:指为一个用户程序分配一个连续的内存空间
- 一、单一连续分配方式
- 二、固定分区分配
- 三、动态分区分配
- 四、可重定位分区分配
一、单一连续分配方式
二、固定分区分配
1、原理
将内存空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,便可以有多道作业并发执行。当有一空闲分区时,便可以再从外存的后备作业队列中,选择一个适当大小的作业装入该分区,当该作业结束时,再从后备作业队列中找出另一作业调入该分区。
2、划分分区的方法
- 分区大小相等
所有分区大小相等,缺乏灵活性 - 分区大小不等
把内存区划分成含有多个较小的分区、适量的中等分区及少量的大分区
3、实现
三、动态分区分配(重点!!!)
1、原理
- 动态分区分配时根据进程的实际需要,动态地为之分配内存空间。作业装入内存时,把可用内存分出一个连续区域给作业,且分区的大小正好合适作业大小的需要。
- 分区的大小和个数依装入作业的需要而定。
2、实现
在实现过程中涉及如下问题:
- 分区分配中的数据结构
- 分区分配算法
- 分区分配及回收操作
分区分配算法
为把一个新作业装入内存,需按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。
常用的分配算法:
- (1)首次适应算法
- (2)循环首次适应算法
- (3)最佳适应算法
- (4)最坏适应算法
- (5)快速适应算法
(1)首次适应算法FF
(2)循环首次适应算法
(3)最佳适应算法
(4)最坏适应算法(worst fit)
(5)快速适应算法(quick fit)
该算法又称为分类搜索法,是将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,系统中存在多个空闲分区链表,同时在内存中设立一张管理索引表,该表的每一个表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头的指针。
分区分配及回收操作
回收内存
四、可重定位分区分配
五、对换
1、对换的引入
阻塞进程占据大量内存空间
许多作业再外存而不能进入内存运行
对换:
把内存中暂时不能运行的进程或暂时不用的程序和数据,调到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程和进程所需的程序还有数据调入内存。
对换的分类:
- 整体对换(或进程对换):以整个进程为单位
- 页面对换或分段对换:以页或段为单位
实现进程对换,系统必须具备的功能:
- 对换空间的管理
- 进程的换出
- 进程的换入
3、进程的换出与换入
- 进程的换出
系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。 - 进程的换入
系统应定时查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将换出进程最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。