1一.单项选择题(本题30分,每小题1.5分)在每小题列出的四个选项中只有一个是符合题目要求的,错选或未选均无分。1.下面哪个Linux命令可以一次显示一页内容______A.pauseB.catC.moreD.grep2.怎样更改一个文件的权限设置______A.attribB.chmodC.changeD.file3.如何从当前系统中卸载一个已装载的文件系统______A.umountB.dismountC.mount–uD.从/etc/fstab中删除这个文件系统项4.在大多数Linux发行版本中,图形方式的运行级定义为______A.1B.2C.3D.55.用命令ls-al显示出文件ff的描述如下所示,由此可知文件所有者所在组的权限是______-rwxrw-r--1rootroot599Cec1017:12ffA.rwxB.rw-C.r--D.无法获知6.内核不包括的子系统是_______A.进程管理系统B.内存管理系统C.I/O管理系统D.硬件管理系统7.下面哪一个是Linux缺省状态下使用的文件系统类型A.Ext2B.NFSC.MsdosD.Vfat8.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在______目录中A./devB./etcC./binD./lib9.关闭linux系统可使用命令______A.Ctrl+Alt+DelB.Ctrl+ALTC.shutdown-hnowD.reboot10.用命令ls-al显示出文件ff的描述如下所示,由此可知文件ff的类型为_____-rwxr-xr1rootroot599Cec1017:12ffA.普通文件B.硬链接C.目录D.符号链接11.删除文件命令为_____。A.mkdirB.rmdirC.mvD.rm12.改变文件所有者的命令为______。AchmodB.touchC.chownD.cat13.在下列命令中,不能显示文本文件内容的命令是______。2A.moreB.lessC.tailD.join14.查看系统当前进程信息的命令是______A.psB.dfC.manD.ls15.进程有三种基本状态,分别是_______。A.准备态、执行态和退出态B精确态、模糊态和随机态C.运行态、就绪态和等待态D手工态、自动态和自由态16.从后台启动进程,应在命令的结尾加上符号_____。A.&B.@C.#D.$17.一个进程调用fork系统调用后,会有什么结果?A.生成一个进程,从main()处开始执行。B.生成一个线程,从main()开始执行。C.生成一个进程,从fork之后开始执行。D.生成一个线程,从fork之后开始执行。18.一个文件名字为rr.Z,可以用来解压缩的命令是_____。A.tarB.gzipC.compressD.uncompress19.文件权限读、写、执行的三种标志符号依次是_____。A.rwxB.xrwC.rdxD.srw20.UNIX操作系统属于()类操作系统A.单用户单任务B.单用户多任务C.多处理机D.多用户多任务二、填空题(本题15分,每空1分)21.在Linux系统中,以__文件_______方式访问设备。22.编写的Shell程序运行前必须赋予该脚本文件__执行______权限。23.唯一标识每一个用户的是__用户名_____和__UID_____。24.在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是__/etc______。25.在Linux系统中,用来存放用户信息的文件是__/etc/passwd______。26.结束进程的命令是_kill______。27.将前一个命令的标准输出作为后一个命令的标准输入,称之为_管道______。28.管道通信包括_有名管道______和__无名管道_____两种。29.信号量主要是用来解决不同进程间的__同步互斥_____问题。30.进程接收到信号后可以忽略信号,但是__SIGKILL_____和__SIGSTOP_____这两个信号不能被忽略。31.安装Linux系统对硬盘分区时,必须有两种分区类型:__/_____和__swap_____。三、简答题(本题30分,每小题6分)332.什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?33.Linux的进程间通信机制有哪些?请分别简要说明。#无名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。#有名管道(namedpipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。#信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。#消息队列(messagequeue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。#信号量(sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。#共享存储器(sharedmemory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。#套接字(socket):套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。34.什么是动态优先级多级反馈循环进程调度算法?结合其计算公式简要说明其主要思想。35.简要说明里linux环境下编译、运行C程序的基本工具和过程。工具:gcc、make如果程序很小(源文件很少),可以直接用gcc编译如果程序较大(源文件比较多),则要先编写程序的Makefile文件,然后用make编译36.简要说明面向连接和无连接两种网间进程通信方式的主要区别。面向连接的协议,在正式收发数据前,双方必须建立可靠的连接。连接的建立要经过三次“握手”才能建立起来,一旦连接建立起来,通信就比较稳定。面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。四、编程与应用题(本题25分)37.阅读下面shell程序,请写出执行结果。(6分)echo-ePleaseenterthescore:whilereadSCOREdocase$SCOREin4?|[1-5]?)echoFailed!echoPleaseenterthenextscore:;;6?)echoPassed!echoPleaseenterthenextscore:;;7?)echoMedium!echoPleaseenterthenextscore:;;8?)echoGood!echoPleaseenterthenextscore:;;9?|100)echoGreat!echoPleaseenterthenextscore:;;*)exit;;esacdone其中输入的数据为62Passed!Pleaseenterthenextscore80Good!5Failed!100038.用Shell编程,判断一个文件是不是字符设备文件,如果是将其拷贝到/dev目录下,否则提示“Thisfileisnotexit”的信息。(6分)#!/bin/bashfilename=testif[-c$filename]thencp$filename/develseechoThisfileisnotexitfi39.编写一段C语言程序使其完成:父进程创建两个子进程,父子进程都在屏幕上显示自己的进程ID号。要求先显示子进程的ID号,后显示父进程的ID号。(6分)#includesys/type.h#includesys/wait.h#includeunistd.h#includestdio.h#includestdlib.hintmain(){5pid_tpid1,pid2;pid1=fork();if(pid1==0){printf(子进程1:%d\n,getpid());exit(0);}else{wait(NULL);pid2=fork();if(pid2==0){printf(子进程2:%d\n,getpid());exit(0);}else{wait(NULL);printf(父进程:%d\n,getpid());}}return0;}40.编写利用IPC实现进程通信的C程序。该程序主要模拟根据帐号查询余额的过程。包括三方面1):请求进程从标准输入读入帐号,并将该帐号通过消息队列发送给服务进程;2)服务进程接收该帐号后,按照请求的先后顺序在标准输入上输入该帐户的姓名和余额,并将结果返回给请求进程;3)请求进程接收返回的信息,并将结果输出在标准输出上。服务进程先于请求进程启动,请求进程启动时要携带请求编号,可同时启动多个请求进程。(7分)/*请求方程序msgreq.c*/#includesys/types.h#includesys/ipc.h#includesys/msg.h#includestdio.hstaticstructmsgbuf{longmtype;charmtext[256];}sndbuf,rcvbuf,*msgp;externinterrno;intmain(intargc,char**argv){intrtrn,msqid;charname[10];doublebalance;if(argc!=2){fprintf(stderr,msgreq[01-99]\n);exit(-1);}if((msqid=msgget(0x888,IPC_CREAT|0660))==-1){fprintf(stderr,msgget888failed!\n);exit(-1);6}msgp=&sndbuf;sprintf(sndbuf.mtext,%2.2s,argv[1]);printf(输入4位帐号:);scanf(%s,&sndbuf.mtext[2]);sndbuf.mtext[6]=0;msgp-mtype=666;rtrn=msgsnd(msqid,msgp,strlen(sndbuf.mtext),0);if(rtrn==-1){perror(msgsnd);exit(-1);}msgp=&rcvbuf;fprintf(stderr,等待后台数据处理进程的回答....);rtrn=msgrcv(msqid,msgp,100,atoi(argv[1]),0);if(rtrn==-1){perror(msgrcv);exit(-1);}sscanf(rcvbuf.mtext,%[^|]|%lf,name,&balance);printf(\n姓名=%s\n,name);printf(余额=%lf\n,balance);}/*服务方程序msgcenter.c*/staticstructmsgbuf1{longmtype;charmtext[100];}sndbuf,rcvbuf,*msgp;externinterrno;intmain(){intrtrn,msgqid;charstrbuf[100];if((msqid=msgget(0x888,IPC_CREAT|0600))==-1){fprintf(stderr,msgget888failed!\n);exit(-1);}while(1){msgp=&rcvbuf;fprintf(stderr,等待前台进程的请求....);rtrn=msgrcv(msqid,msgp,100,666,MSG_NOERROR);if(rtrn==-1){perro