9.引入缓冲的主要原因是什么?
答:引入缓冲的主要原因是:(1)缓和CPU与I/O 设备间速度不匹配的矛盾;(2)减少对CPU的中断频率,放宽对中断响应时间的限制;(3)提高CPU与I/O 设备之间的并行性。 10.在单缓冲情况下,为什么系统对一块数据的处理时间为max(C,T)+M ?
答:在块设备输入时,先从磁盘把一块数据输入到缓冲区,耗时为T;然后由操作系统将缓冲区数据送给用户区,耗时M;接下来由CPU 对块数据进行计算,耗时C。在单缓冲情况下,磁盘把数据输入到缓冲区的操作和CPU 对数据的计算过程可以并行展开,所以系统对每一整块数据的处理时间为max(C, T) + M。 11.为什么在双缓冲情况下,系统对一块数据的处理时间为max(T,C)?
答:写入者花费时间T 将数据写满一个缓冲区后再写另一个缓冲区;读出者花费时间M 将一个缓冲区数据送到用户区后再传送另一个缓冲区数据,计算者读出用户区数据进行处理。由于将数据从缓冲区传到用户区操作必须与读用户区数据处理串行进行,而且可以与从外存传送数据填满缓冲区的操作并行。因此耗时大约为max(C+M,T)。考虑M 是内存数据块的移动耗时非常短暂可以省略,因此近似地认为系统对一块数据处理时间为max(C,T)。
12.试绘图说明把多缓冲用于输出时的情况。 答:多缓冲用于输出的示意图如下:
13.试说明收容输入工作缓冲区和提取输出工作缓冲区的工作情况。
答:① 收容输入工作缓冲区的工作情况为:在输入进程需要输入数据时,调用GetBuf(EmptyQueue)过程,
21
从EmptyQueue队列的队首摘下一个空缓冲区,作为收容输入工作缓冲区Hin。然后把数据输入其中,装满后再调用PutBuf(InputQueue, Hin)过程,将该缓冲区挂在输入队列InputQueue的队尾。② 提取输出工作缓冲区的工作情况为:当要输出数据时,调用GetBuf(OutputQueue)过程,从输出队列的队首取得一装满输出数据的缓冲区作为提取输出工作缓冲区Sout。在数据提取完后,再调用PutBuf(EmptyQueue, Sout)过程,将该缓冲区挂到空缓冲队列EmptyQueue的队尾。 14.何谓安全分配方式和不安全分配方式?
答:① 安全分配方式是指每当进程发出I/O 请求后,便进入阻塞状态,直到其I/O 操作完成时才被唤醒。在采用这种分配策略时,一旦进程已获得某种设备资源后便阻塞,使它不可能再请求任何资源,而在它运行时又不保持任何资源。这种分配方式已经摒弃了造成死锁的“请求和保持”条件,分配是安全的。缺点是进程进展缓慢,CPU与I/O 设备串行工作。②不安全分配方式是指进程发出I/O 请求后仍继续执行,需要时又可发出第二个I/O 请求、第三个I/O 请求。仅当进程请求的设备已被另一个进程占有时,进程才进入阻塞状态。优点是一个进程可同时操作多个设备,进程推进迅速。缺点是分配不安全,可能具有“请求和保持”条件,可能造成死锁。因此,在设备分配程序中需增加一个功能,用于对本次的设备分配是否会发生死锁进行安全性计算,仅当计算结果表明分配安全的情况下才进行分配。 15.为何要引入设备独立性?如何实现设备独立性?
答:现代操作系统为了提高系统的可适应性和可扩展性,都实现了设备独立性或设备无关性。基本含义是应用程序独立于具体使用的物理设备,应用程序以逻辑设备名请求使用某类设备。实现了设备独立性功能可带来两方面的好处:(1)设备分配时的灵活性;(2)易于实现I/O 重定向。
为了实现设备的独立性,应引入逻辑设备和物理设备概念。在应用程序中,使用逻辑设备名请求使用某类设备;系统执行时是使用物理设备名。鉴于驱动程序是与硬件或设备紧密相关的软件,必须在驱动程序之上设置一层设备独立性软件,执行所有设备的公有操作、完成逻辑设备名到物理设备名的转换(为此应设置一张逻辑设备表)并向用户层(或文件层)软件提供统一接口,从而实现设备的独立性。 16.在考虑到设备的独立性时,应如何分配独占设备?
答:在考虑到设备的独立性时,应按如下步骤来分配独占设备:(1) 进程以逻辑设备名提出I/O请求。(2) 根据逻辑设备表获得I/O请求的逻辑设备对应物理设备在系统设备表中的指针。(3) 检索系统设备表,找到属于请求类型、空闲可用且分配安全设备的设备控制表,将对应设备分配给请求进程;未找到则等待等待唤醒和分配。(4) 到设备控制表中找出与其相连接的控制器的控制器控制表,根据状态字段判断是否忙碌,忙则等待;否则将该控制器分配给进程。(5) 到该控制器的控制器控制表中找出与其相连接的通道的通道控制表,判断通道是否忙碌,忙则等待;否则将该通道分配给进程。(6) 只有在设备、控制器和通道三者都分配成功时,这次的设备分配才算成功,然后便可启动设备进行数据传送。 17.何谓设备虚拟?实现设备虚拟时所依赖的关键技术是什么?
答:设备虚拟是指把独占设备经过某种技术处理改造成虚拟设备。可虚拟设备是指一台物理设备在采用虚拟技术后,可变成多台逻辑上的虚拟设备,则可虚拟设备是可共享的设备,将它同时分配给多个进程使用,并对这些访问该物理设备的先后次序进行控制。 18.试说明SPOOLing 系统的组成。
答:SPOOLing 系统由输入井和输出井、输入缓冲区和输出缓冲区、输入进程 SPi 和输出进程 SPo 三部分组成。
19.在实现后台打印时,SPOOLing 系统应为请求I/O 的进程提供哪些服务?
答:在实现后台打印时,SPOOLing 系统应为请求 I/O的进程提供以下服务:(1)由输出进程在输出井中申请一空闲盘块区,并将要打印的数据送入其中;(2)输出进程为用户进程申请空白用户打印表,填入打印要求,将该表挂到请求打印队列。(3)一旦打印机空闲,输出进程便从请求打印队列的队首取出一张请求打印表,根据表中要求将要打印的数据从输出井传送到内存缓冲区,再由打印机进行打印。 20.试说明设备驱动程序具有哪些特点。
答:设备驱动程序具有如下特点:(1)是请求 I/O 进程与设备控制器间的一个通信程序;(2)驱动程序与 I/O
22
设备的特性紧密相关;(3)驱动程序与 I/O 控制方式紧密相关;(4)驱动程序与硬件紧密相关,部分程序用汇编语言书写,基本部分往往固化在ROM中。
21.试说明设备驱动程序应具有哪些功能?
答:设备驱动程序的主要功能包括:(1)将接收到的抽象要求转为具体要求;(2)检查用户I/O请求合法性,了解I/O 设备状态,传递有关参数,设置设备工作方式;(3)发出I/O 命令,启动分配到的I/O设备,完成指定I/O 操作;(4)及时响应由控制器或通道发来的中断请求,根据中断类型调用相应中断处理程序处理;(5)对于有通道的计算机,驱动程序还应该根据用户 I/O 请求自动构成通道程序。 22.设备中断处理程序通常需完成哪些工作?
答:设备中断处理程序通常需完成如下工作:(1) 唤醒被阻塞的驱动程序进程;(2) 保护被中断进程的CPU环境;(3) 分析中断原因、转入相应的设备中断处理程序;(4) 进行中断处理;(5) 恢复被中断进程。 23.磁盘访问时间由哪几部分组成?每部分时间应如何计算?
答:磁盘访问时间由寻道时间Ts、旋转延迟时间Tr、传输时间Tt 三部分组成。(1)Ts 是启动磁臂时间s 与磁头移动n条磁道的时间和,即Ts = m × n + s。(2)Tr是指定扇区移动到磁头下面所经历的时间。硬盘15000r/min时Tr为2ms;软盘300或600r/min时Tr为50~100ms。(3)Tt 是指数据从磁盘读出或向磁盘写入经历的时间。Tt 的大小与每次读/写的字节数b和旋转速度有关:Tt = b/rN。 24.目前常用的磁盘调度算法有哪几种?每种算法优先考虑的问题是什么?
答:目前常用的磁盘调度算法有先来先服务、最短寻道时间优先及扫描等算法。(1) 先来先服务算法优先考虑进程请求访问磁盘的先后次序;(2) 最短寻道时间优先算法优先考虑要求访问的磁道与当前磁头所在磁道距离是否最近;(3) 扫描算法考虑欲访问的磁道与当前磁道间的距离,更优先考虑磁头当前的移动方向。
25.为什么要引入磁盘高速缓冲?何谓磁盘高速缓冲?
答:目前磁盘的I/O速度远低于内存的访问速度,通常低上4-6个数量级。因此,磁盘I/O已成为计算机系统的瓶颈。为提高磁盘I/O的速度,便引入了磁盘高速缓冲。磁盘高速缓冲是指利用内存中的存储空间,暂存从磁盘中读出的一系列盘块中的信息。
26.在设计磁盘高速缓冲时,如何实现数据交付?
答:数据交付是指将磁盘高速缓存中的数据传给请求进程。当进程请求访问某个盘块中的数据时,由核心先查看磁盘高速缓冲,看其中是否存在所需盘块数据的拷贝。若有便直接从中提取数据交付给请求进程,避免了访盘操作,本次访问速度提高4-6 个数量级;否则先从磁盘中将要访问的数据读入并交付给请求者进程,同时送高速缓存以便下次直接读取。 27.何谓提前读、延迟写和虚拟盘?
答:提前读是指在读当前盘块的同时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲区中读取,无需启动磁盘。延迟写是指在写盘块时,将对应缓冲区中的立即写数据暂时不立即写以备不久之后再被访问,只将它置上“延迟写”标志并挂到空闲缓冲队列的末尾。当移到空闲缓冲队首并被分配出去时,才写缓冲区中的数据。只要延迟写块仍在空闲缓冲队列中,任何要求访问都可直接从其中读出数据或将数据写入其中,而不必去访问磁盘。虚拟盘又称RAM盘,是利用内存空间仿真磁盘。其设备驱动程序可以接受所有标准的磁盘操作,但这些操作不是在磁盘上而是在内存中,因此速度更快。 28.廉价磁盘冗余阵列是如何提高对磁盘的访问速度和可靠性的?
答:廉价磁盘冗余阵列RAID是利用一台磁盘阵列控制器,统一管理和控制一组(几台到几十台)磁盘驱动器,组成高度可靠快速大容量的磁盘系统。操作系统将RAID中的一组物理磁盘驱动器看作一个单个的逻辑磁盘驱动器。用户数据和系统数据可分布在阵列的所有磁盘中,并采取并行传输方式,大大减少数据传输时间和提高了可靠性。
第六章 文件管理
1.何谓数据项、记录和文件?
23
答:①数据项分为基本数据项和组合数据项。基本数据项描述一个对象某种属性的字符集,具有数据名、数据类型及数据值三个特性。组合数据项由若干数据项构成。②记录是一组相关数据项的集合,用于描述一个对象某方面的属性。③文件是具有文件名的一组相关信息的集合。 2.文件系统的模型可分为三层,试说明其每一层所包含的基本内容。
答:第一层:对象及其属性说明(文件、目录、硬盘或磁带存储空间);第二层:对对象操纵和管理的软件集合(I/O控制层即设备驱动程序、基本文件系统即物理I/O层、基本I/O管理程序或文件组织模块层、逻辑文件系统层)第三层:文件系统接口(命令接口/图形化用户接口与程序接口)。 3.试说明用户可以对文件施加的主要操作有哪些?
答:用户通过文件系统提供的系统调用对文件实施操作。(1)基本文件操作:创建、删除、读、写、截断、设置读/写位置等;(2)文件打开和关闭操作:第一步通过检索文件目录找到指定文件属性及其在外存上位置;第二步对文件实施读写等相应操作。(3)其他文件操作:一是文件属性操作;二是目录操作;三是文件共享与文件系统操作的系统调用实现等。 4.何谓逻辑文件?何谓物理文件?
答:逻辑文件是物理文件中存储的数据的一种视图方式,不包含具体数据,仅包含物理文件中数据的索引。物理文件又称文件存储结构,是指文件在外存上的存储组织形式。 5.如何提高对变长记录顺序文件的检索速度?
答:基本方法是为变长记录顺序文件建立一张索引表,以主文件中每条记录的长度及指向对应记录的指针(即该记录在逻辑地址空间的首址)作为相应表项的内容。由于索引表本身是一个定长记录的顺序文件,若将其按记录键排序,则实现了对主文件方便快捷的直接存取。如果文件较大,应通过建立分组多级索引以进一步提高检索效率。
6.试说明对索引文件和索引顺序文件的检索方法。
答: ① 索引文件的检索,首先根据用户(程序)提供的关键字,利用折半查找法检索索引表,找到相应表项;再利用给出的指向记录指针值,访问对应记录。② 索引顺序文件的检索,首先利用用户(程序)提供的关键字及查找方法,检索索引表,找到该记录在记录组中的第一条记录表项,得到第一个记录在主文件中的位置;再利用顺序查找法查找主文件,找到所要求的记录。
7.试从检索速度和存储费用两方面对索引文件和索引顺序文件进行比较。
答:索引文件的主文件每条记录配置一个索引项,存储开销N,检索到具有指定关键字的记录,平均查找N/2 条记录。对于索引顺序文件,每个记录分组配置一个索引项,存储开销为N ,检索到具有指定关键字的记录,平均需要查找N /2次。
8.试说明顺序文件的结构及其优点。
答:第一种是串结构:各记录之间的顺序与关键字无关。第二种是顺序结构:指文件中的所有记录按关键字(词)排列。可以按关键词长短排序或英文字母顺序排序。顺序文件的最佳应用场合是对诸记录进行批量存取时,存取效率最高;只有顺序文件才能存储在磁带上并有效工作。 9.在链接式文件中常用哪种链接方式?为什么?
答:链接方式分为隐式链接和显式链接两种形式。隐式链接是在文件目录的每个目录项中,都含有指向链接文件第一个盘块和最后一个盘块的指针。显式链接则把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。
10.在MS-DOS中有两个文件A 和B,A占用11、12、16和14 四个盘块;B 占用13、18和20三个盘块。试画出在文件A和B中各盘块间的链接情况及FAT的情况。 答:如下图所示。
24
11.NTFS文件系统对文件采用什么样的物理结构?
答:在NTFS 文件系统中,以簇作为磁盘空间分配和回收的基本单位。一个文件占若干个簇,一个簇只属于一个文件。
12.假定一个文件系统的组织方式与MS-DOS相似,在FAT中可有64K个指针,磁盘的盘块大小为512B,试问该文件系统能否指引一个512MB 的磁盘?
解:512MB/512B=1M 个盘块,而每个盘块都应有一个指针来指示,所以应该有1M 个指针,因此若有64K 指针不能指引一个512MB的磁盘。
13.为了快速访问,又易于更新,当数据为以下形式时,应选用何种文件组织方式。
⑴ 不经常更新,经常随机访问;⑵经常更新,经常按一定顺序访问;⑶经常更新,经常随机访问; 答:以上三种宜分别采用(1)顺序结构(2)索引顺序结构(3)索引结构的组织方式。
14.在UNIX 中,如果一个盘块的大小为1KB,每个盘块号占4个字节,即每块可放256个地址。请转换下列文件的字节偏移量为物理地址。 ⑴9999; ⑵18000; ⑶420000
答:首先将逻辑文件的字节偏移量转换为逻辑块号和块内偏移量,就是将[字节偏移量]/[盘块大小],商为逻辑块号,余数是块内偏移量。在FCB中,第0-9个地址为直接地址,第10个为一次间接地址,第11个地址为二次间接地址,第12个地址为三次间接地址。再将文件的逻辑块号转换为物理块号。使用多重索引结构,在索引节点中根据逻辑块号通过直接索引或间接索引找到对应的物理块号。
(1)9999/1024=9 余783,则逻辑块号为9,直接索引第9个地址得到物理块号,块内偏移地址为783。 (2)18000/1024=17余592,则逻辑块号为10<17<10+256,通过一次间接索引在第10个地址可得到物理块号,块内偏移地址为592。
(3)420000/1024=410 余160,则逻辑块号为10+256<410,通过二次间接索引在第11个地址可得到一次间址,再由此得到二次间址,再找到物理块号,其块内偏移地址160。 15.什么是索引文件?为什么要引入多级索引?
答:索引文件是指当记录为可变长度时,通常为之建立一张索引表,并为每个记录设置一个表项构成的文件。通常将索引非顺序文件简称为索引文件。索引是为了是用户的访问速度更快,多级索引结构可以有效的管理索引文件,可根据用户的访问情况多级处理。 16.试说明UNIX 系统中所采用的混合索引分配方式。
答:混合索引分配方式是指将多种索引分配方式结合而成的分配方式。常见的是采用直接地址和一级索引联合的分配方式,或两级索引分配方式,甚至三级索引分配方式。在UNIXSystem Ⅴ和BSD UNIX 的索引结点中,都设置了13 个地址项,即iaddr(0)~iaddr(12),把所有地址项分成直接地址和间接地址。 17.对目录管理的主要要求是什么?
25