操作系统原理与实践教程(第二版)习题答案

解:

文件目录又称文件控制块或文件说明信息,它记录文件的名字、文件长度、文件存放在外存上的物理地址,以及文件建立时间、日期等信息。通常,文件系统中把若干相互关联文件的目录组成一个独立的文件,这个由文件目录组成的文件称为目录文件。

(12) 某操作系统的磁盘文件空间共有500块,若用字长为32位的位示图管理磁盘空间,试问:①位示图占用多少磁盘空间?②第i字第j位对应的磁盘块号是多少? 解:

① 占用16个字的存储空间。 ② 32?i+j。

(13) 试说明对索引文件和索引顺序文件的检索方法。 解:

索引文件中,每一个主文件的记录都要建立一条索引。这里,主文件的记录可以是变长的,键值可以是无序的。索引表是定长的和有序的,适合采用折半检索法进行检索。

索引顺序文件中,主文件中的记录分成若干组,每一组的第一条记录建立一条索引项。整个索引文件是按键值排序的,系统可采用折半检索法对文件进行快速检索。检索到记录所在的外存块后,读出该块,再进行顺序查找和比较,最后找到所需要的记录。 (14) 目前广泛采用的目录结构形式是哪一种?它有什么优点? 解:

目前广泛采用的目录结构形式是多级目录结构,也称树型目录结构。它可以实现文件管理的主要要求,其优点是: 检索速度快 文件可重名 便于文件共享

(15) 基本的文件访问类型有哪些?什么是访问控制表? 解:

一个文件系统可以定义多种不同的访问类型,基本的访问类型有: 读(R):从文件中读信息。

写(W): 对文件内容进行写或重写。

执行(E):用户可以将文件装入内存并执行它。 添加(A):将信息添加到文件末尾。

删除(D):删除文件,释放其占用的空间。

不同的用户可能对同一个文件或目录需要不同类型的访问。实现基于身份访问的最普通的方法是为每个文件和目录增加一个访问控制表(access control list,ACL),以给定每个用户名及其所允许的访问类型。当用户请求访问一个特定文件时,操作系统先检查该文件的访问控制表,如果用户具有相应的访问权限,就允许其访问,否则,就出现保护违约,拒绝用户访问。 (16) 什么是索引文件?为什么要引入多级索引? 解:

索引文件中每条主文件的记录都建立一个索引记录,因而需要为主文件建立索引表。在对索引文件进行检索时,首先根据用户(程序)提供的关键字,并利用折半查找法去检索索引表,从中找到对应的表项,再利用该表项中给出的指向记录的指针值,去访问所需的记录。 在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过一个物理块,那么我们就必须像处理其它文件的存放那样决定索引表的物理存放方式,但这不利于索引表的动态增加;索引表也可以按链接联方式存放,但这却增加了存放索引表的时间开销。显然,当文件太大,其索引块太多时,这种方法是低效的。一种较好的解决办法是采用多级索引,

也就是在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。

第7章 设备管理

(1) 简单叙述设备管理的任务和功能。 解:

设备管理的主要任务包括:

1. 响应用户进程提出的I/O请求,选择和分配I/O设备进行数据传输操作。

2. 控制I/O设备和CPU(或内存)之间进行数据交换,提高设备和设备之间、CPU和设

备之间以及进程和进程之间的并行操作度,提高CPU与I/O设备的利用率,提高I/O设备的速度。

3. 方便用户使用设备,为用户提供友好的透明接口,把用户和设备硬件特性分开,使

得用户在编写应用程序时不必涉及具体的设备,系统按照用户的要求控制设备工作。另外,这个接口还为新增加的用户设备提供一个和系统核心相连接的入口,以便用户开发新的设备管理程序。

为了完成上述任务,设备管理应具有下述功能:

1. 设备分配: 计算机系统中的设备不允许用户直接使用,而是由操作系统统一分配和

控制。设备分配的基本任务是根据用户进程的I/O请求及系统当前的I/O资源情况,按照某种设备分配算法为用户进程分配所需的设备。

2. 缓冲管理: 为缓和CPU和I/O设备间速度不匹配的矛盾,提高CPU与I/O设备之

间以及各设备之间的并行性,现代操作系统都引入了缓冲技术。

3. 设备驱动: 设备驱动是指对物理设备进行控制,实现真正的I/O操作。设备驱动的

基本任务是实现CPU与设备控制器之间的通信,即接收由CPU发来的I/O命令,如读/写命令,转换为具体要求后,传给设备控制器,启动设备去执行;同时也将由设备控制器发来的信号传送给CPU,如设备是否完好、是否准备就绪、I/O操作是否已完成等,并进行相应的处理。

(2) 简单比较一下各种I/O控制方式的优缺点。

解:

I/O控制方式有四种,即程序直接控制方式、中断控制方式、DMA方式和通道控制方式。它们各自的优缺点叙述如下:

1. 程序直接控制方式。优点是控制简单,不需要很多硬件支持。但CPU和外设之间

只能串行工作,且CPU的大部分时间处于循环测试状态,这使得CPU的利用率大大降低;CPU在一段时间内只能和一台外设交换数据信息,从而不能实现设备之间的并行工作;由于程序直接控制方式依靠测试设备状态标志来控制数据传送,因此无法发现和处理因设备或其它硬件所产生的错误。所以,程序直接控制方式只适用于那些CPU执行速度较慢且外设较少的系统。

2. 中断控制方式。优点是能实现CPU与设备、设备与设备间的并行操作,CPU的利

用率较程序直接控制方式大大提高。但I/O控制器的数据缓冲寄存器通常较小,且数据缓冲寄存器装满数据后将会发出中断,因此一次数据传送过程中中断次数较多,耗去了大量CPU时间;如果系统中配置的外设数目较多,且都以中断方式进行控制,则将耗去大量CPU时间或因CPU来不及处理而造成数据丢失。 3. DMA方式。与中断方式相比,DMA方式的优点是在一批数据传送完成后中断CPU,

从而大大减少了CPU进行中断处理的次数,并且DMA方式下的数据传送是在DMA控制器控制下完成的,在数据传输过程中无需CPU干预。但DMA方式仍有

一定的局限,如对外设的管理和某些操作仍由CPU控制,且多个DMA控制器的使用也不经济。 4. 通道控制方式。通道是一个专管输入/输出控制的处理机。在通道控制方式下,CPU

只需发出I/O指令,通道就能完成相应的I/O操作,并在操作结束时向CPU发出中断信号。由此可见,CPU仅在I/O操作开始和结束时花极短的时间处理与I/O操作有关的事宜,其余时间都与通道并行工作,此外一个通道还能控制多台外设。但是,通道价格较高,从经济的角度出发不宜过多使用。

(3) 为什么要引入缓冲技术,其基本实现思想是什么?

解:

缓冲技术是用来在两种不同速度的设备之间传输信息时平滑传输过程的常用手段。在操作系统的设备管理中,引入缓冲技术的主要原因可归结为以下几点。

? 缓解CPU和I/O设备间速度不匹配的矛盾。 ? 减少对CPU的中断频率。

? 提高CPU和I/O设备之间的并行性。

缓冲技术的实现思想是在CPU和外设之间设立缓冲,用以暂存CPU和外设之间交换的数据,从而缓和CPU与外设速度不匹配所产生的矛盾。缓冲的实现方法有两种:一种实现方法是采用硬件缓冲器,但由于这种方法成本太高,除一些关键部位外,一般情况下不采用硬件缓冲器;另一种实现方法是在内存划出一块存储区,专门用来临时存放输入/输出数据,这个区域称为缓冲区。

(4) 什么是SPOOLing系统,如何利用SPOOLing系统实现打印机的虚拟分配? 解:

SPOOLing是外围设备同时联机操作,又称为假脱机输入/输出操作。SPOOLing技术可将一台物理I/O设备虚拟为多台逻辑I/O设备,从而允许多个用户共享一台物理I/O设备。 SPOOLing技术是对脱机输入、输出系统的模拟,因此,它必须建立在具有多道程序功能的操作系统上,而且还应该有高速随机外存的支持,这通常是采用磁盘存储技术。 SPOOLing系统通常由以下3部分组成:

1. 输入和输出井:这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的

磁 盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出的磁盘,用于暂存用户程序的输出数据。

2. 输入缓冲区和输出缓冲区:为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存

中开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区则用于暂存从输出井送来的数据,以后再传送给输出设备。

3. 输入进程和输出进程:SPOOLing利用两个进程来模拟脱机I/O时的外围控制机。

其中,输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井中读到内存;输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。

(5) 简单描述I/O软件的设计原则以及各层的功能。 解:

I/O软件设计时主要考虑以下几个问题:

1. 设备无关性。对于I/O系统中许多种类不同的设备,作为程序员,只需要知道如何

使用这些资源来完成所需要的操作,而无需了解设备的有关具体实现细节。例如,应用程序访问文件时,不必考虑它是存储在硬盘、软盘,还是CD-ROM上。对于

管理软件,也无需因为I/O设备变化,而重新编写涉及设备管理的程序。

2. 统一命名。要实现设备的无关性,其中一项重要的工作就是如何给I/O设备命名。

不同的操作系统有不同的命名规则,一般而言,是在系统中对各类设备采取预先设计的、统一的逻辑名称进行命名,所有软件都以逻辑名称访问设备。这种统一命名与具体设备无关,即同一逻辑设备的名称,在不同的情况下可能对应于不同的物理设备。

3. 出错处理。错误多数是与设备紧密相关的,因此对于错误的处理,应该在尽可能靠

近硬件的地方处理,在底层软件能够解决的错误就不要让高层软件感知,只有底层软件解决不了的错误才通知高层软件解决。

4. 缓冲技术。由于CPU与I/O设备之间的速度差异,需要使用缓冲技术。对于不同

类型的设备,其缓冲区的大小是不一样的,块设备的缓冲是以数据块为单位,而字符设备的缓冲则以字节为单位。因此,I/O软件应能屏蔽这种差异,向高层软件提供统一大小的数据块或字符单元,使得高层软件能够只与逻辑块大小一致的抽象设备进行交互。

5. 设备的分配和释放。对于系统中的共享设备,如磁盘等,可以同时为多个用户服务。

对于共享设备,应该允许多个进程同时对其提出I/O请求。对于独占设备,如键盘和打印机等,在某一段时间只能供一个用户使用,对其分配和释放不当,将引起混乱,甚至死锁。对于独占设备和共享设备带来的许多问题,I/O软件必须能够同时进行妥善地解决。

6. I/O控制方式。针对具有不同传输速率的设备,综合系统效率和系统代价等因素,

合理选择I/O控制方式,如像打印机等低速设备应采用中断驱动方式,而对磁盘等高速设备则采用DMA控制方式等,以提高系统的利用率。为方便用户,I/O软件应能屏蔽这种差异,向高层软件提供统一的操作接口。

操作系统通常把I/O软件组织成如下4个层次。

1. I/O中断处理程序。用于保存被中断进程的CPU环境,转入相应的中断处理程序进

行处理,处理完后再恢复被中断进程的现场,然后返回到被中断进程。

2. 设备驱动程序。与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动

I/O设备工作的驱动程序。

3. 设备无关软件。负责实现与设备驱动器的统一接口、设备命名、设备的保护以及设

备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。 4. 用户层I/O软件。实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O

操作有关的库函数,对设备进行操作。

(6) 为什么要引入设备独立性,如何实现设备独立性?

解:

设备独立性又称为设备无关性。它指的是应用程序在使用设备进行I/O时,使用的是逻辑设备,而系统在实际执行时使用的是物理设备,由操作系统负责逻辑设备与物理设备的映射。引入设备独立性可以使设备的分配具有极大的灵活性,并易于实现I/O重定向。

系统为每个进程设置一张逻辑设备表LUT。当某进程用逻辑名来请求设备时,系统查阅系统设备表SDT,为它分配相应的可用物理设备。系统将这种用户逻辑设备与系统物理设备的映射建立在该用户的LUT中,并将该物理设备的驱动程序入口地址填入LUT中。以后,该进程利用逻辑设备名请求I/O操作时,系统通过查找LUT即可找到物理设备及其驱动程序。

(7) 设备分配中会出现死锁吗,为什么? 解:

联系客服:779662525#qq.com(#替换为@)