全国自考操作系统(文件系统)模拟试卷1_第1页
全国自考操作系统(文件系统)模拟试卷1_第2页
全国自考操作系统(文件系统)模拟试卷1_第3页
全国自考操作系统(文件系统)模拟试卷1_第4页
全国自考操作系统(文件系统)模拟试卷1_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国自考操作系统(文件系统)模拟试

卷1

一、操作系统•单项选择题(本题共6题,每题1.0分,

共6分。)

1、操作系统对数据进行管理的部分叫做。

A、数据库系统

B、文件系统

C、数据存储系统

D、信息管理系统

标准答案:B

知识点解析:暂无解析

2、文件索引结构的特点是______。

A、打开文件以后,要占用较多的额外内存空间

B、适合于记录式文件,不适合于无结构的流式文件

C、文件索引表占的空间比索引顺序文件和散列文件表大

D、局部修改时,插入、删除一个文件块比链接结构文件和散列文件费时

标准答案:D

知识点解析:暂无解析

3、以下是关于UNIX流文件的函数。

A、rewind

B>system

C、sscanf

D^fstat

标准答案:A

知识点解析:system提供了在一个程序中执行另一个独立程序的例行程序库函数,

不是有关流文件的库函数;fstat是系统调用;sscanf是存储区中的格式转化函数,

与文件无关。

4、UNIX操作系统在接到用户关于文件的操作命令后,就要在文件系统中

寻找空目录项。

A、creat

open

C、write

D、close

标准答案:A

知识点解析:暂无解析

5、UNIX打开文件机构中的进程打开文件表是进程扩充控制块user结构中的

A、u_odir

B、u_ofile

C、u_dirp

D、u_pot

标准答案:B

知识点解析:暂无解析

6、在UNIX系统中,有名管道的创建操作是

A、creat

pipe

C、mknod

D、CreateNamePipe

标准答案:C

知识点解析:pipe是创建无名管道的操作,CreateNamePipe是Windows系统的创

建有名管道的操作。

二、操作系统•填空题(本题共7题,每题1.0分,共7

分。)

7、只有文件的或才能用close系统调用关闭文件。

标准答案:创建者、打开者。

知识点解析:在用程序创建文件时,系统以写方式打开文件,并返回打开文件描述

字,故创建者就可以关闭该文件。但对于以命令方式创建的文件或其他用户打开的

文件、文件的创建者也不能用close系统调用关闭该文件,因为创建者无法获得打

开文件file结构的指针。

8、按对文件的存取方法分,常用的文件存取方法有两种:存取和

存取。

标准答案:顺序、随机

知识点解析:暂无解析

9、是文件存在的标志,它记录了系统管理文件所需要的全部信息。

标准答案:文件控制块

知识点解析:暂无解析

10、在UNIX系统中,当系统调用出错时返回-1,这时全局变量_______值为相应

的出错代码,出错代码的消息数组是。

标准答案:errno^sys_errlist

知识点解析:暂无解析

11、所有流(stream)文件调用最终都是通过______完成I/O操作的.

标准答案:系统调用

知识点解析:暂无解析

12、无名管道只能在的进程之间传递数据。

标准答案:同一个进程族

知识点解析:暂无解析

13、exl3比exl2文件系统主要增加了功能。

标准答案:日志

知识点解析:暂无解析

三、操作系统•简答题(本题共5题,每题,0分,共5

分。)

14、磁盘存储空间管理有哪几种方法和各有什么特点?UNIX系统采用的是何种方

式?

标准答案:磁盘存储空间管理普遍使用的有4种技术:位表、空闲表、空闲分区链

和索引。(1)位表(位示图)。这种方法是每一个二进制位对应一个磁盘块。如二进

制位值为0表示一个空闲块,位值为1表示该块已被使用。而由所有盘块所对应的

位构成一个集合,即位表。位表所具有的优点是查找一个或一组连续的空闲块比较

方便。其他方面的优点是位表已是尽可能地小,因此可以全部放入主存中。(2)空

闲表。属于连续分配方式,它与内存管理中的可变分区分配方式相似。(3)空闲分

区链。将所有空闲盘区链接成一条空闲链。根据构成链的基本元素不同,可分为空

闲盘块链和空闲盘区链。空闲分区可以用指针链接在一起,还需要一个空闲分区的

长度信息。这种方法的空间代价是微不足道的,因为不需要磁盘分配表,仅仅需要

指向链首的指针和第一个分区的长度。如果每次分配一个磁盘块,只要简单地选择

链首的空闲块,并调整首指针和长度值。如果分配采用可变长度分区,可使用首次

适应算法:每次从一分区中读出头部,以测定在链中一个空闲分区的大小。同样,

在分配后要调整分区的韦针和长度。(4)索引。索引方法将空闲存储区表当做文件

一样处理,像文件空间分配那样分配索引表。为了提高效率,索引表本身应当分配

连续的空间。(5)成组链接法。结合索引和空闲链表法而形成。每一二个链表节点含

有一组指向空闲盘块的指针,组间采用链接的方法构成空闲链接表,UNIX系统采

用的是成组链接法,是结合索引法和链接法而组成的,每个索引占一个盘块,各个

索引盘块之间采用链接法。

知识点解析:暂无解析

15、从缓冲机构、执行效率和运行的状态的角度简述UNIX系统流文件的读写和系

统调用的文件读写之间的区别与关系。

标准答案:标准1/0库主要通过用户念空间的自动缓冲机构向程序员提供效率

高、功能强和可移植的文件访问或字符串处理功能,在用户态空间的缓冲区满了或

空了时,通过系统调用自动刷新或填充缓冲区。系统调用的文件读写是通过核心

态的缓冲控制块和缓冲区进行。循环执行读写系统调用时,如每次向文件读写较

少字节,需要很多次系统调用,花费很多从用户态转换到核心态和从核心态转回到

用户态的开销,而通过标准I/O库循环执行读写操作时,需要的是很多次函数调

用。在实际系统中,一次函数调用所费的时间比甩户态与核心态之间的切换所费的

时间少得多,故当不是以整块的方法输入或输出数据时,使用流文件操作比使用系

统调用效率高很多。如每次读写整块文件数据时,循环执行读系统调用与循环执

行标I/O比较起来,两者的系统调用次数是一样的,使用标准I/O库还多了一

次函数调用,故略多耗时些。两种读写方法实际进行的物理读写盘的次数是一样

的。文件的系统调用运行在核心态,文件的标准I/O库运行在用户态。

知识点解析:暂无解析

16、在UNIX中,为什么要将文件的控制信息从目录中分离出来而单独构成一个I

节点?

标2答案:与进程控制块类似,每一个文件也应当有一组控制信息,这一组信息可

存放在目录项中,其中应当包括文件名、文件主、文件大小、访问权限、存取时间

以及文件的数据存放在哪些磁盘块中等信息cUNIX为了实施文件的共享和提高目

录的检索速度,只将文件名从文件控制块信息中抽出来,其余所有的控制信息构成

了文件的索引节点(indexnode),简称I节点。为了哽于管理,所有的I节点是集中

存放在磁盘上的I节点区,故乂称为磁盘I节点。在UNIX同一个文件系统中,同

一层次或不同层次的目录项可指向同一个文件的I节点,这就是目录结构的勾连,

不同用户可以在不同的位置上用不同的文件名访问同一个文件。这为文件的异名共

享提供了方便,这也是UNIX为什么要将文件的目录项与I节点分开存储和管理的

主要原因之一。

知识点解析:暂无解析

17、内存空间管理和外存空间管理的目标有何异同?

标准答案:内存管理和外存管理均追求存储空间利用率的提高,都具有存储空间的

分配与回收、地址映射♦、共享与保护等功能。但二者的目的和任务不同,管理的存

储介质不同,因而技术侧重点也有所不同。内存管理着眼于为多道程序的运行提

供良好的环境,以进程作为分配对象,并要求能从逻辑上扩充内存;而外存管理则

着眼于为每个文件分配必要的外存空间,并能有助于提高文件系统的工作速度特别

是文件的访问速度。

知识点解析:暂无解析

18、pipe文件与一般的数据文件有什么异同?

标准答案:管道文件分为无名管道和有名管道,它们分别用pipe和mknod系统调

用创建。管道是在管道设备的文件系统中建立起来的,管道设备文件系统由系统管

理员在系统安排时指定。在创建好管道以后,进程就可以使用与普通文件一样的

读和写的系统调用,向管道的写端fd[l]送入数据,写入的数据可以从管道的读端

忖⑼顺序读出。数据的写入和读出以先进先出的方式进行,并由系统自动地处理两

个进程间的调度、同步和数据缓冲。管道文件逻辑上构成一个线性空间,系统将

管道文件的存储块组织成尾部和头部“黏合”在一起的循环队列的存储区,并设置循

环移动的读(出队)、写(进队)两个指针,并在读写管道中的数据时由系统自动修改

读写指针的值。有名管道和无名管道的读、写、关闭调用与普通文件一样,但在

关闭了一个有名管道后,它所使用的磁盘空间全部释放,这点与普通文件不一样,

但有名管道本身并没有消失,也即它所占的目录项和磁盘I节点还存在。无名管道

不需要删除命令,进程运行结束,系统自动消除无名管道;而要删除一个有名管

道,可使用与删除一个文件相同的调用。

知火点解析:暂无解析

四、操作系统•综合题(本题共2题,每题L0分,共2

分。)

19^分别使用文件的系统调用read(fd,buf,nbytes)、write(fd,buf,nbytes)和文件

的库函数fread(buf,size,nilems,fp)、fwrite(buf,size,nitems,fp),编写一个文

件的复制程序(文件大小>1MB)。当上述函数中nbytes、size和nitems都取值为1

时(即一次读写一个字节),比较这两种程序的执行效率。当nbytes取4096字节,

size取1字节,且niterns取4096时(即一次读写4096字节),再次比较这两种程序

的执行效率。(可使用time命令)

标准答案:循环执行系统调用write(fd,buf,1),每次调用向文件输出一个字节,

但由于块设备读写是通过系统缓冲区进行的,故4096次写调用才需要一次实际的

设备I/O操作,但需要4096次从用户态转换到核心态和核心态转回用户态的开

销。循环执行系统调用fwrite(buf,1,1,fp)时,每次操作向用户态空间的流文件

缓冲区写入一个字节,4096次写操作填满该缓冲区后才发出一次write系统调用,

转换到核心态,并进行一次实际的设备I/O操作。因此两种方法花费设备I/O

的时间是一样的,主要差别是流文件操作用4096次用户态函数的调用和返回的开

销代替了直接使用系统调用时4096次用户态与核心态之间的切换。在实际系统

中,一次函数调用所费的时间比用户态与核心态之间的切换所费的时间少得多,故

当不是以整块的方法输入或输出数据时,使用流文件操作比使用系统调用效率高很

多。在程序清单17-1中,用例程gettimeofday()(该例程返回两个值:秒数tv_sec

和微秒数tv_uBec)获得程序的开始计时时间和结束计时时间(精度为微秒),并计算

程序段运行时所花的时间(单位为毫秒),被测试的输入文件大于4MB。测试结果说

明,每次对文件输入/输出一个字节,使用流文件要比直接使用系统调用快得多,

而每次对文件输入/输出4096字节,使用流文件与使用系统调用时间差不多,使

用系统调用还快了一点点。程序清单17-1.file_op.c#include<sys/stat.h>

#include<sys/fcntl.h>#include<stdiO.h>#include<time.h>#define

BUB_40964096#defineBUB_11main(intargc,char*argv[11){intfdl,fd2;intn;

charbufl[BUB_l],buf2[BUB_4096],buf3[BUB_l],buf4[BUB_40964];struct

timcValstart,end;/*测试系统调用read、write*/gcttimcofday(&start,

NULL);fdl=open(argV|l],O_RDONLY);fd2=open(argV|2],O_WRONLY|O

CREAA.0644);while((n=read(fdl,bufl,BUB_l))>0)write(fd2,buf1,n);

gcttimcofday(&end,NULL);printf("Oncbyteeventimes:%5.3f\n",end.tv

Sec*1000-start.tvsec*1000+end.tvuSec/l(X)0-Starl.tvusee/10(X));n=0;

gettimeofday(&start,NULL);while((n=read(fdl,buf2,BUB_4096))>0)

writc(fd2,buf2,n);gcttimcofday(&cnd,NULL);printf("4096byteevery

times:%5.3f\n",end.tvSec*1000-start.tvSec*l000+end.tvusee/1000-

Start.tvusee/1000);/*测试流文件调用fread、fwrite*/BILE*fpl,*fp2;

fpl=fopcn(argv[l],"rb");fp2=fopcn(argv[3],"wb");gcttimcofday(&start,

NULL);while((n=fread(buf3,BUB_1,1,fpl))>0)fwrite(buf3,BUB_I,1,

fp2);gettimeofday(&end,NULL);printf("Onebyteeverytimes:%5.3f\n",

end.tvsec*1000-Start.tvSee*1000+cnd.tvuScc/1000-Start.tvuscc/1000);

gettimeofday(&start,NULL);while((n=fread(buf4,BUB4096,4096,fpl))>0)

fwrite(buf4,BUB4096,4096,fp2);fclose(fpl);fclose(fp2);

gcttimcofday(&cnd,NULL);printf("4096byteeverytimes:%5.3f\n",end.tv

sec*1000-start.tvsec*1000+end.tvusee/1000-Start.tvusee/1000);)□

知识点解析:暂无解析

20、编一个UNIX平台上的C程序。父进程首先创建一个无名管道,设置信号处

理方式为收到信号SIGUSRI后执行信号处理程序proc,然后在创建了子进程后,

显示子进程的标识数,从键盘读入一行Shell命令串,写入无名管道,并向子进程

发送信号SIGUSR1,关闭管道后,终止运行。子进程收到传来的软中断信号后在

信号处理程序proc中从管道文件中读入一个Shell命令串,利用例行库中的程序执

行,执行该命令串。

标准答案:在程序清单17-4中,父进程首先创建一个无名管道,设置信号处理方

式为收到信号SIGUSR1后执行信号处理程序proc,然后创建子进程后,将键盘读

入的Shell命令串,写入无名管道,并向子进程发送信号SIGUSR1。子进程收到传

来的软中断信号后在信号处理程序proc中从管道文件中读入一个Shell命令串,利

用例行库中的程序执行,执行该命令串。程序清单17-4:pipe,c#include<

stdio.h>#include<stdlib.h>#includeVSignal.h>#include<string.h>int

chan|2];main(){intpid;charcmd|256|;voidproc();externintchan|2|;

pipe(chan);/*创建一个无名管道*/signal(SIGUSRI,proc);/*设置信号史理

方式*/Pid=fork();if(pid){printfC'Child^PID=%d\n",pid);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论