分区存储管理中常用哪些分配策略

如题所述

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

一、空间的分配与回收

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

二、地址转换和存储保护

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

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

三、多作业队列的固定分区管理

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

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

一、空间的分配与回收

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

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

二、地址转换和存储保护

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

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

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

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

3、页式存储管理

基本原理

1.等分内存

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

2.逻辑地址

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

逻辑地址
页号p
页内地址 d

3.内存分配

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

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

3.5.2实现原理

1.页表

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

逻辑页号
主存块号

0
B0

1
B1

2
B2

3
B3

2.地址映射过程

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

3.页面的共享与保护

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

4、段式存储管理

基本原理

1.逻辑地址空间

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

2.逻辑地址

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

3.内存分配

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

3.6.2实现方法

1.段表

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

2.建立空闲区表

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

3.地址映射过程

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

5、段页式存储管理

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

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

逻辑地址
段号s
页号p
页内地址d

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

系统为每个进程建立一张段表,为进程的每一段各建立一张页表。地址转换过程,要经过查段表、页表后才能得到最终的物理地址。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-11
一、固定分区存储管理
其基本思想是将内存划分成若干固定大小的分区,每个分区中最多只能装入一个作业。当作业申请内存时,系统按一定的算法为其选择一个适当的分区,并装入内存运行。由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,造成存储空间浪费。

1、空间的分配与回收

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

2、地址转换和存储保护

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

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

3、多作业队列的固定分区管理

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

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

1、空间的分配与回收

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

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

2、地址转换和存储保护

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

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

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

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

分区存储管理中常用那些分配策略?比较它们的优缺点。
【答案】:分区存储管理中的常用分配策路:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。首次适应算法优缺点:保留了高址部分的大空闲区,有利于后来的大型作业分配;低址部分不断被划分,留下许多难以利用的小空闲区,每次查找都从低址开始增加了系统开销。循环首次适应算法优缺点:内存空...

分区存储管理中常用哪些分配策略
可以采用首先适应算法、最佳(优)适应算法和最坏适应算法三种分配策略之一进行内存分配。 二、地址转换和存储保护 可变分区存储管理一般采用动态重定位的方式,为实现地址重定位和存储保护,系统设置相应的硬件:基址\/限长寄存器(或上界\/下界寄存器)、加法器、比较线路等。 基址寄存器用来存放程序在内存的起始地址,限长寄存器...

分区存储管理中常用哪些分配策略
3、 动态分区分配方式 优点:用户程序装入内存时,根据进程所需要的大小动态建立分区,使得分区大小刚好符合进行需要。缺点:在一开始,动态分区的分配效果是好的,但是随着内存进程的需要和时间的推移,内存中会产生许多外部碎片。解决内存碎片的可以用紧凑技术将多个细小碎片合并成一个较大的外部碎片从而解决...

计算机操作系统第三版 汤子瀛编著的 第四章的课后题答案能发给我一下...
分区存储管理中常采用的分配策略有:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法。a.首次适应算法的优缺点:保留了高址部分的大空闲区,有利于后到来的大型作业的分配;低址部分不断被划分,留下许多难以利用的、小的空闲区,且每次分区分配查找时都是从低址部分开始,会增加查找时的系统开销。b.循环首...

oracle数据库分区有几种
Oracle数据库支持四种主要的数据分区策略,分别是范围分区、列表分区、哈希分区和复合分区。1. **范围分区(Range Partitioning)**:范围分区是根据分区键的值的范围来组织数据的。在这种策略中,数据被分配到具有连续值范围的多个分区中。例如,一个根据日期字段分区的表可以将数据按年份分割到不同的分区...

如何划分磁盘分区?
E盘分配150GB,专用于存储个人工作文件。这样可以确保工作相关数据在系统崩溃或其他故障时具有备份,同时也便于管理和分类文件。最后,F盘分配200GB空间,用于存储电影、游戏等非系统文件。这些文件对系统性能影响较小,因此可以放在单独的分区中,便于管理和快速访问。综上所述,合理的磁盘分区策略可以优化...

两个硬盘怎么样分区?
对于那些对分区操作感到不适或有强迫症倾向的用户,可以选择只格式化硬盘而不进行分区,简化操作流程。实际使用中,只要适应了无分区的管理方式,也能达到高效、便捷的效果。总之,分区策略应根据个人需求、使用习惯和硬盘容量进行灵活调整。合理规划硬盘分区,能够有效提升存储资源的利用效率,优化计算机系统性能...

存储调度是什么意思?
一般来说,存储调度采用分区、分页等方式对内存进行合理的划分和调度。在使用中,存储调度主要依靠操作系统自身的算法、策略来进行处理。常见的操作系统如Windows、Linux等,其存储调度使用的算法有FIFO、LRU、CLOCK等。不同的算法和策略能够实现不同的调度效果,针对不同场景可以采用不同的调度方式。存储调度...

动态分区的方式有哪些?
动态分区分配是内存管理的重要方式之一,主要通过首次适应算法、邻近适应算法、最佳适应算法和最坏适应算法来实现。首次适应算法(First Fit)中,空闲分区按照地址的顺序连接起来。分配内存时,系统从头到尾顺序查找,找到第一个能满足所需空间大小的第一个空闲分区,然后进行分配。邻近适应算法(Next Fit)在...

Kafka分区分配策略
第一步:将所有主题分区组成TopicAndPartition列表,然后对TopicAndPartition列表按照hashCode进行排序,最后按照轮询的方式发给每一个消费线程。我们再来看一下StickyAssignor策略,“sticky”这个单词可以翻译为“粘性的”,Kafka从0.11.x版本开始引入这种分配策略,它主要有两个目的:分区的分配要尽可能的均匀,...

相似回答