3.3连续分配管理方式
一,连续分配管理方式(系统为用户分配的空间必须是连续的)
1,单一连续分配
在单一连续分配方式中,内存被封为系统区和用户区,系统区通常位于内存的地址部分,用于存放系统相关数据,用户区用户存放用户相关数据。内存中只能有一道用户程序,用户程序独占整个用户区空间
优点:实现简单,无外部碎片
缺点:只能用于单用户,单个任务的操作系统,有内部碎片,存储器利用率极其低
2,固定分区分配
20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,并且这些程序之间不会互相干扰,于是将整个用户空间划分为诺干个固定大小的分区,在每个分区只装入一道作业,这样就形成看最早,最简单的一种可运行多道程序的内存管理方式。
固定分区分配分为:分区大小相等,和分区大小不等两种
分区大小相等:缺乏灵活性,但适合用于一台计算机控制多个相同对象的场合
分区带下不等:增加了灵活性,可以满足不同大小的进程需求,根据常在系统中运行的作业大小情况进行划分
3,动态分区分配
它不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态建立分区,并使分区的大小正好适合进程的需要,因此系统分区的大小和数目是可变的
- 系统使用空闲分区表或空闲分区链的数据结构来记录内存的使用情况。
- 当很多个进程都能满足需求时,系统会根据动态分区分配算法来选择分区进行分配
- 分区进行分配时,如果被分配的分区空间大于进程使用空间,就修改下图中空闲分区表中分区的大小,将越来的大小减去被使用的大小。如果被分配的分区空间等于进程使用空间,就从表中删除这个表项。
- 分区进行回收时,如果回收的分区,相邻的前后有空闲分区,就将他们进行合并,相应的修改分区表中的大小和起始地址。如果前后没有空闲分区,就需要在分区表中添加一个新的表项,填写相关信息。
- 外部碎片:内存中存在某些空闲区间由于太小而难以利用
- 内部碎片:分配给某进程的内存区域中,如果有些部分没有用上的区域
- 可以用个紧凑技术来解决外部碎片问题