购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 试题精解

试题1(2009年11月试题1)

计算机系统中硬件层之上的软件通常按照三层来划分,如图1-1所示,图中①②③分别表示 (1)

图1-1 计算机结构图

(1)A.操作系统、应用软件和其他系统软件

B.操作系统、其他系统软件和应用软件

C.其他系统软件、操作系统和应用软件

D.应用软件、其他系统软件和操作系统

试题分析

操作系统(Operating System)的目的是为了填补人与机器之间的鸿沟,即建立用户与计算机之间的接口,而为裸机配置的一种系统软件,如图1-2所示。

图1-2 计算机结构图(完整)

从图1-2可以看出,操作系统是裸机上的第一层软件,是对硬件系统功能的首次扩充。它在计算机系统中占据重要而特殊的地位,其他系统软件属于第二层,如编辑程序、汇编程序、编译程序和数据库管理系统等系统软件(这些软件工作于操作系统之上,可服务于应用软件,所以有别于应用软件);大量的应用软件属于第三层,例如希赛教育网上辅导平台,常见的一系列MIS系统等。其他系统软件和应用软件都是建立在操作系统基础之上的,并得到它的支持和取得它的服务。从用户角度看,当计算机配置了操作系统后,用户不再直接使用计算机系统硬件,而是利用操作系统所提供的命令和服务去操纵计算机,操作系统已成为现代计算机系统中必不可少的最重要的系统软件,因此把操作系统看作是用户与计算机之间的接口。

试题答案

(1)B

试题2(2009年11月试题2~4)

某计算机系统中有一个CPU、一台扫描仪和一台打印机。现有三个图像任务,每个任务有三个程序段:扫描Si,图像处理Ci和打印Pi (i=1,2,3)。图1-3为三个任务各程序段并发执行的前趋图,其中, (2) 可并行执行, (3) 的直接制约, (4) 的间接制约。

图1-3 前趋图

(2)A.“C 1 S 2 ”,“P 1 C 2 S 3 ”,“P 2 C 3

B.“C 1 S 1 ”,“S 2 C 2 P 2 ”,“C 3 P 3

C.“S 1 C 1 P 1 ”,“S 2 C 2 P 2 ”,“S 3 C 3 P 3

D.“S 1 S 2 S 3 ”,“C 1 C 2 C 3 ”,“P 1 P 2 P 3

(3)A.S 1 受到S 2 和S 3 、C 1 受到C 2 和C 3 、P 1 受到P 2 和P 3

B.S 2 和S 3 受到S 1 、C 2 和C 3 受到C 1 、P 2 和P 3 受到P 1

C.C 1 和P 1 受到S 1 、C 2 和P 2 受到S 2 、C 3 和 P 3 受到S 3

D.C 1 和S 1 受到P 1 、C 2 和S 2 受到P 2 、C 3 和S 3 受到P 3

(4)A.S 1 受到S 2 和S 3 、C 1 受到C 2 和C 3 、P 1 受到P 2 和P 3

B.S 2 和S 3 受到S 1 、C 2 和C 3 受到C 1 、P 2 和P 3 受到P 1

C.C 1 和P 1 受到S 1 、C 2 和P 2 受到S 2 、C 3 和P 3 受到S 3

D.C 1 和S 1 ,受到P 1 、C 2 和S 2 受到P 2 、C 3 和S 3 受到P 3

试题分析

如图1-3所示,当S 1 执行完毕后,计算C 1 与扫描S 2 可并行执行;C 1 与S 2 执行完毕后,打印P 1 、计算C 2 与扫描S 3 可并行执行;P 1 、C 2 与S 3 执行完毕后,打印P 2 与计算C 3 可并行执行。

根据题意,系统中有三个任务,每个任务有三个程序段,从前趋图中可以看出,系统要先进行扫描S i ,然后再进行图像处理C i ,最后进行打印P i ,所以C 1 和P 1 受到S 1 直接制约、C 2 和P 2 受到S 2 的直接制约、C 3 和P 3 受到S 3 的直接制约。

系统中有一台扫描仪,因此S 2 和S 3 不能运行是受到了S 1 的间接制约。如果系统中有三台扫描仪,那么S 2 和S 1 能运行;同理,C 2 和C 3 受到C 1 的直接制约、P 2 和P 3 受到P 1 的间接制约。

试题答案

(2)A  (3)C  (4)B

试题3(2010年11月试题1)

采用微内核结构的操作系统提高了系统的灵活性和可扩展性, (1)

(1)A.并增强了系统的可靠性和可移植性,可运行于分布式系统中

B.并增强了系统的可靠性和可移植性,但不适用于分布式系统

C.但降低了系统的可靠性和可移植性,可运行于分布式系统中

D.但降低了系统的可靠性和可移植性,不适用于分布式系统

试题分析

现代操作系统大多拥有两种工作状态,分别是核心态和用户态。一般应用程序工作在用户态,而内核模块和最基本的操作系统核心工作在核心态。

微内核操作系统结构是20世纪80年代后期发展起来的。操作系统的一个发展趋势是将传统的操作系统代码放置到更高层,从操作系统中去掉尽可能多的东西,而只留下一个最小的核心,称之为微内核。通常的方法是将大多数操作系统功能由在用户态运行的服务器进程来实现。为了获取某项服务,用户进程(客户进程)将请求发送给一个服务器进程,服务器进程完成此操作后,把结果返回给用户进程。这样,服务器以用户进程的形式运行,而不是运行在核心态。因此,它们不能直接访问硬件,某个服务器的崩溃不会导致整个系统的崩溃。客户/服务器结构的另一个优点是它更适用于分布式系统。

微内核技术的主要优点如下。

① 统一的接口,在用户态和核心态之间无需进程识别。

② 可伸缩性好,能适应硬件更新和应用变化。

③ 可移植性好,所有与具体机器特征相关的代码,全部隔离在微内核中,如果操作系统要移植到不同的硬件平台上,只需修改微内核中极少代码即可。

④ 实时性好,微内核可以方便地支持实时处理。

⑤ 安全可靠性高,微内核将安全性作为系统内部特性来进行设计,对外仅使用少量应用编程接口。

⑥ 支持分布式系统,支持多处理器的体系结构和高度并行的应用程序。

虽然微内核操作系统具有诸多优点,但它并非完美无缺。例如,在运行效率方面,它就不如以前传统的操作系统。

试题答案

(1)A

试题4(2010年11月试题2)

若操作系统文件管理程序正在将修改后的 (2) 文件写回磁盘时系统发生崩溃,对系统的影响相对较大。

(2)A.用户数据  B.用户程序

C.系统目录  D.空闲块管理

试题分析

操作系统为了实现“按名存取”,必须为每个文件设置用于描述和控制文件的数据结构,专门用于文件的检索,因此至少要包括文件名和存放文件的物理地址,该数据结构称为文件控制块(File Control Block,FCB),文件控制块的有序集合称为文件目录,或称为系统目录文件。若操作系统正在将修改后的系统目录文件写回磁盘时系统发生崩溃,则对系统的影响相对较大。

试题答案

(2)C

试题5(2010年11月试题3~4)

某虚拟存储系统采用最近最少使用的(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间,其中一个页面用来存放程序。现有某作业的程序如下:

设每个页面可存放200个整数变量,变量i、j存放在程序页中。初始时,程序及i、j均已在内存,其余3页为空。若矩阵A按行序存放,那么当程序执行完后共产生 (3) 次缺页中断;若矩阵A按列序存放,那么当程序执行完后共产生 (4) 次缺页中断。

(3)A.50   B.100

C.5000  D.10000

(4)A.50   B.100

C.5000  D.10000

试题分析

虚拟存储管理的提出就是为了解决这一问题,应用程序在运行之前未必全部装入内存,仅需将当前运行到的那部分程序和数据装入内存便可启动程序的运行,其余部分仍驻留在外存上。当要执行的指令或访问的数据不在内存时,再由操作系统通过请求调入功能将它们调入内存,以使程序能继续执行。如果此时内存已满,则还需通过置换功能,将内存中暂时不用的程序或数据调至外存上,腾出足够的内存空间后,再将要访问的程序或数据调入内存,使程序继续执行。这样,便可使一个大的用户程序能在较小的内存空间中运行,也可在内存中同时装入更多的进程使它们并发执行。从用户的角度看,该系统具有的内存容量比实际的内存容量大得多。将这种具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的存储器系统称为虚拟存储系统。

局部性原理

虚拟存储管理能够在作业信息不全部装入内存的情况下保证作业正确运行,是利用了程序执行时的局部性原理。局部性原理是指程序在执行时呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分。相应地,它所访问的存储空间也仅局限于某个区域。程序局部性包括时间局部性和空间局部性,时间局部性是指程序中的某条指令一旦执行,不久以后该指令可能再次执行。产生时间局部性的典型原因是由于程序中存在着大量的循环操作;空间局部性是指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。

工作集

在虚拟存储管理中,可能会出现这种情况,即对于刚被替换出去的页,立即又要被访问,需要将它调入,因无空闲内存又要替换另一页,而后者是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重时导致系统瘫痪,这种现象称为抖动现象。防止抖动现象有多种办法,例如,采取局部替换策略、引入工作集算法和挂起若干进程等。工作集是指在某段时间间隔内,进程实际要访问的页面的集合。引入虚拟内存后,程序只需有少量的内存就可运行,但为了使程序有效地运行,较少产生缺页,必须使程序的工作集全部在内存中。

页面置换算法

当内存中没有空闲页面,而又有程序和数据需要从外存中装入内存运行时,就需要从内存中选出一个或多个页面淘汰出去,以便新的程序和数据装入运行,良好的页面置换算法应该淘汰那些被访问概率最低的页,将它们移出内存。

① 随机淘汰算法。无法确定哪些页被访问的概率较低时,随机地选择某个页面,并将其换出。

② 轮转算法。按照内存页面的编号,循环地换出内存中一个可以被换出的页,无论该页是刚换进来还是已驻留内存很长时间。

③ 先进先出算法(First In First Out,FIFO)。FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。实现FIFO算法需要把各个已分配页面按页面分配时间顺序链接起来,组成FIFO队列,并设置一置换指针,指向FIFO队列的队首页面。FIFO算法忽略了一种现象的存在,那就是在内存中停留时间最长的页往往也是经常要访问的页。将这些页淘汰,很可能刚置换出去,又请求调用该页,致使缺页中断太频繁,严重降低内存的利用率。

FIFO的另一个缺点是它可能会产生一种异常现象。一般来说,对于任一作业或进程,如果给它分配的内存页面数越接近于它所要求的页面数,则发生缺页的次数会越少。但使用FIFO算法时,有时会出现分配的页面数增多,缺页次数反而增加的现象,称为belady现象。

④ 最近最久未使用算法(Least Recently Used,LRU)。当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。例如,考虑一个仅460个字节的程序的内存访问序列(10,11,104,170,73,309,185,245,246,434,458,364),页面的大小为100个字节,则460个字节应占5页,编号为0~4,第0页字节为0~99,第1页为100~199,依此类推。得到页面的访问序列是(0,0,1,1,0,3,1,2,2,4,4,3),可简化为(0,1,0,3,1,2,4,3)。如果内存中有200个字节可供程序使用,则内存提供2个页帧供程序使用。按照FIFO算法,共产生6次缺页中断,如表1-2所示。

表1-2 FIFO算法缺页中断

按照LRU算法,共产生7次缺页中断,如表1-3所示。

表1-3 LRU算法缺页中断

⑤ 最近没有使用页面置换算法(No Used Recently,NUR)。在需要置换某一页时,从那些最近的一个时期内未被访问的页任选一页置换。只要在页表中增设一个访问位即可实现。当某页被访问时,访问位置为1,否则访问位置为0。系统周期性地对所有引用位清零。当需淘汰一页时,从那些访问位为零的页中选一页进行淘汰。

⑥ 最优置换算法。选择那些永久不使用的,或者在最长时间内不再被访问的页面置换出去。因为要确定哪个页面是未来最长时间内不再被访问的,目前来说很难估计,所以,该算法通常用来评价其他算法。

⑦ 时钟页面替换算法(Clock)。使用页表中的引用位,将作业已调入内存的页面链成循环队列,用一个指针指向循环队列中的下一个将被替换的页面。其实现方法如下:一个页面首次装入内存时,其引用位置1;在内存中的任何一个页面被访问时,其引用位置1;淘汰页面时,存储管理从指针当前指向的页面开始扫描循环队列,把所遇到的引用位是1的页面的引用位清0,并跳过这个页面;把所遇到的引用位是0的页面淘汰掉,指针推进一步;扫描循环队列时,如果遇到的所有页面的引用位均为1,则指针就会绕整个循环队列一圈,将碰到的所有页面的引用位清0;指针停在起始位置,并淘汰掉这一页,然后指针推进一步。

在本题中,从题干可知,作业共有4个页面的主存空间,其中一个已被程序本身占用,所以在读取变量时可用的页面数只有3个。每个页面可存放200个整数变量,程序中A数组共有100*100=10000个变量。按行存放时,每个页面调入的200变量刚好是程序处理的200个变量,所以缺页次数为10000/200=50。而按列存放时,虽然每个页面调取数据时,同样也读入了200个变量,但这200个变量中,只有2个是近期需要访问的(如:第1个页面调入的是A[*,1]与A[*,2],但程序近期需要访问的变量只有A[1,1]和A[1,2]),所以缺页次数为:10000/2=5000。

试题答案

(3)A  (4)C

试题6(2011年11月试题1)

操作系统为用户提供了两类接口:操作一级和程序控制一级的接口,以下不属于操作一级的接口是 (1)

(1)A.操作控制命令  B.系统调用

C.菜单      D.窗口

试题分析

操作系统是用户和计算机之间的接口,用户通过操作系统的帮助可以快速、有效和安全可靠地使用计算机各类资源。通常操作系统提供两类接口,分别是程序一级的接口(程序接口)和操作一级的接口(联机用户接口和脱机用户接口)。

用户与操作系统的接口通常是由“命令”和“系统调用”的形式表现出来的。命令是提供给用户在键盘终端上使用(命令接口),系统调用是用户在编程时使用(程序接口)。

在不同的系统中,系统调用的实现方式可能不同,但大体上都可以把系统调用的执行过程分成以下几步。

① 设置系统调用号和参数

在一个系统中,往往都设置了许多条系统调用命令,并赋予每条系统调用命令一个唯一的系统调用号。设置系统调用方式有2种方式。

●直接将参数送入相应的寄存器中,这是最简单的一种方式。这种方式的主要问题是由于寄存器数量有限,从而限制了设置参数的数目。

●参数表方式。将系统调用所需要的参数,放入一张参数表中,再将该参数表的指针放在某个规定的寄存器中。

② 系统调用命令的一般性处理

为了使不同系统调用能方便地转向相应的命令处理程序,在系统中配置了一张系统调用入口表。表中每个表目都对应一条系统调用命令,核心可利用系统调用号去查找该表,就可以找到相应命令处理程序的入口地址而去执行它。

③ 系统调用命令处理程序的处理过程

为了提供系统调用的功能,操作系统内必须有事先编制好的实现这些功能的子程序或过程。这些程序是操作系统程序模块的一部分,且不能直接被用户程序调用。

程序员给定了系统调用名和参数之后是怎样得到系统服务的呢?这需要有一个类似于硬件终端处理的中断处理机构。当用户使用系统调用时,产生一条相应的指令,处理机在执行到该指令时发生相应的中断,并发出有关信号给该处理机构。该处理机构在收到了处理机发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能。

在系统中为控制系统调用服务的机构称为陷阱处理机构。与此相对应,把由于系统调用引起处理中断的指令为陷阱指令。在操作系统中,每个系统调用都对应一个功能号。在陷阱指令中必须包括对应系统调用的功能号。而且,在有些陷阱指令中,还带有传递给陷阱处理机构和内部处理程序的有关参数。

为了实现系统调用,系统设计人员还必须为实现各种系统调用功能的子程序编造入口地址表,每个入口地址都与相应的系统子程序名相对应。然后,由陷阱处理程序把陷阱指令中所包含的功能号与该入口地址表的有关项对应起来,从而由系统调用功能号驱动有关系统子程序执行。

由于在系统调用处理结束之后,用户程序还需利用系统调用的返回结果继续执行,因此,在进入系统调用处理之前,陷阱处理机构还需保存处理机现场。再者,在系统调用处理结束之后,陷阱处理机构还要回复处理机现场。在操作系统中,处理机的现场一般被保护在特定的内存区或寄存器中。

试题答案

(1)B

试题7(2011年11月试题2~4)

进程P1、P2、P3、P4和P5的前趋图如图1-4所示。

若用PV操作控制进程P1~P5并发执行的过程,则需要设置5个信号量S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在图1-4中的边上,且信号量S1~S5的初值都等于零,初始状态下进程P1开始执行。在如图1-5所示的PV操作示意图中a、b和c处应分别填写 (2) ;d和e处应分别填写 (3) ,f和g处应分别填写 (4)

图1-4 前趋图

图1-5 PV操作示意图

(2)A.V(S1) V(S2)、P(S1)和V(S3) V(S4)

B.P(S1) V(S2)、P(S1)和P(S2) V(S1)

C.V(S1) V(S2)、P(S1)和P(S3) P(S4)

D.P(S1) P(S2)、V(S1)和P(S3) V(S2)

(3)A.P(S1) 和V(S5)     B.V(S1) 和P(S5)

C.P(S2) 和V(S5)     D.V(S2) 和P(S5)

(4)A.P(S3)和V(S4) V(S5)  B.P(S3)和P(S4) P(S5)

C.V(S3)和V(S4) V(S5)  D.V(S3)和P(S4) P(S5)

试题分析

在多道程序系统中,由于资源共享与进程合作,使各进程之间可能产生两种形式的制约关系,一种是间接相互制约,例如,在仅有一台打印机的系统中,有两个进程A和B,如果进程A需要打印时,系统已将打印机分配给进程B,则进程A必须阻塞;一旦进程B将打印机释放,系统便将进程A唤醒,使之由阻塞状态变为就绪状态;另一种是直接相互制约,例如,输入进程A通过单缓冲区向进程B提供数据。当该缓冲区为空时,进程B不能获得所需的数据而阻塞,一旦进程A将数据送入缓冲区中,进程B就被唤醒。反之,当缓冲区满时,进程A就被阻塞,仅当进程B取走缓冲区中的数据时,才唤醒进程A。

进程同步主要源于进程合作,是进程之间共同完成一项任务时直接发生相互作用的关系,为进程之间的直接制约关系。在多道程序系统中,这种进程间在执行次序上的协调是必不可少的;进程互斥主要源于资源共享,是进程之间的间接制约关系。在多道程序系统中,每次只允许一个进程访问的资源称为临界资源,进程互斥要求保证每次只有一个进程使用临界资源。在每个进程中访问临界资源的程序段称为临界区,进程进入临界区要满足一定的条件,以保证临界资源的安全使用和系统的正常运行。

信号量

信号量是一个二元组( S Q ),其中 S 是一个整形变量,初值为非负数, Q 为一个初始状态为空的等待队列。在多道程序系统中,信号量机制是一种有效的实现进程同步与互斥的工具。信号量的值通常表示系统中某类资源的数目,若它大于0,则表示系统中当前可用资源的数量;若它小于0,则表示系统中等待使用该资源的进程数目,即在该信号量队列上排队的PCB的个数。信号量的值是可变的,由PV操作来改变。

PV操作是对信号量进行处理的操作过程,而且信号量只能由PV操作来改变。P操作是对信号量减1,意味着请求系统分配一个单位资源,若系统无可用资源,则进程变为阻塞状态;V操作是对信号量加1,意味着释放一个单位资源,加1后若信号量小于等于0,则从就绪队列中唤醒一个进程,执行V操作的进程继续执行。

对信号量 S 进行P操作,记为P(S);对信号量 S 进行V操作,记为V(S)。P(S)和V(S)的处理过程如表1-4所示。

表1-4 P(S)和V(S)的处理过程

实现互斥模型

使用信号量机制实现进程互斥时,需要为临界资源设置一个互斥信号量 S ,其初值通常为1。在每个进程中将临界区代码置于P(S)和V(S)之间。必须成对使用PV原语,缺少P原语则不能保证互斥访问,缺少V原语则不能在使用临界资源之后将其释放。而且,PV原语不能次序颠倒、重复或遗漏。

实现同步模型

使用信号量机制实现进程同步时,需要为进程设置一个同步信号量 S ,其初值通常为0。在进程需要同步的地方分别插入P(S)和V(S)。一个进程使用P原语时,则另一个进程往往使用V原语与之对应。具体怎么使用要根据实际情况决定,下面举个简单例子来加以说明。

有两个进程P1和P2,P1的功能是计算x=a+b的值,a和b是常量,在P1的前面代码中能得到;P2的功能是计算y=x+1的值。若这两个进程在并发执行,则有同步关系:P2要执行y=x+1时必须等到P1已经执行完x=a+b语句。 P2进程可能会因为要等待x的值而阻塞,如果是这样的话,P1进程就要在计算出x的值后唤醒P2进程。因此,为了使P1和P2正常运行,用信号量来实现其同步的过程如表1-5所示。

表1-5 P1和P2的同步过程

再举一个较为复杂的例子,以加深对PV操作的理解。设有两个并发进程Read和Print,Read负责从输入设备读入信息到一个容量为N的缓冲区,Print负责从缓冲区中取出信息送打印机输出。设置信号量mutex的初值为1,empty的初值为N,full的初值为0,则程序如表1-6所示。

在本题中,从题目的前趋图,可以得知以下约束关系:

① P1执行完毕,P2与P3才能开始;

② P2执行完毕,P4才能开始;

③ P2与P3都执行完,P5才能开始。

表1-6 实现Read和Print的程序

分析清楚这种制约关系,解题也就容易了。

① 从“P1执行完毕,P2与P3才能开始”可以得知:P2与P3中的b与d位置,分别应填P(S1)和P(S2),以确保在P1执行完毕以前,P2与P3不能执行。当然当P1执行完毕时,应该要对此解锁,所以P1中的a位置应填V(S1)与V(S2)。

② 从“P2执行完毕,P4才能开始”可以得知:P4的f位置,应填P(S3),而P2的结束位置c应有V(S3)。

③ 从“P2与P3都执行完,P5才能开始”可以得知:P5的g位置,应填P(S4)与P(S5),而对应的P2的结束位置c应有V(S4),结合前面的结论可知,c应填V(S3)与V(S4)。而e应填V(S5)。

试题答案

(2)A  (3)C  (4)B

试题8(2012年11月试题1~2)

假设系统中有 n 个进程共享3台打印机,任一进程在任一时刻最多只能使用1台打印机。若用PV操作控制 n 个进程使用打印机,则相应信号量 S 的取值范围为 (1) ;若信号量 S 的值为-3,则系统中有 (2) 个进程等待使用打印机。

(1)A.0,-1,…,-( n -1)

B.3,2,1,0,-1,…,-( n -3)

C.1,0,-1,…,-( n -1)

D.2,1,0,-1,…,-( n -2)

(2)A.0  B.1  C.2  D.3

试题分析

信号量是PV操作中的一种特殊变量,该变量的值指示一类资源的数量,当信号量的值为负数时,又能展示出目前系统中有多少个进程在等待该资源。

在本题中,系统有 n 个进程,有3台打印机。初始状态时,没有1个进程使用打印机,此时信号量 S 应为3,代表有3台打印机资源可用。而如果此时有1个进程占用了1台打印机,则信号量 S 变为2,代表目前只有2台打印机可用,依此类推。信号量的最小值为-( n -3),即表示当前状态为:3个进程占用了3台打印机资源,而剩余的 n -3个进程都在等待打印机资源。所以 S 的取值范围是:3,2,1,0,-1,…,-( n -3)。

有了前面的分析,接下来这一问就非常好回答了。信号量为-3,表示有3个进程在等待使用打印机。

试题答案

(1)B  (2)D

试题9(2012年11月试题3~4)

假设文件系统采用索引节点管理,且索引节点有8个地址项iaddr[0]~iaddr[7],每个地址项大小为4字节,iaddr[0]~iaddr[4]采用直接地址索引,iaddr[5]和iaddr[6]采用一级间接地址索引,iaddr[7]采用二级间接地址索引。假设磁盘索引块和磁盘数据块大小均为1KB字节,文件File1的索引节点如图1-6所示。若用户访问文件File1中逻辑块号为5和261的信息,则对应的物理块号分别为 (3) ;101号物理块存放的是 (4)

图1-6 索引文件示意图

(3)A.89和90    B.89和136

C.58和187   D.90和136

(4)A.File1的信息    B.直接地址索引表

C.一级地址索引表  D.二级地址索引表

试题分析

文件物理结构(物理文件)是指文件在存储介质上的组织方式,它依赖于物理的存储设备和存储空间,可以看作是相关物理块的集合。由于物理结构决定了信息在存储设备上的存放位置和方式,因此,信息的逻辑位置到物理位置的映射关系也是由物理结构决定的。常用的文件物理结构有顺序结构、链接结构和索引结构。

① 顺序结构(连续结构)。逻辑上连续的记录构成的文件分配到连续的物理块中。这种方式管理简单,存储速度快,空间利用率低,但文件记录插入或删除操作不方便,只能在文件末尾进行。

② 链接结构(串联结构)。将信息存放在非连续的物理块中,每个物理块均设有一个指针,指向其后续的物理块,从而使得存放同一文件的物理块链接成一个串联队列。链接方式又分为显式链接和隐式链接两种。显式链接的链接指针在专门的链接表中,隐式链接的指针在存放信息的物理块中。链接结构空间利用率高,且易于文件扩充,但查找效率比较低。

③ 索引结构(随机结构)。为每个文件建立一个索引表,其中每个表项指出信息所在的物理块号,表目按逻辑记录编写顺序或按记录内某一关键字顺序排列。对于大文件,为检索方便,可以建立多级索引,还可以将文件索引表也作为一个文件(称为索引表文件)。该方式可以满足文件动态增长的要求且存取方便,但建立索引表增加了存储空间的开销,对于多级索引,访问时间开销较大。

例如,在UNIX系统中,文件的物理结构采用直接、一级、二级和三级间接索引技术,假如索引节点有13个地址项,并且规定地址项0~9采用直接寻址方法,地址项10采用一级间接寻址,地址项11采用二级间接寻址,地址项12采用三级间接寻址。每个盘块的大小为1KB,每个盘块号占4B,那么,对于访问文件的第356168B处的数据来说,先进行简单换算356168/1024≈348KB,由于地址项0~9可直接寻址10个物理盘块,每个物理块大小为1KB,所以访问文件的前10KB范围的数据时是直接寻址。地址项10采用一次间接寻址,即地址项10里存放的是一级索引表的地址,因为每个盘块号占4B,故该索引表可存放1024/4=256个物理块的地址,所以当访问文件的10~266KB之间的数据时是一次间接寻址。由于要访问的数据是348KB,所以还有348-266=82KB。显然地址项11足够存取这些数据,因此,最多就在地址项11而无须存取地址项12,即只需要二级间接寻址。

在本题中,索引节点共有8个地址项,共分3个梯度:直接索引,一级间接索引,二级间接索引。现在要求确认逻辑块号为5与261对应的物理块号(注意:块号是从0开始编址的)。在直接索引中,索引节点对应的物理块用于直接存放文件内容,节点中存放的地址便是物理块号的首地址,如0号逻辑块,它所对应的物理块号为50;1号逻辑块对应的物理块号为67;但5号逻辑块就已经到了一级间接索引了。在一级间接索引中,索引节点所对应的物理块并不是用于存储文件内容,而是存放物理块的地址,物理块的地址占4字节,所以一个块可以存放1024/4=256个地址。5号逻辑块对应的是一级间接索引的第1个块,所以物理块号为58。依此类推,6号逻辑块对应的是59号物理块;由于5(直接索引的块数)+256(1级间接索引中,1个物理块可容地址数)=261,这说明第91号物理块中的第1个地址,对应的是261号逻辑块(第262个逻辑块),即187号物理块对应块号为261的逻辑块。

接下来的问题比前一问更容易,从示意图可以看出,101号物理块对应的空间存储着一系列地址,而这些地址对应的物理块中存储的仍然是地址,再到下一层才是文件内容,所以101号物理块存放的是二级地址索引表。

试题答案

(3)C  (4)D jmeohlS7hmDIWizRG1tKJSZ7ixQ38Zsx4SMEGXK+k1hIdE2Ogua2Pk/uuX8bwG46

点击中间区域
呼出菜单
上一章
目录
下一章
×