计算机操作系统面试知识点整理

发布时间 : 星期二 文章计算机操作系统面试知识点整理更新完毕开始阅读

9.段式管理

段式存储管理的基本思想:把程序按内容或过程(函数)关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应于一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟存储地址转化为内存中的实际地址。和页式管理一样,段式管理也采用只把那些经常访问的段驻留内存,而把那些在将来一段时间内不被访问的段放在外存,待需要时自动调入内存的方法实现二维虚拟存储器。 段式与页式的比较 段 式 页 式 分段由用户设计自己划分,每段对应的程序分页用户看不见,由操作系统为内存管理划模块,有完整的逻辑意义 段面是信息的逻辑单位 便于段的共享,执行时按需动态链接装入 分 页面是信息的物理单位 页一般不能共享 段长不等,可动态装入,有利于新数据的增 页面大小相同,位置不能动态增加 长 一维地址空间 二维地址空间:段名、段中地址;段号、段往往需要多次缺页中断才能把所需的信息完内单元号 管理形式上象页式,但概念不同 段式管理的实现原理

段式管理把一个进程的虚地址空间设计成二维结构,即段号S与段内相对地址W。段号与段号之间无顺序关系,段的长度是不固定的。每个段定义一组逻辑上完整的程序或数据。例如,一个进程中的程序和数据可被划分为主程序段、子程序段、数据段与工作区段。每个段是一个首地址为零、连续的一维线性空间。 段式管理的内存分配与释放

段式管理中以段为单位分配内存,每段分配一个连续的内存区。由于各段长度不等,所

整地调入内存 以这些存储区的大小不一。而且,同一进程所包含的各段之间不要求连续。段式管理的内存分配和释放是动态进行的,与分区式管理一样可以采用最先适应法、最佳适应法、最坏适应法等进行空闲区分配。内存回收法也同分区式管理。当内存中没有足够的空闲区时,需要淘汰算法。 ★段式管理的地址变换

由于段式管理只存放部分信息副本在内存,而大部分信息在外存中,这必然引起CPU访问时发生所要访问的段不在内存现象。那么CPU如何感知到所要访问的段不在内存而启动中断处理程序呢?还有,段式虚拟地址属于一个二维的虚拟空间,怎样变换到一个一维线性物理地址呢?这些都由段式地址变换机构解决。

段式管理程序在进行初始内存分配之前,首先根据用户要求的内存大小为一个作业或进程建立一个段表,以实现动态地址变换和缺段中断处理及存储保护等。

段式管理的地址变换:一般在内存中给出一块固定的区域放置段表。当某进程开始执行时,管理程序首先把该进程的段表始地址放入段表地址寄存器中。通过访问段表寄存器,管理程序得到该进程的段表始地址从而可开始访问段表。然后,由虚拟地址中的段号s为索引,查段表。若该段在内存,则判断其存取控制方式是否有错。如果存取控制方式正确,则从段表相应表目中查出该段在内存的起始地址,并将其和段内相对应地址w相加,从而得到实际内存地址。若该段不存在,则产生缺段中断将CPU控制权交给内存分配程序。内存分配程序首先检查空闲区链,以找到足够长度的空闲区来装入所需的段。如果内存中的可用空闲区总数小于所要求的段长时,则检查段表中访问位,以淘汰那些访问概率低的段并将需要段调入。 段的共享与保护

段式存储管理可以方便地实现内存信息共享和进行有效地内存保护。这是因为段是按逻辑意义来划分的,可以按名访问的缘故。

段的共享:在多道环境下,常常有许多子程序和应用程序是被多个用户所使用的。特别是在多窗口系统、支持工具等广泛流行的今天,被共享的程序和数据的个数和体积都在

急剧增加,有时往往超过用户程序长度的许多倍。 内存只保留一个副本,供多个用户使用,称为共享。

在多道环境下,由于进程的并发执行,一段程序为多个进程共享时,有可能出现多次同时重复执行该段程序的情况。这就要求它在执行过程中,该段程序的指令和数据不能被修改。

共享段进行内外存交换时,应该设置一个共享位。显然,一个正在被某进程使用或即将被某进程使用的共享段是不应该调出内存的。

段的保护:(1)地址越界保护法(2)存取方式控制保护法 ★段式管理的优缺点 优点

提供了内外存统一管理的虚存实现。 段长可根据需要动态增长。

便于对具有完整逻辑功能的信息段进行共享。 便于实现动态链接。 缺点

需要更多的硬件支持。 处理碎片比较麻烦。

给系统管理带来一定的难度和开销。 每个段的长度受内存可用区大小的限制。 选择不恰当的淘汰算法,可能会产生抖动现象。 10.段页式管理 段页式管理的基本思想

段式管理为用户提供了一个二维的虚地址空间,反映了程序的逻辑结构,有利于段的动态增长以及共享和内存保护等,这大大方便了用户。而分页管理系统则有效地克服了碎片,提高了存储器的利用率。从存储管理的目的来讲,主要是方便用户的程序设计和提

高内存的利用率。那么把段式管理和页式管理结合起来让其互取长补短不是更好吗?于是,段页式管理方式便被提了出来。一般仅用于大型机。 段页式管理的实现原理

段页式管理时的进程的虚拟地址空间中的虚拟地址由三部分组成:即段号S,页号P和页内相对地址D。

由于虚拟空间的最小单位是页而不是段,从而内存可用区也就被划分成为若干个大小相等的页面,且每段所拥有的程序和数据在内存中可以分开存放。分段的大小也不再受内存可用区的限制。

为了实现段页式管理,系统必须为每个作业或进程建立一张段表,管理内存分配与释放、缺段处理、存储保护和地址变换等。另外,由于一个段又被划分成了若干页,每个又必须建立一张页表,把段中的虚页变换成内存中实际页面。显然,与页式管理时相同,页表中也要有实现缺页中断处理和页面保护等功能的表项。

另外,由于在段页式管理中,页表不再属于进程而属于段,因此,段表中应有页表首址和长度的项。 ★动态地址变换过程

在一般使用段页式存储管理的计算机系统中,都在内存中开辟出一块固定的区域存放进程的段表和页表。因此,在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存。显然,CPU的执行指令速度大大降低。

为了提高地址转换速度,设置快速联想寄存器。它用于存放当前最常用的段号、页号和对应的内存页面与其它控制用栏目。 ★局部性原理和抖动问题

程序设计常识告诉我们,一个作业往往含有许多循环和子程序的结构。因此,在作业运行期间,在一小段时间内,访问的地址空间往往只涉及整个程序的一小部分。在另一小段数据内,又只涉及另外的一小部分。这种现象称为局部性特征。

反映在页面综迹里,这种特征表现为,在任何一小段时间里,作业只集中于访问某几页。

所谓工作集,就是一个作业在某一小段时间内访问页面的集合。

如用W(t,△t)表示在(t-△t)到t之间所访问的不同的页面,那么,这个W就称之为作业在时间t的工作集。工作集长度是W (t,△t)中的页面数。工作集长度越短,局部性越突出。 一般来说,一个作业的工作集,在运行的不同时刻是不同的,工作集大小亦不相等。而且,工作集大小与△t有关。 △t大小很难确定,过小,就不能体现一个工作集过渡到另一个工作集一般是缓慢的这一局部性特征。

一个进程执行过程中缺页的发生有两种可能。一种是并发进程所要求的工作集总和大于内存可提供的可用区。这时,系统将无法正常工作,因为缺乏足够的空间装入需要的程序和数据。

另一种可能性是,虽然存储管理程序为每个并发进程分配了足够的工作集,但系统无法在开始执行前选择适当的程序和数据进入内存。这种情况下,只能依靠执行过程中,当CPU发现所要访问的指令或数据不在内存时,由硬件中断后转入中断处理程序,将需要的程序和数据调入。

系统抖动:当给进程分配的内存小于所要求的工作集时,由于内存外存之间交换频繁,访问外存时间和输入输出处理时间大大增加,反而造成CPU因等待数据空转,使得整个系统性能大大下降,这就造成了系统抖动。 解决抖动问题 1、增加工作集大小;

2、选择不同的淘汰算法,尽量保持工作集页面在内存中。

实际上,为了使系统获得高效率,暂停一个作业,当其有足够数量的页面在主存时才恢复运行;而在调度一个新作业时,必须有足够多的空闲存储块,才让其进入主存。

联系合同范文客服:xxxxx#qq.com(#替换为@)