[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc

上传人:rimleave225 文档编号:912817 上传时间:2019-02-28 格式:DOC 页数:13 大小:44KB
下载 相关 举报
[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc_第1页
第1页 / 共13页
[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc_第2页
第2页 / 共13页
[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc_第3页
第3页 / 共13页
[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc_第4页
第4页 / 共13页
[自考类试卷]全国自考操作系统(文件系统)模拟试卷1及答案与解析.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、全国自考操作系统(文件系统)模拟试卷 1 及答案与解析一、单项选择题1 操作系统对数据进行管理的部分叫做_。(A)数据库系统(B)文件系统(C)数据存储系统(D)信息管理系统2 文件索引结构的特点是_。(A)打开文件以后,要占用较多的额外内存空间(B)适合于记录式文件,不适合于无结构的流式文件(C)文件索引表占的空间比索引顺序文件和散列文件表大(D)局部修改时,插入、删除一个文件块比链接结构文件和散列文件费时3 以下_是关于 UNIX 流文件的函数。(A)rewind(B) system(C) sscanf(D)fstat4 UNIX 操作系统在接到用户关于文件的_操作命令后,就要在文件系统中

2、寻找空目录项。(A)creat(B) open(C) write(D)close5 UNIX 打开文件机构中的进程打开文件表是进程扩充控制块 user 结构中的_。(A)u_odir(B) u_ofile(C) u_dirp(D)u_pof6 在 UNIX 系统中,有名管道的创建操作是_ 。(A)creat(B) pipe(C) mknod(D)CreateNamePipe二、填空题7 只有文件的_或_才能用 close 系统调用关闭文件。8 按对文件的存取方法分,常用的文件存取方法有两种:_存取和_存取。9 _是文件存在的标志,它记录了系统管理文件所需要的全部信息。10 在 UNIX 系统中

3、,当系统调用出错时返回-1,这时全局变量_值为相应的出错代码,出错代码的消息数组是_。11 所有流(stream) 文件调用最终都是通过_完成 IO 操作的。12 无名管道只能在_的进程之间传递数据。13 ext3 比 ext2 文件系统主要增加了_功能。三、简答题14 磁盘存储空间管理有哪几种方法和各有什么特点?UNIX 系统采用的是何种方式?15 从缓冲机构、执行效率和运行的状态的角度简述 UNIX 系统流文件的读写和系统调用的文件读写之间的区别与关系。16 在 UNIX 中,为什么要将文件的控制信息从目录中分离出来而单独构成一个 I节点?17 内存空间管理和外存空间管理的目标有何异同?1

4、8 pipe 文件与一般的数据文件有什么异同?四、综合题19 分别使用文件的系统调用 read(fd,buf ,nbytes) 、write(fd ,buf,nbytes) 和文件的库函数 fread(buf,size,nitems,fp)、fwrite(buf,size,nitems,fp),编写一个文件的复制程序(文件大小1MB)。当上述函数中 nbytes、size 和 nitems 都取值为 1时(即一次读写一个字节) ,比较这两种程序的执行效率。当 nbytes 取 4096 字节,size 取 1 字节,且 niterns 取 4096 时(即一次读写 4096 字节),再次比较这

5、两种程序的执行效率。(可使用 time 命令)20 编一个 UNIX 平台上的 C 程序。父进程首先创建一个无名管道,设置信号处理方式为收到信号 SIGUSRl 后执行信号处理程序 proc,然后在创建了子进程后,显示子进程的标识数,从键盘读入一行 Shell 命令串,写入无名管道,并向子进程发送信号 SIGUSR1,关闭管道后,终止运行。子进程收到传来的软中断信号后在信号处理程序 proc 中从管道文件中读入一个 Shell 命令串,利用例行库中的程序执行,执行该命令串。五、判断题21 文件的盘文件映照表采用链接结构。( )(A)正确(B)错误22 在 UNIX 系统中,sprintf 是有

6、关文件的标准输入输出函数。( )(A)正确(B)错误23 创建文件的操作没有流(stream)文件和普通文件的区别。( )(A)正确(B)错误24 打开文件结构能支持将进程映像从盘交换区装入内存。( )(A)正确(B)错误全国自考操作系统(文件系统)模拟试卷 1 答案与解析一、单项选择题1 【正确答案】 B【知识模块】 文件系统2 【正确答案】 D【知识模块】 文件系统3 【正确答案】 A【试题解析】 system 提供了在一个程序中执行另一个独立程序的例行程序库函数,不是有关流文件的库函数;fstat 是系统调用;sscanf 是存储区中的格式转化函数,与文件无关。【知识模块】 文件系统4

7、【正确答案】 A【知识模块】 文件系统5 【正确答案】 B【知识模块】 文件系统6 【正确答案】 C【试题解析】 pipe 是创建无名管道的操作,CreateNamePipe 是 Windows 系统的创建有名管道的操作。【知识模块】 文件系统二、填空题7 【正确答案】 创建者、打开者。【试题解析】 在用程序创建文件时,系统以写方式打开文件,并返回打开文件描述字,故创建者就可以关闭该文件。但对于以命令方式创建的文件或其他用户打开的文件,文件的创建者也不能用 close 系统调用关闭该文件,因为创建者无法获得打开文件 file 结构的指针。【知识模块】 文件系统8 【正确答案】 顺序、随机【知识

8、模块】 文件系统9 【正确答案】 文件控制块【知识模块】 文件系统10 【正确答案】 errno、sys_errlist【知识模块】 文件系统11 【正确答案】 系统调用【知识模块】 文件系统12 【正确答案】 同一个进程族【知识模块】 文件系统13 【正确答案】 日志【知识模块】 文件系统三、简答题14 【正确答案】 磁盘存储空间管理普遍使用的有 4 种技术:位表、空闲表、空闲分区链和索引。(1)位表(位示图)。这种方法是每一个二进制位对应一个磁盘块。如二进制位值为 0表示一个空闲块,位值为 1 表示该块已被使用。而由所有盘块所对应的位构成一个集合,即位表。位表所具有的优点是查找一个或一组连

9、续的空闲块比较方便。其他方面的优点是位表已是尽可能地小,因此可以全部放入主存中。(2)空闲表。属于连续分配方式,它与内存管理中的可变分区分配方式相似。(3)空闲分区链。将所有空闲盘区链接成一条空闲链。根据构成链的基本元素不同,可分为空闲盘块链和空闲盘区链。空闲分区可以用指针链接在一起,还需要一个空闲分区的长度信息。这种方法的空间代价是微不足道的,因为不需要磁盘分配表,仅仅需要指向链首的指针和第一个分区的长度。如果每次分配一个磁盘块,只要简单地选择链首的空闲块,并调整首指针和长度值。如果分配采用可变长度分区,可使用首次适应算法:每次从一分区中读出头部,以测定在链中一个空闲分区的大小。同样,在分配

10、后要调整分区的指针和长度。(4)索引。索引方法将空闲存储区表当做文件一样处理,像文件空间分配那样分配索引表。为了提高效率,索引表本身应当分配连续的空间。(5)成组链接法。结合索引和空闲链表法而形成。每_二个链表节点含有一组指向空闲盘块的指针,组间采用链接的方法构成空闲链接表,UNIX 系统采用的是成组链接法,是结合索引法和链接法而组成的,每个索引占一个盘块,各个索引盘块之间采用链接法。【知识模块】 文件系统15 【正确答案】 标准 IO 库主要通过用户态空间的自动缓冲机构向程序员提供效率高、功能强和可移植的文件访问或字符串处理功能,在用户态空间的缓冲区满了或空了时,通过系统调用自动刷新或填充缓

11、冲区。系统调用的文件读写是通过核心态的缓冲控制块和缓冲区进行。循环执行读写系统调用时,如每次向文件读写较少字节,需要很多次系统调用,花费很多从用户态转换到核心态和从核心态转回到用户态的开销,而通过标准 IO库循环执行读写操作时,需要的是很多次函数调用。在实际系统中,一次函数调用所费的时间比甩户态与核心态之间的切换所费的时间少得多,故当不是以整块的方法输入或输出数据时,使用流文件操作比使用系统调用效率高很多。如每次读写整块文件数据时,循环执行读系统调用与循环执行标 IO 比较起来,两者的系统调用次数是一样的,使用标准 IO 库还多了一次函数调用,故略多耗时些。两种读写方法实际进行的物理读写盘的次

12、数是一样的。文件的系统调用运行在核心态,文件的标准 IO 库运行在用户态。【知识模块】 文件系统16 【正确答案】 与进程控制块类似,每一个文件也应当有一组控制信息,这一组信息可存放在目录项中,其中应当包括文件名、文件主、文件大小、访问权限、存取时间以及文件的数据存放在哪些磁盘块中等信息。UNIX 为了实施文件的共享和提高目录的检索速度,只将文件名从文件控制块信息中抽出来,其余所有的控制信息构成了文件的索引节点(index node),简称 I 节点。为了便于管理,所有的 I 节点是集中存放在磁盘上的 I 节点区,故又称为磁盘 I 节点。在 UNIX 同一个文件系统中,同一层次或不同层次的目录

13、项可指向同一个文件的 I节点,这就是目录结构的勾连,不同用户可以在不同的位置上用不同的文件名访问同一个文件。这为文件的异名共享提供了方便,这也是 UNIX 为什么要将文件的目录项与 I 节点分开存储和管理的主要原因之一。【知识模块】 文件系统17 【正确答案】 内存管理和外存管理均追求存储空间利用率的提高,都具有存储空间的分配与回收、地址映射、共享与保护等功能。但二者的目的和任务不同,管理的存储介质不同,因而技术侧重点也有所不同。内存管理着眼于为多道程序的运行提供良好的环境,以进程作为分配对象,并要求能从逻辑上扩充内存;而外存管理则着眼于为每个文件分配必要的外存空间,并能有助于提高文件系统的工

14、作速度特别是文件的访问速度。【知识模块】 文件系统18 【正确答案】 管道文件分为无名管道和有名管道,它们分别用 pipe 和 mknod系统调用创建。管道是在管道设备的文件系统中建立起来的,管道设备文件系统由系统管理员在系统安排时指定。在创建好管道以后,进程就可以使用与普通文件一样的读和写的系统调用,向管道的写端 fd1送入数据,写入的数据可以从管道的读端 fd0顺序读出。数据的写入和读出以先进先出的方式进行,并由系统自动地处理两个进程间的调度、同步和数据缓冲。管道文件逻辑上构成一个线性空间,系统将管道文件的存储块组织成尾部和头部“黏合”在一起的循环队列的存储区,并设置循环移动的读(出队)、

15、写(进队) 两个指针,并在读写管道中的数据时由系统自动修改读写指针的值。有名管道和无名管道的读、写、关闭调用与普通文件一样,但在关闭了一个有名管道后,它所使用的磁盘空间全部释放,这点与普通文件不一样,但有名管道本身并没有消失,也即它所占的目录项和磁盘 I 节点还存在。无名管道不需要删除命令,进程运行结束,系统自动消除无名管道;而要删除一个有名管道,可使用与删除一个文件相同的调用。【知识模块】 文件系统四、综合题19 【正确答案】 循环执行系统调用 write(fd,buf ,1),每次调用向文件输出一个字节,但由于块设备读写是通过系统缓冲区进行的,故 4096 次写调用才需要一次实际的设备 I

16、O 操作,但需要 4096 次从用户态转换到核心态和核心态转回用户态的开销。循环执行系统调用 fwrite(buf,1,1,fp) 时,每次操作向用户态空间的流文件缓冲区写入一个字节,4096 次写操作填满该缓冲区后才发出一次 write 系统调用,转换到核心态,并进行一次实际的设备 IO 操作。因此两种方法花费设备 IO 的时间是一样的,主要差别是流文件操作用 4096 次用户态函数的调用和返回的开销代替了直接使用系统调用时 4096 次用户态与核心态之间的切换。在实际系统中,一次函数调用所费的时间比用户态与核心态之间的切换所费的时间少得多,故当不是以整块的方法输入或输出数据时,使用流文件操

17、作比使用系统调用效率高很多。在程序清单 17-1 中,用例程 gettimeofday()(该例程返回两个值:秒数 tv_sec 和微秒数 tv_uBec)获得程序的开始计时时间和结束计时时间(精度为微秒),并计算程序段运行时所花的时间(单位为毫秒),被测试的输入文件大于 4MB。测试结果说明,每次对文件输入输出一个字节,使用流文件要比直接使用系统调用快得多,而每次对文件输入输出 4096 字节,使用流文件与使用系统调用时间差不多,使用系统调用还快了一点点。程序清单 17-1file_op c#includesysstat h#includesysfcntlh#includestdi0h#in

18、cludetime h#define BUB_4096 4096#define BUB_11main(int argc,char*argv1)int fd1,fd2 ;int n;char buf1BUB_1,buf2BUB_4096,buf3BUB_1,buf4BUB_40964 ;struct timeVal start,end;*测试系统调用 read、write*gettimeofday(start ,NULL);fd1=open(argV1,O_RDONLY) ;fd2=open(argV2,O_WRONLY|O CREAA0644);while(n=read(fd1,buf1,BU

19、B_1)0)write(fd2,buf1,n);gettimeofday(end ,NULL);printf(“One byte every times:53fn“,endtv Sec*1000-starttv sec*1000+endtv uSec1000-Starttv usec1000);n=0;gettimeofday(start ,NULL);while(n=read(fd1,buf2,BUB_4096)0)write(fd2,buf2,n);gettimeofday(&end,NULL);printf(“4096 byte every times:53fn“ ,endtv Sec*

20、1000-starttv Sec*1000+endtv usec1000-Starttv usec1000);*测试流文件调用 fread、fwrite*BILE*fp1,*fp2;fp1=fopen(argv1,“rb“) ;fp2=fopen(argv3,“wb“) ;gettimeofday(start ,NULL);while(n=fread(buf3,BUB_1,1,fp1) 0)fwrite(buf3, BUB_1,1,fp2);gettimeofday(end ,NULL);printf(“One byte every times:53fn“,endtv sec*1000-Sta

21、rttv Sec*1000+endtv uSec1000-Starttv usec 1000);gettimeofday(start ,NULL);while(n=fread(buf4,BUB 4096,4096,fp1) 0)fwrite(buf4, BUB4096,4096,fp2);fclose(fp1);fclose(fp2);gettimeofday(&end,NULL);printf(“4096 byte every times:53fn“ ,endtv sec*1000-start tv sec*1000+endtv usec 1000-Starttv usec1000);。【知

22、识模块】 文件系统20 【正确答案】 在程序清单 17-4 中,父进程首先创建一个无名管道,设置信号处理方式为收到信号 SIGUSR1 后执行信号处理程序 proc,然后创建子进程后,将键盘读入的 Shell 命令串,写入无名管道,并向子进程发送信号 SIGUSR1。子进程收到传来的软中断信号后在信号处理程序 proc 中从管道文件中读入一个 Shell 命令串,利用例行库中的程序执行,执行该命令串。程序清单 17-4:pipe c#includestdioh#includestdlib h#includeSignalh#includestringhint chan2;main()int pi

23、d;char cmd256;void proc();extern int chan2;pipe(chan); *创建一个无名管道*signal(SIGUSRI,proc); *设置信号处理方式*Pid=fork();if(pid)printf(“Childs PID=d n“,pid);printf(“Input cmd:“);gets(cmd);write(chan1,cmd,strlen(cmd)+1) ; *写管道* kill(pid,SIGUSRl) ; * 发信号*close(chan1);exit(0);elsesleep(10);exit(0);void proc()extern

24、 int chan2;char buf256,read(chan0,buf,sizeof(buf);system(buf); *执行命令串 *。【知识模块】 文件系统五、判断题21 【正确答案】 A【知识模块】 文件系统22 【正确答案】 B【试题解析】 sprintf(buf,format,arg1,arg2,argn)函数中各个参数的值不是向终端或文件输出,而是将各个参数的值存入缓冲区 buf 中。格式说明串format 则规定了数据传送时的格式变换。所以 sprintf 和 sscanf 函数不是有关文件的标准 IO 库函数。【知识模块】 文件系统23 【正确答案】 A【试题解析】 创建文件可用系统调用 creat,或通过命令行或图形界面创建,但最终还是要使用系统调用 creat 创建。只有对一个文件打开和读写等时才有针对流文件的操作,故在对流文件进行打开之前,要用系统调用 creat 或其他间接的方法创建文件。【知识模块】 文件系统24 【正确答案】 B【试题解析】 盘交换区是内存的逻辑扩充,不是以普通文件的形式组织和存放在文件系统中。【知识模块】 文件系统

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试资料 > 大学考试

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1