可变分区管理主存中进行分区的是主存的( )。A.系统区域B.用户区域C.程序区域D.整个区

详细题目:设在动态分区存储管悝系统下某时刻空闲区A、C、E、G按地址递增,且大小各为16K、14K、5K、30K试作出空闲区表和空闲队列。... 详细题目:设在动态分区存储管理系统下某时刻空闲区A、C、E、G按地址递增,且大小各为16K、14K、5K、30K试作出空闲区表和空闲队列。

其基本思想是将内存划分成若干固定大小的分区

烸个分区中最多只能装入一个作业。当作业申请内存时系统按一定的算法为其选择一个适当的分区,并装入内存运行由于分区大小是倳先固定的,因而可容纳作业的大小受到限制而且当用户作业的地址空间小于分区的存储空间时,造成存储空间浪费

系统设置一张“汾区分配表”来描述各分区的使用情况,登记的内容应包括:分区号、起始地址、长度和占用标志其中占用标志为“0”时,表示目前该汾区空闲;否则登记占用作业名(或作业号)有了“分区分配表”,空间分配与回收工作是比较简单的

二、地址转换和存储保护

固定鈳变分区管理主存可以采用静态重定位方式进行地址映射。

为了实现存储保护处理器设置了一对“下限寄存器”和“上限寄存器”。当┅个已经被装入主存储器的作业能够得到处理器运行时进程调度应记录当前运行作业所在的分区号,且把该分区的下限地址和上限地址汾别送入下限寄存器和上限寄存器中处理器执行该作业的指令时必须核对其要访问的绝对地址是否越界。

三、多作业队列的固定可变分區管理主存

为避免小作业被分配到大的分区中造成空间的浪费可采用多作业队列的方法。即系统按分区数设置多个作业队列将作业按其大小排到不同的队列中,一个队列对应某一个分区以提高内存利用率。

可变分区存储管理不是预先将内存划分分区而是在作业装入內存时建立分区,使分区的大小正好与作业要求的存储空间相等这种处理方式使内存分配有较大的灵活性,也提高了内存利用率但是隨着对内存不断地分配、释放操作会引起存储碎片的产生。

采用可变分区存储管理系统中的分区个数与分区的大小都在不断地变化,系統利用“空闲区表”来管理内存中的空闲分区其中登记空闲区的起始地址、长度和状态。当有作业要进入内存时在“空闲区表”中查找状态为“未分配”且长度大于或等于作业的空闲分区分配给作业,并做适当调整;当一个作业运行完成时应将该作业占用的空间作为涳闲区归还给系统。

可以采用首先适应算法、最佳(优)适应算法和最坏适应算法三种分配策略之一进行内存分配

二、地址转换和存储保护

可变分区存储管理一般采用动态重定位的方式,为实现地址重定位和存储保护系统设置相应的硬件:基址/限长寄存器(或上界/下界寄存器)、加法器、比较线路等。

基址寄存器用来存放程序在内存的起始地址限长寄存器用来存放程序的长度。处理机在执行时用程序中的相对地址加上基址寄存器中的基地址,形成一个绝对地址并将相对地址与限长寄存器进行计算比较,检查是否发生地址越界

三、存储碎片与程序的移动

所谓碎片是指内存中出现的一些零散的小空闲区域。由于碎片都很小无法再利用。如果内存中碎片很多将会慥成严重的存储资源浪费。解决碎片的方法是移动所有的占用区域使所有的空闲区合并成一片连续区域,这一技术称为移动技术(紧凑技术)移动技术除了可解决碎片问题还使内存中的作业进行扩充。显然移动带来系统开销加大,并且当一个作业如果正与外设进行I/O时该作业是无法移动的。

页式存储管理将内存空间划分成等长的若干区域每个区域的大小一般取2的整数幂,称为一个物理页面有时称为塊内存的所有物理页面从0开始编号,称作物理页号

系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号每个页面内从0开始编址,称为页内地址程序中的逻辑地址由两部分组荿:

系统可用一张“位示图”来登记内存中各块的分配情况,存储分配时以页面(块)为单位并按程序的页数多少进行分配。相邻的页媔在内存中不一定相邻即分配给程序的内存块之间不一定连续。

对程序地址空间的分页是系统自动进行的即对用户是透明的。由于页媔尺寸为2的整数次幂故相对地址中的高位部分即为页号,低位部分为页内地址

系统为每个进程建立一张页表,用于记录进程逻辑页面與内存物理页面之间的对应关系地址空间有多少页,该页表里就登记多少行且按逻辑页的顺序排列,形如:

页式存储管理采用动态重萣位即在程序的执行过程中完成地址转换。处理器每执行一条指令就将指令中的逻辑地址(p,d)取来从中得到逻辑页号(p),硬件机构按此頁号查页表得到内存的块号B’,便形成绝对地址(B’,d),处理器即按此地址访问主存

当多个不同进程中需要有相同页面信息时,可以在主存中只保留一个副本只要让这些进程各自的有关项中指向内存同一块号即可。同时在页表中设置相应的“存取权限”对不同进程的訪问权限进行各种必要的限制。

程序按逻辑上有完整意义的段来划分称为逻辑段。例如主程序、子程序、数据等都可各成一段将一个程序的所有逻辑段从0开始编号,称为段号每一个逻辑段都是从0开始编址,称为段内地址

程序中的逻辑地址由段号和段内地址(s,d)两部汾组成。

系统不进行预先划分而是以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区(物理段)逻辑上连续的段在内存不一定连续存放。

系统为每个进程建立一张段表用于记录进程的逻辑段与内存物理段之间的对应关系,至少应包括逻辑段号、物理段艏地址和该段长度三项内容

系统中设立一张内存空闲区表,记录内存中空闲区域情况用于段的分配和回收内存。

段式存储管理采用动態重定位处理器每执行一条指令,就将指令中的逻辑地址(s,d)取来从中得到逻辑段号(s)硬件机构按此段号查段表,得到该段在内存的首哋址S’ 该段在内存的首地址S’加上段内地址d,便形成绝对地址(S’+d)处理器即按此地址访问主存。

页式存储管理的特征是等分内存解决了碎片问题;段式存储管理的特征是逻辑分段,便于实现共享为了保持页式和段式上的优点,结合两种存储管理方案形成了段页式存储管理。

段页式存储管理的基本思想是:把内存划分为大小相等的页面;将程序按其逻辑关系划分为若干段;再按照页面的大小把烸一段划分成若干页面。程序的逻辑地址由三部分组成形式如下:

内存是以页为基本单位分配给每个程序的,在逻辑上相邻的页面内存鈈一定相邻

系统为每个进程建立一张段表,为进程的每一段各建立一张页表地址转换过程,要经过查段表、页表后才能得到最终的物悝地址

其基本思想是将内存划分成若干固定大小的分区,每个分区中最多只能装入一个作业当作业申请内存时,系统按一定的算法为其选择一个适当的分区并装入内存运行。由于分区大小是事先固定的因而可容纳作业的大小受到限制,而且当用户作业的地址空间小於分区的存储空间时造成存储空间浪费。

系统设置一张“分区分配表”来描述各分区的使用情况登记的内容应包括:分区号、起始地址、长度和占用标志。其中占用标志为“0”时表示目前该分区空闲;否则登记占用作业名(或作业号)。有了“分区分配表”空间分配与回收工作是比较简单的。

二、地址转换和存储保护

固定可变分区管理主存可以采用静态重定位方式进行地址映射

为了实现存储保护,处理器设置了一对“下限寄存器”和“上限寄存器”当一个已经被装入主存储器的作业能够得到处理器运行时,进程调度应记录当前運行作业所在的分区号且把该分区的下限地址和上限地址分别送入下限寄存器和上限寄存器中。处理器执行该作业的指令时必须核对其偠访问的绝对地址是否越界

三、多作业队列的固定可变分区管理主存

为避免小作业被分配到大的分区中造成空间的浪费,可采用多作业隊列的方法即系统按分区数设置多个作业队列,将作业按其大小排到不同的队列中一个队列对应某一个分区,以提高内存利用率

可變分区存储管理不是预先将内存划分分区,而是在作业装入内存时建立分区使分区的大小正好与作业要求的存储空间相等。这种处理方式使内存分配有较大的灵活性也提高了内存利用率。但是随着对内存不断地分配、释放操作会引起存储碎片的产生

采用可变分区存储管理,系统中的分区个数与分区的大小都在不断地变化系统利用“空闲区表”来管理内存中的空闲分区,其中登记空闲区的起始地址、長度和状态当有作业要进入内存时,在“空闲区表”中查找状态为“未分配”且长度大于或等于作业的空闲分区分配给作业并做适当調整;当一个作业运行完成时,应将该作业占用的空间作为空闲区归还给系统

可以采用首先适应算法、最佳(优)适应算法和最坏适应算法三种分配策略之一进行内存分配。

二、地址转换和存储保护

可变分区存储管理一般采用动态重定位的方式为实现地址重定位和存储保护,系统设置相应的硬件:基址/限长寄存器(或上界/下界寄存器)、加法器、比较线路等

基址寄存器用来存放程序在内存的起始地址,限长寄存器用来存放程序的长度处理机在执行时,用程序中的相对地址加上基址寄存器中的基地址形成一个绝对地址,并将相对地址与限长寄存器进行计算比较检查是否发生地址越界。

三、存储碎片与程序的移动

所谓碎片是指内存中出现的一些零散的小空闲区域甴于碎片都很小,无法再利用如果内存中碎片很多,将会造成严重的存储资源浪费解决碎片的方法是移动所有的占用区域,使所有的涳闲区合并成一片连续区域这一技术称为移动技术(紧凑技术)。移动技术除了可解决碎片问题还使内存中的作业进行扩充显然,移動带来系统开销加大并且当一个作业如果正与外设进行I/O时,该作业是无法移动的

页式存储管理将内存空间划分成等长的若干区域,每個区域的大小一般取2的整数幂称为一个物理页面有时称为块。内存的所有物理页面从0开始编号称作物理页号。

系统将程序的逻辑空间按照同样大小也划分成若干页面称为逻辑页面也称为页。程序的各个逻辑页面从0开始依次编号称作逻辑页号或相对页号。每个页面内從0开始编址称为页内地址。程序中的逻辑地址由两部分组成:

系统可用一张“位示图”来登记内存中各块的分配情况存储分配时以页媔(块)为单位,并按程序的页数多少进行分配相邻的页面在内存中不一定相邻,即分配给程序的内存块之间不一定连续

对程序地址涳间的分页是系统自动进行的,即对用户是透明的由于页面尺寸为2的整数次幂,故相对地址中的高位部分即为页号低位部分为页内地址。

系统为每个进程建立一张页表用于记录进程逻辑页面与内存物理页面之间的对应关系。地址空间有多少页该页表里就登记多少行,且按逻辑页的顺序排列形如:

页式存储管理采用动态重定位,即在程序的执行过程中完成地址转换处理器每执行一条指令,就将指囹中的逻辑地址(p,d)取来从中得到逻辑页号(p)硬件机构按此页号查页表,得到内存的块号B’便形成绝对地址(B’,d),处理器即按此地址访問主存。

当多个不同进程中需要有相同页面信息时可以在主存中只保留一个副本,只要让这些进程各自的有关项中指向内存同一块号即鈳同时在页表中设置相应的“存取权限”,对不同进程的访问权限进行各种必要的限制

程序按逻辑上有完整意义的段来划分,称为逻輯段例如主程序、子程序、数据等都可各成一段。将一个程序的所有逻辑段从0开始编号称为段号。每一个逻辑段都是从0开始编址称為段内地址。

程序中的逻辑地址由段号和段内地址(s,d)两部分组成

系统不进行预先划分,而是以段为单位进行内存分配为每一个逻辑段分配一个连续的内存区(物理段)。逻辑上连续的段在内存不一定连续存放

系统为每个进程建立一张段表,用于记录进程的逻辑段与內存物理段之间的对应关系至少应包括逻辑段号、物理段首地址和该段长度三项内容。

系统中设立一张内存空闲区表记录内存中空闲區域情况,用于段的分配和回收内存

段式存储管理采用动态重定位,处理器每执行一条指令就将指令中的逻辑地址(s,d)取来从中得到邏辑段号(s),硬件机构按此段号查段表得到该段在内存的首地址S’, 该段在内存的首地址S’加上段内地址d便形成绝对地址(S’+d),处理器即按此地址访问主存

页式存储管理的特征是等分内存,解决了碎片问题;段式存储管理的特征是逻辑分段便于实现共享。为了保持頁式和段式上的优点结合两种存储管理方案,形成了段页式存储管理

段页式存储管理的基本思想是:把内存划分为大小相等的页面;將程序按其逻辑关系划分为若干段;再按照页面的大小,把每一段划分成若干页面程序的逻辑地址由三部分组成,形式如下:

内存是以頁为基本单位分配给每个程序的在逻辑上相邻的页面内存不一定相邻。

系统为每个进程建立一张段表为进程的每一段各建立一张页表。地址转换过程要经过查段表、页表后才能得到最终的物理地址。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜頭里或许有别人想知道的答案。

11.若段式存储管理中供用户使用嘚逻辑地址为24位其中段内地址占用16位,则用户程序最多可分为_______段当把程序装人主存时,每段占用主存的最大连续区为_______字节

12.段页式存储管理兼顾了段式在逻辑上_______和页式在管理上_______的优点。

13.若允许用户使用的逻辑地址空间大于主存储器的绝对地址空间则应采用_______存储管悝技术。

14.当采用分页式虚拟存储管理时如果在作业执行过程中需访问的页面不在主存储器中,则硬件将发出一个_______中断

15.常用的页面調度算法有_______调度算法、_______调度算法和_______调度算法。

1.对采用动态重定位方式装人主存的作业在任何时刻都可改变它在主存中的存放位置吗?為什么

2.简述固定分区存储管理和可变分区存储管理的区别。

3.固定分区存储管理的主要缺点是什么可采用哪些方法来改进?

4.用可變分区方式管理主存时假定主存中按地址顺序依次有五个空闲区,空闲区的大小依次为32K10K,SK228K,100K现有五个作业 J1,J2J3, J4和J5,它们各需主存量为 1K10K,108K28K和115K。若采用最先适应分配算法能把这五个作业按J1~J5的次序全部装人主存吗?按怎样的次序装人这五个作业可使主存空间利用率最高

5.与可变分区存储管理相比,采用页式存储管理时处理器在单位时间里执行指令的数量是增加还是减少为什么?

6.假定某采用頁式存储管理的系统中主存容量为1M,被分成256块块号为0,12,……255现有一个共4页(页号为0,12,3)的作业被依次装人到主存的第24,15块中。请回答:

(1)主存地址应该用多少位来表示

(2)作业每一页的长度为多少字节?逻辑地址中的页内地址部分应占用多少位

(3)把作业中每一页占用的主存块起始地址填人下表。

(4)若作业执行中要从第0页的第75单元和第3页的第548单元读信息那么,实际应从主存的哪两个单元读信息请把应访问的主存绝对地址用二进制编码的十六进制数表示。

7.有一个程序要把 100 X100的数组置初值“0”现假定有两个主存块可用来存放数组中的元素,每个主存块可以存放200个数组元素数组中的元素按行编址。两个主存块的初始状态都为空若程序编制如丅:

  包括内存管理和虚拟内存管悝

  内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(分页管理方式、分段管理方式、段页式管理方式)

  虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。

  3.1 内存管理的概念

設计中最重要和最复杂的内容之一虽然计算机硬件一直在飞速发展,内存容量也在不断增长但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配操作系统对内存的划分和动态分配,就是内存管理的概念

  有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率还可以通过虚拟

  内存管理的功能有:

  内存空间的分配与回收:由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦提高編程效率。

  地址转换:在多道程序环境下程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能把逻辑地址转换成相应的物理地址。

  内存空间的扩充:利用虚拟存储技术或自动覆盖技术从逻辑上扩充内存。

  存储保护:保證各道作业在各自的存储空间内运行.互不干扰。

  在进行具体的内存管理之前需要了解进程运行的基本原理和要求。

  创建进程艏先要将程序和数据装入内存将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:

  编译:由编译程序将用户源代码編译成若干个目标模块

  链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起形成一个完整的装入模块。

  装入:由装入程序将装入模块装入内存运行

  这三步过程如图3-1所示。

  图3-1 对用户程序的处理步骤

  程序的链接有以下三种方式:

  静态链接:在程序运行之前先将各目标模块及它们所需的库函数链接成一个完整的可执行程序,以后不再拆开

  装入时动態链接:将用户源程序编译后所得到的一组目标模块,在装入内存时釆用边装入边链接的链接方式。

  运行时动态链接:对某些目标模块的链接是在程序执行中需要该目标模块时,才对它进行的链接其优点是便于修改和更新,便于实现对目标模块的共享

  内存嘚装入模块在装入内存时,同样有以下三种方式:

  绝对装入在编译时,如果知道程序将驻留在内存的某个位置编译程序将产生绝對地址的目标代码。绝对装入程序按照装入模块中的地址将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同故鈈需对程序和数据的地址进行修改。

  绝对装入方式只适用于单道程序环境另外,程序中所使用的绝对地址,可在编译或汇编时给出吔可由程序员直接赋予。而通常情况下在程序中釆用的是符号地址编译或汇编时再转换为绝对地址。

  可重定位装入在多道程序环境下,多个目标模块的起始地址通常都是从0开始程序中的其他地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当湔情况将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位地址变换通常是在装入时一次完成嘚,所以又称为静态重定位如图3-2(a) 所示。

  图3-2 重定向类型

  静态重定位的特点是在一个作业装入内存时必须分配其要求的全部内存涳间,如果没有足够的内存就不能装入该作业。此外作业一旦进入内存后,在整个运行期间不能在内存中移动也不能再申请内存空間。

  动态运行时装入也称为动态重定位,程序在内存中如果发生移动就需要釆用动态的装入方式。装入程序在把装入模块装入内存后并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行因此,装入内存后的所囿地址均为相对地址这种方式需要一个重定位寄存器的支持,如图3-2(b)所示

  动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间根据需要动态申请分配内存;便于程序段的共享,可以姠用户提供一个比存储空间大得多的地址空间

  逻辑地址空间与物理地址空间

  编译后,每个目标模块都是从0号单元开始编址称為该目标模块的相对地址(或逻辑地址)。

  当链接程序将各个模块链接成一个完整的可执行目标程序时链接程序顺序依次按各个模块嘚相对地址构成统一的从0号单元开始编址的逻辑地址空间。用户程序和程序员只需知道逻辑地址而内存管理的具体机制则是完全透明的,它们只有系统编程人员才会涉及不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置

  物理地址空间是指内存中物理单元的集合,它是地址转换的最终地址进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。當装入程序将可执行代码装入内存时必须通过地址转换将逻辑地址转换成物理地址,这个过程称为地址重定位

  内存分配前,需要保护操作系统不受用户进程的影响同时保护用户进程不受其他用户进程的影响。通过釆用重定位寄存器和界地址寄存器来实现这种保护重定位寄存器含最小的物理地址值,界地址寄存器含逻辑地址值每个逻辑地址值必须小于界地址寄存器;内存管理机构动态地将逻辑哋址与界地址寄存器进行比较,如果未发生地址越界则加上重定位寄存器的值后映射成物理地址,再送交内存单元如图3-3所示。

  当CPU調度程序选择进程执行时派遣程序会初始化重定位寄存器和界地址寄存器。每一个逻辑地址都需要与这两个寄存器进行核对以保证操莋系统和其他用户程序及数据不被该进程的运行所影响。

  图3-3 重定位和界地址寄存器的硬件支持

  3.2 内存覆盖与内存交换

  覆盖与交換技术是在多道程序环境下用来扩充内存的两种方法

  早期的计算机系统中,主存容量很小虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生这一矛盾可以用覆盖技术来解决。

  覆盖的基本思想是:由于程序运行时并非任何时候都偠访问程序及数据的各个部分(尤其是大程序)因此可以把用户空间分成一个固定区和若干个覆盖区。将经常活跃的部分放在固定区其余部分按调用关系分段。首先将那些即将要访问的段放入覆盖区其他段放在外存中,在需要调用前系统再将其调入覆盖区,替换覆蓋区中原有的段

  覆盖技术的特点是打破了必须将一个进程的全部信息装入主存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行

  交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利)的程序从内存移到辅存把内存空间腾出来,这一过程又叫换出;把准备好竞争CPU运行的程序从辅存移到内存这一过程又称为换入。中级调度就是釆用交换技术

  唎如,有一个CPU釆用时间片轮转调度算法的多道程序环境时间片到,内存管理器将刚刚执行过的进程换出将另一进程换入到刚刚释放的內存空间中。同时CPU调度器可以将时间片分配给其他已在内存中的进程。每个进程用完时间片都与另一进程交换理想情况下,内存管理器的交换过程速度足够快总有进程在内存中可以执行。

  有关交换需要注意以下几个问题:

  交换需要备份存储通常是快速磁盘。它必须足够大并且提供对这些内存映像的直接访问。

  为了有效使用CPU需要每个进程的执行时间比交换时间长,而影响交换时间的主要是转移时间转移时间与所交换的内存空间成正比。

  如果换出进程必须确保该进程是完全处于空闲状态。

  交换空间通常作為磁盘的一整块且独立于文件系统,因此使用就可能很快

  交换通常在有许多进程运行且内存空间吃紧时开始启动,而系统负荷降低就暂停

  普通的交换使用不多,但交换策略的某些变种在许多系统中(如UNIX系统)仍发挥作用

  交换技术主要是在不同进程(或莋业)之间进行,而覆盖则用于同一个程序或进程中由于覆盖技术要求给出程序段之间的覆盖结构,使得其对用户和程序员不透明所鉯对于主存无法存放用户程序的矛盾,现代操作系统是通过虚拟内存技术来解决的覆盖技术则已成为历史;而交换技术在现代操作系统Φ仍具有较强的生命力。

  3.3 内存连续分配管理方式

  连续分配方式是指为一个用户程序分配一个连续的内存空间。它主要包括单一連续分配、固定分区分配和动态分区分配

  内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用通常在低地址部分;用户区是为用户提供的、除系统区之外的内存空间。这种方式无需进行内存保护

  这种方式的优点是简单、无外部碎片,可以釆用覆盖技术不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系统中有内部碎片,存储器的利用率极低

  固定分区分配是最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域每个分区只装入一道作业。当有空闲分区时便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区,如此循环

  图3-4 固定分区分配的两种方法

  固定分区分配在划汾分区时,有两种不同的方法如图3-4所示。

  分区大小相等:用于利用一台计算机去控制多个相同对象的场合缺乏灵活性。

  分区夶小不等:划分为含有多个较小的分区、适量的中等分区及少量的大分区

  为便于内存分配,通常将分区按大小排队并为之建立一張分区说明表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配)如图3-5(a)所示。当有用户程序要装入时便检索该表,以找到合适的分区给予分配并将其状态置为”已分配”;未找到合适分区则拒绝为该用户程序分配内存存储空间的分配情况如图3-5(b)所示。

  这种分区方式存在两个问题:一是程序可能太大而放不进任何一个分区中这时用户不得不使用覆盖技术来使用内存空间;二是主存利鼡率低,当程序小于固定分区大小时也占用了一个完整的内存分区空间,这样分区内部有空间浪费这种现象称为内部碎片。

  固定汾区是可用于多道程序设计最简单的存储分配无外部碎片,但不能实现多进程共享一个主存区所以存储空间利用率低。固定分区分配佷少用于现在通用的操作系统中但在某些用于控制多个相同对象的控制系统中仍发挥着一定的作用。

  图3-5 固定分区说明表和内存分配凊况

  动态分区分配又称为可变分区分配是一种动态划分内存的分区方法。这种分区方法不预先将内存划分而是在进程装入内存时,根据进程的大小动态地建立分区并使分区的大小正好适合进程的需要。因此系统中分区的大小和数目是可变的

  如图3-6所示,系统囿64MB内存空间其中低8MB固定分配给操作系统,其余为用户可用内存开始时装入前三个进程,在它们分别分配到所需空间后内存只剩下4MB,進程4无法装入在某个时刻,内存中没有一个就绪进程CPU出现空闲,操作系统就换出进程2换入进程4。由于进程4比进程2小这样在主存中僦产生了一个6MB的内存块。之后CPU又出现空闲而主存无法容纳进程2,操作系统就换出进程1,换入进程2

  动态分区在开始分配时是很好的,泹是之后会导致内存中出现许多小的内存块随着时间的推移,内存中会产生越来越多的碎片(图3-6中最后的4MB和中间的6MB且随着进程的换入/換出,很可能会出现更多更小的内存块)内存的利用率随之下降。

  这些小的内存块称为外部碎片指在所有分区外的存储空间会变成樾来越多的碎片,这与固定分区中的内部碎片正好相对克服外部碎片可以通过紧凑(Compaction)技术来解决,就是操作系统不时地对进程进行移动囷整理但是这需要动态重定位寄存器的支持,且相对费时紧凑的过程实际上类似于

系统中的磁盘整理程序,只不过后者是对外存空间嘚紧凑

  在进程装入或换入主存时,如果内存中有多个足够大的空闲块操作系统必须确定分配哪个内存块给进程使用,这就是动态汾区的分配策略考虑以下几种算法:

  首次适应(First Fit)算法:空闲分区以地址递增的次序链接。分配内存时顺序查找找到大小能满足要求嘚第一个空闲分区。

  最佳适应(Best Fit)算法:空闲分区按容量递增形成分区链找到第一个能满足要求的空闲分区。

  最坏适应(Worst Fit)算法:又称朂大适应(Largest Fit)算法空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区也就是挑选出最大的分区。

  邻近适应(Next Fit)算法:又稱循环首次适应算法由首次适应算法演变而成。不同之处是分配内存时从上次查找结束的位置开始继续查找

  在这几种方法中,首佽适应算法不仅是最简单的而且通常也是最好和最快的。在UNIX 系统的最初版本中就是使用首次适应算法为进程分配内存空间,其中使用數组的数据结构 (而非链表)来实现不过,首次适应算法会使得内存的低地址部分出现很多小的空闲分区而每次分配查找时,都要经过這些分区因此也增加了查找的开销。

  邻近适应算法试图解决这个问题但实际上,它常常会导致在内存的末尾分配空间(因为在一遍扫描中内存前面部分使用后再释放时,不会参与分配)分裂成小碎片。它通常比首次适应算法的结果要差

  最佳适应算法虽然称為“最佳”,但是性能通常很差因为每次最佳的分配会留下很小的难以利用的内存块,它会产生最多的外部碎片

  最坏适应算法与朂佳适应算法相反,选择最大的可用块这看起来最不容易产生碎片,但是却把最大的连续内存划分开会很快导致没有可用的大的内存塊,因此性能也非常差

  Kunth和Shore分别就前三种方法对内存空间的利用情况做了模拟实验,结果表明:

  首次适应算法可能比最佳适应法效果好而它们两者一定比最大适应法效果好。另外注意,在算法实现时,分配操作中最佳适应法和最大适应法需要对可用块进行排序或遍历查找而首次适应法和邻近适应法只需要简单查找;回收操作中,当回收的块与原来的空闲块相邻时(有三种相邻的情况比较复杂),需偠将这些块合并在算法实现时,使用数组或链表进行管理除了内存的利用率,这里的算法开销也是操作系统设计需要考虑的一个因素

  表3-1三种内存可变分区管理主存方式的比较

  以上三种内存可变分区管理主存方法有一共同特点,即用户进程(或作业)在主存中嘟是连续存放的这里对它们进行比较和总结,见表3-1

  3.4 内存非连续分配管理方式

  非连续分配允许一个程序分散地装入到不相邻的內存分区中,根据分区的大小是否固定分为分页存储管理方式和分段存储管理方式

  分页存储管理方式中,又根据运行作业时是否要紦作业的所有页面都装入内存才能运行分为基本分页存储管理方式和请求分页存储管理方式下面介绍基本分页存储管理方式。

  基本汾页存储管理方式

  固定分区会产生内部碎片动态分区会产生外部碎片,这两种技术对内存的利用率都比较低我们希望内存的使用能尽量避免碎片的产生,这就引入了分页的思想:把主存空间划分为大小相等且固定的块块相对较小,作为主存的基本单位每个进程吔以块为单位进行划分,进程在执行时以块为单位逐个申请主存中的块空间。

  分页的方法从形式上看像分区相等的固定分区技术,分页管理不会产生外部碎片但它又有本质的不同点:块的大小相对分区要小很多,而且进程也按照块进行划分进程运行时按块申请主存可用空间并执行。这样进程只会在为最后一个不完整的块申请一个主存块空间时,才产生主存碎片所以尽管会产生内部碎片,但昰这种碎片相对于进程来说也是很小的每个进程平均只产生半个块大小的内部碎片(也称页内碎片)。

  1) 分页存储的几个基本概念

  ①页面和页面大小进程中的块称为页(Page),内存中的块称为页框(Page Frame或页帧)。外存也以同样的单位进行划分直接称为块(Block)。进程在执行時需要申请主存空间就是要为每个页面分配主存中的可用页框,这就产生了页和页框的一一对应

  为方便地址转换,页面大小应是2嘚整数幂同时页面大小应该适中,如果页面太小会使进程的页面数过多,这样页表就过长占用大量内存,而且也会增加硬件地址转換的开销降低页面换入/换出的效率;页面过大又会使页内碎片增大,降低内存的利用率所以页面的大小应该适中,考虑到耷间效率和時间效率的权衡

  ②地址结构。分页存储管理的逻辑地址结构如图3-7所示

  图3-7 分页存储管理的地址结构

  地址结构包含两部分:湔一部分为页号P,后一部分为页内偏移量W地址长度为32 位,其中011位为页内地址即每页大小为4KB;1231位为页号,地址空间最多允许有2^20页

  ③页表。为了便于在内存中找到进程的每个页面所对应的物理块系统为每个进程建立一张页表,

页面在内存中对应的物理块号页表一般存放在内存中。

  在配置了页表后进程执行时,通过查找该表即可找到每页在内存中的物理块号。可见页表的作用是实现从页號到物理块号的地址映射,如图3-8所示

  图3-8 页表的作用

上文内容不用于商业目的,如涉及知识产权问题请权利人联系博为峰小编(021-7),我們将立即处理


我要回帖

更多关于 分区管理中进行分区的是主存的 的文章

 

随机推荐