当前位置:首页 » 存储配置 » 分段式存储

分段式存储

发布时间: 2023-01-05 19:21:34

A. 采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段最大长度是

2^16。

采用段式管理的系统中,其逻辑地址分为段号和页内偏移量。本题的地址一共24位,使用了8位表示段号,那么把剩下的 16 位全部用来表示段内偏移量就能使每段长度最大从而每段允许的最大长度为 2^16。

产生是与程序的模块化直接有关的,段式管理是通过段表进行的,包括段号或段名、段起点、装入位、段的长度等。此外还需要主存占用区域表、主存可用区域表。



(1)分段式存储扩展阅读:

为了进行段式管理,每道程序在系统中都有一个段(映象)表来存放该道程序各段装入主存的状况信息。

段表中的每一项(对应表中的每一行)描述该道程序一个段的基本状况,由若干个字段提供。段名字段用于存放段的名称,段名一般是有其逻辑意义的,也可以转换成用段号指明。

由于段号从0开始顺序编号,正好与段表中的行号对应,如2段必是段表中的第3行,这样,段表中就可不设段号(名)字段。

段表中还可以根据需要设置其它的字段。段表本身也是一个段,一般常驻在主存中,也可以存在辅存中,需要时再调入主存。假设系统在主存中最多可同时有N道程序,可设N个段表基址寄存器。

B. 分段式存储管理为什么不回产生内部碎片

首先明确一点,内部碎片是什么?
内部碎片就是为每个进程分布的内存空间之中所没有被使用到的内存碎片。通常出现在分页式存储管理之中。分页式是什么应该很好理解,就是把内存按照分为一页页大小相同的页面,然后再把这些页面分配给进程。因此,在分配给进程时可能会出现这样的情况:进程需要3MB,分给他4页,每页1MB,这样4>3,就会造成1MB的内部碎片。
而分段式存储管理为什么不会产生内部碎片?归根结底是由分段本身的定义出发的。如果说分页式是系统对内存的分割,那么分段式就是用户对程序数据的分割。分页式是没有任何逻辑意义的,而分段式是有其意义在的。比如说一个程序有主程序段Main类,有通用库,有数据段,这样我们就把这个程序分为三段,分别对应Main,库,数据(说的是最浅显的,详细的可以网络其他),是有逻辑意义的独立单位。都这样分了,怎么还会出现内部碎片?反之,如果是分页式,就可能出现Main类横跨两页,且整个程序装入内存后还有碎片空间的可能了。
总之,引入分段式存储管理本就在一定程度上解决了内部碎片,并且满足了用户的需求。但是分段式存储管理也有不足之处,内存利用率变低了。因此又引入之后的段页式存储管理方式,这个自己网络就行。
参看计算机操作系统第四版,欢迎指正

C. 段式存储管理的段式存储管理的优缺点

在段式存储管理中,每个段地址的说明为两个量:一个段名和一个位移。在段内,是连续完整存放的。而在段与段之间是不一定连续编址的。段名和位移构成了一种二维编址。 段式管理是不连续分配内存技术中的一种。其最大特点在于他按照用户观点,即按程序段、数据段等有明确逻辑含义的“段”,分配内存空间。克服了页式的、硬性的、非逻辑划分给保护和共享与支态伸缩带来的不自然性。 段的最大好处是可以充分实现共享和保护,便于动态申请内存,管理和使用统一化,便于动态链接;其缺点是有碎片问题。

D. 基本分段存储管理方式的分段存储管理方式的引入

引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:
1) 方便编程
通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从0开始编址,并有自己的名字和长度。因此,希望要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的。例如,下述的两条指令便是使用段名和段内地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
其中,前一条指令的含义是将分段A中D单元内的值读入寄存器1;后一条指令的含义是将寄存器1的内容存入B分段的C单元中。
2) 信息共享
在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。比如,共享某个例程和函数。分页系统中的“页”只是存放信息的物理单位(块),并无完整的意义,不便于实现共享;然而段却是信息的逻辑单位。由此可知,为了实现段的共享,希望存储管理能与用户程序分段的组织方式相适应。
3) 信息保护
信息保护同样是对信息的逻辑单位进行保护,因此,分段管理方式能更有效和方便地实现信息保护功能。
4) 动态增长
在实际应用中,往往有些段,特别是数据段,在使用过程中会不断地增长,而事先又无法确切地知道数据段会增长到多大。前述的其它几种存储管理方式,都难以应付这种动态增长的情况,而分段存储管理方式却能较好地解决这一问题。
5) 动态链接
动态链接是指在作业运行之前,并不把几个目标程序段链接起来。要运行时,先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见,动态链接也要求以段作为管理的单位。

E. 页式存储管理和段式存储管理的区别

段式与页式存储管理的比较如下表所示。

段式
页式

分段由用户设计划分,每段对应一个相应的的程序模块,有完整的逻辑意义。
分页用户看不见,由操作系统为内存管理划分。

段面是信息的逻辑单位
页面是信息的物理单位

便于段的共享,执行时按需动态链接装入。
页一般不能共享

段长不等,可动态增长,有利于新数据增长。
页面大小相同,位置不能动态增长。

二维地址空间:段名、段中地址;段号、段内单元号
一维地址空间

管理形式上象页式,但概念不同
往往需要多次缺页中断才能把所需信息完整地调入内存

实现页(段)的共享是指某些作业的逻辑页号(段号)对应同一物理页号(内存中该段的起始地址)。页(段)的保护往往需要对共享的页面(段)加上某种访问权限的限制,如不能修改等;或设置地址越界检查,对于页内地址(段内地址)大于页长(段长)的存取,产生保护中断。

F. 分页式存储管理与分段式管理的主要区别是什么

页和分段系统有许多相似之处,但在概念上两者完全不同,主要表现在:

1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。

段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。

分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

G. 示波器为什么要分段储存呢

要了解示波器的分段存储功能,我们先来看看这个功能解决了什么问题,存在的价值是什么。

首先我们要明确一点,数字示波器通过ADC模数转换器将模拟信号转换成了数字信号,只能努力去还原信号本来的样子,要想达到100%还原是不可能的,那么这个还原就肯定会存在误差,误差小的时候我们能接受,有时候误差大了可能信号基本的样子都变了,那自然不是我们想要的结果。

示波器作为一个系统,影响其测量精度的因素有很多种,其中比较重要的因素就是示波器的带宽和采样率,而示波器的采样率 = 存储深度 ÷ 波形记录时长,采样率的上限和存储深度是固定的,我们记录波形的时长如果超过一定程度,由于存储深度的限制,采样率就必然相应的也要降低。采样率下降就有可能导致信号失真。

比如下图是一个I2C总线信号,图左边时基是20us,图右边时基是20s。可以看到图左边是正常的脉冲信号,此时的采样率是1G Sa/s。图右边由于波形记录时长增加,采样率下降到了500K Sa/s。

H. 8086/8088CPU使用的存储器为什么要分段怎么分段

8086/8088系统中,存储器为什么要分段。

一个段最大为多少字节。

最小为多少字节。

解:分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。

一个段最大为64KB,最小为16B。

(8)分段式存储扩展阅读:

段的开始地址总是是16的倍数。即:若一个段的起始地址为0000h,那么另一个段(重叠第一个段)的起始地址将为:0010h(即16),下一个段的起始地址将为0020h(32)。

一个段的段号由其物理地址的前4个16进制数组成。(如:FFFF)

通常,程序只写出偏移量(从段的第一个字节到要定位地址的距离),段号可以通过上下文判断。偏移量大小从0000到FFFF。

I. 基本分段存储管理方式的分段系统的基本原理

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等,如图4-17所示。每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。
分段地址中的地址具有如下结构:
在该地址结构中,允许一个作业最长有 64 K个段,每个段的最大长度为64 KB。分段方式已得到许多编译程序的支持,编译程序能自动地根据源程序的情况而产生若干个段。例如,Pascal编译程序可以为全局变量、用于存储相应参数及返回地址的过程调用栈、每个过程或函数的代码部分、每个过程或函数的局部变量等等,分别建立各自的段。类似地,Fortran编译程序可以为公共块(Common block)建立单独的段,也可以为数组分配一个单独的段。装入程序将装入所有这些段,并为每个段赋予一个段号。 为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后,再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号;若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。
下图示出了分段系统的地址变换过程。
像分页系统一样,当段表放在内存中时,每要访问一个数据,都须访问两次内存,从而极大地降低了计算机的速率。解决的方法也和分页系统类似,再增设一个联想存储器,用于保存最近常用的段表项。由于一般情况是段比页大,因而段表项的数目比页表项的数目少,其所需的联想存储器也相对较小,便可以显着地减少存取数据的时间,比起没有地址变换的常规存储器的存取速度来仅慢约10%~15%。

J. 内存为程序分配空间的四种分配方式

存储器是个宝贵但却有限的资源。一流的操作系统,需要能够有效地管理及利用存储器。

内存为程序分配空间有四种分配方式:

1、连续分配方式

2、基本分页存储管理方式

3、基本分段存储管理方式

4、段页式存储管理方式

首先讲连续分配方式。 连续分配方式 出现的时间比较早,曾广泛应用于20世纪60~70年代的OS中,但是它至今仍然在内存管理方式中占有一席之地,原因在于它 实现起来比较方便,所需的硬件支持最少 。连续分配方式又可细分为四种: 单一连续分配、固定分区分配、动态分区分配和动态重定位分区分配

其中固定分区的分配方式,因为分区固定,所以缺乏灵活性,即 当程序太小时,会造成内存空间的浪费( 内部碎片 ) 程序太大时,一个分区又不足以容纳,致使程序无法运行( 外部碎片 ) 。但尽管如此,当一台计算机去控制多个相同对象的时候,由于这些对象内存大小相同,所以完全可以采用这种内存管理方式,而且是最高效的。这里我们可以看出存储器管理机制的多面性:没有那种存储器管理机制是完全没有用的,在适合的场合下,一种被认为最不合理的分配方案却可能称为最高效的分配方案。 一切都要从实际问题出发,进行设计。

为了解决固定分区分配方式的缺乏灵活性,出现了 动态分配方式 。动态分配方式采用一些 寻表(Eg: 空闲链表 ) 的方式,查找能符合程序需要的空闲内存分区。但代价是增加了系统运行的开销,而且内存空闲表本身是一个文件,必然会占用一部分宝贵的内存资源,而且有些算法还会增加内存碎片。

可重定位分区分配通过对程序实现成定位,从而可以将内存块进行搬移,将小块拼成大块,将小空闲“紧凑”成大空闲,腾出较大的内存以容纳新的程序进程。

连续分配方式 会形成许多“碎片”,虽然可以通过“紧凑”方式将许多碎片拼接成可用的大块空间,但须为之付出很大开销。所以提出了“ 离散分配方式 ”的想法。如果 离散分配的基本单位是页 ,则称为 分页管理方式 ;如果离散分配的基本单位是段,则称为 分段管理方式

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“ 页内碎片 ”。

在分页系统中,允许将进程的各个页离散地存储在内存不同的物理块中(所以能实现离散分配方式) ,但系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。为此,系统又为每个进程建立了一张页面映像表,简称 页表 。在进程地址空间内的所有页,依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块号。在配置了页表后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号。可见, 页表的作用是实现从页号到物理块号的地址映射

为了能够将用户地址空间中的 逻辑地址,变换为内存空间中的物理地址 ,在系统中必须设置 地址变换机构 。地址变换任务是借助于页表来完成的。

页表 的功能可由一组专门的寄存器来实现。由于寄存器成本较高,且大多数现代计算机的页表又很大,使页表项总数可达几千甚至几十万个,显然这些页表项不可能都用寄存器来实现,因此,页表大多驻留在内存中。因为一个进程可以通过它的PCB来时时保存自己的状态,等到CPU要处理它的时候才将PCB交给寄存器,所以,系统中虽然可以运行多个进程,但也只需要一个页表寄存器就可以了。

由于 页表是存放在内存中 的,这使得 CPU在每存取一个数据时,都要两次访问内存 。为了提高地址变换速度,在地址变化机构中增设了一个 具有并行查询能力的高速缓冲寄存器 ,又称为“联想寄存器”(Associative Lookaside Buffer)。

在单级页表的基础上,为了适应非常大的逻辑空间,出现了两级和多级页表,但是,他们的原理和单级页表是一样的,只不过为了适应地址变换层次的增加,需要在地址变换机构中增设外层的页表寄存器。

分段存储管理方式 的目的,主要是为了满足用户(程序员)在编程和使用上多方面的要求,其中有些要求是其他几种存储管理方式所难以满足的。因此,这种存储管理方式已成为当今所有存储管理方式的基础。

分段管理方式和分页管理方式在实现思路上是很相似的,只不过他们的基本单位不同。分段有 段表 ,也有 地址变换机构 ,为了提高检索速度,同样增设 联想寄存器(具有并行查询能力的高速缓冲寄存器) 。所以有些具体细节在这个不再赘述。

分页和分段的主要区别:

1、两者相似之处:两者 都采用离散分配方式,且都要通过地址映射机构来实现地址变换

2、两者的不同之处:

(1)页是信息的 物理单位 ,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅是由于 系统管理的需要 而不是用户的需要。段则是信息的 逻辑单位 ,它含有一组其意义相对完整的信息。 分段的目的是为了能更好地满足用户的需要

(2) 页的大小固定 且由系统决定,而 段的长度却不固定

(3)分页的作业地址空间是 一维 的,即单一的线性地址空间;而分段的作业地址空间则是 二维 的。

前面所介绍的分页和分段存储管理方式都各有优缺点。 分页系统能有效地 提高内存利用率 ,而分段系统则能很好地 满足用户需求 。 我们希望能够把两者的优点结合,于是出现了段页式存储管理方式。

段页式系统的基本原理,是分段和分页原理的结合,即 先将用户程序分成若干个段,再把每个段分成若干个页 ,并为每一个段赋予一个段名。在段页式系统中,地址结构由段号、段内页号和页内地址三部分组成。

和前两种存储管理方式相同,段页式存储管理方式同样需要增设联想寄存器。

离散分配方式 基于将一个进程直接分散地分配到许多不相邻的分区中的思想,分为分页式存储管理,分段式存储管理和段页式存储管理. 分页式存储管理旨在提高内存利用率,满足系统管理的需要,分段式存储管理则旨在满足用户(程序员)的需要,在实现共享和保护方面优于分页式存储管理,而段页式存储管理则是将两者结合起来,取长补短,即具有分段系统便于实现,可共享,易于保护,可动态链接等优点,又能像分页系统那样很好的解决外部碎片的问题,以及为各个分段可离散分配内存等问题,显然是一种比较有效的存储管理方式。

更多Linux内核视频教程文档资料免费领取【 内核 】自行获取。

内核学习网站:

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

热点内容
内部存储空间怎么清除 发布:2024-05-21 04:04:55 浏览:498
bilibili不能缓存 发布:2024-05-21 03:31:14 浏览:617
解压剃发 发布:2024-05-21 03:16:27 浏览:641
服务器怎么连接到电脑显示屏上 发布:2024-05-21 02:38:21 浏览:286
织梦安装数据库连接失败 发布:2024-05-21 02:37:45 浏览:259
python编程入门经典pdf 发布:2024-05-21 02:31:45 浏览:7
arm编译添加驱动 发布:2024-05-21 02:02:28 浏览:476
安卓设置页面是怎么 发布:2024-05-21 01:32:51 浏览:521
学生成绩管理系统数据库设计 发布:2024-05-21 01:14:41 浏览:43
我的世界什么指令直接出现服务器 发布:2024-05-21 01:10:00 浏览:397