为了能将用户程序装入内存,必须为它分配一定大小的内存空间。连续分配方式指为一个用户程序分配一个连续的内存空间,即程序中代码或数据的逻辑地址相邻,体现在内存空间分配时物理地址的相邻。主要包括单一连续分配、固定分区分配、动态分区分配以及动态可重定位分区分配算法。
1. 单一连续分配
在单道程序环境下,当时的存储器管理方式是把内存分为系统区和用户区两部分, 系统区仅提供给操作系统使用,它通常是放在内存的低址部分。 用户区内存中,仅装有一道用户程序,即整个内存的用户空间由该程序独占。这样的存储器分配方式被称为单一连续分配方式。
特点:优点是管理简单、无外部碎片,可以采用覆盖技术,不需要额外的技术支持,便于用户了解和使用,不存在其他用户干扰。缺点是只能用于单用户、单任务的操作系统,有内部碎片,存储器的利用率极低。
2. 固定分区分配
最简单的一种可运行多道程序的存储管理方式。将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,把用户空间划分为几个分区,便允许有几道作业并发运行。
(1)划分分区的方法:内存的用户空间划分为若干个固定大小的分区:
(2)内存分配
通常将分区按其大小进行排队,并为之建立一张分区使用表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配)。当有用户程序要装入时,便检索该表,以找到合适的分区给予分配并将其状态置为“已分配”;未找到合适分区时,则拒绝为该用户程序分配内存。
缺点是程序可能太大而放不进任何一个分区中,这时用户不得不使用覆盖技术来使用内存空间;主存利用率低,当程序小于固定分区大小时,也占用一个完整的内存分区空间,这样分区内部就存在空间浪费,这种现象称为内部碎片。固定分区是可用于多道程序设计的最简单的存储分配,无外部碎片,但不能实现多进程共享一个主存区,所以存储空间利用率低。固定分区分配很少用于现在通用的操作系统中,但在某些用于控制多个相同对象的控制系统中仍发挥着一定的作用。
3.动态分区匹配
动态分区分配又称可变式分区分配,是根据进程的实际需要,动态地为之分配内存空间。在实现可变分区分配时,将涉及到分区分配中所用的数据结构、分区分配算法分区的分配与回收操作。
(1)动态分区分配中的数据结构
(2)分区分配算法
为把一个新作业装入内存,须按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。由于内存分配算法对系统性能有很大的影响,故人们对它进行了较为广泛而深入的研究,于是产生了许多动态分区分配算法。目前常用的分配算法有以下4种:
无
登录后开始许愿
暂无评论,来抢沙发