1.分区?一个作业(程序+数据+说明书)在一个分区。要求进程占用主存的一个或多个连续的存储区域。
早期的操作系统中,是通过简单的分区技术进行内存管理的。内存分区的方式为:连续分配方式。
单一连续分配:系统区+(用户区+剩余空闲区);括号里面也称为用户区,没装满才会出现剩余空闲区,其实这部分也是用户区。
系统区仅提供给操作系统用,通常放在内存的低址部分;用户区提供给用户程序使用。
特点:适用于单用户、单任务的操作系统;连续分配方式主要采用静态存储分配方式;
用户程序只有小于主存中的用户区的大小,才会装入主存。并且是一次性将用户程序所需的主存都分配给他,运行期间一直占用,直到结束才释放主存空间。
就是对主存空间分为三个区而已。
固定分区分配:将主存空间的用户区分为若干个固定大小的区域,这些若干个区域的大小可以相等也可以不等。只要大小是事先固定好的就行。用户程序执行过程中,不允许改变这些区域的大小。每个进程占用一个或多个区域。当一个进程需要分配存储空间时,会用到一张分区说明表(里面包括分区个数、所占空间大小、所占空间的起始地址以及是否被分配),根据这张表,找到一个足够大的且未被分配的区域,分配给这个进程,然后用静态地址重定位方式,重定位到内存。
缺点:在已分配的区域中,由于进程的大小并不刚好等于已分配的区域,要小于等于它。因此,会产生内存碎片(内部碎片、碎片、内零头)。
动态分区分配:主存空间的用户区不再初始化就固定了,而是依据进程所需的大小,动态分配。但会出现一个问题,就是初始动态分配时,很好,只有最后一小块甚至没有碎片(外部碎片)。但之后会导致主存空间中出现很多小的内存块(外部碎片)。这些情况,可以通过“紧凑技术”来解决。
怎么动态分配?首次适应算法,最佳适应算法,最大适应算法,邻近适应算法。
分区的缺点:1.连续的存储空间不能满足进程的要求时,即使系统中所有空闲区之和大于进程的要求,也不能装入进程。
2.存储区仍然存在“碎片”现象。移动技术可以合并这些外部碎片(不是内部碎片),但需要占用CPU时间,增加系统开销。
3.分区管理方式无法有效地实现虚拟存储技术。即:使进程的逻辑地址空间大于实际主存物理空间。