《2022年期末试卷A含答案版 .pdf》由会员分享,可在线阅读,更多相关《2022年期末试卷A含答案版 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 页 共 5 页湖北科技学院计算机学院2014年秋 2012 级 物联网工程(本科)专业LINUX 高级编程期末考查试卷(闭卷、100 分钟)一、单选题(每小题 2 分,共 60 分)1.关于 Linux 内核版本的说法,以下错误的是(C)。A表示为主版本号.次版本号.修正号 B1.2.3表示稳定的发行版 C 1.3.3表示稳定的发行版 D2.2.5表示对内核2.2 的第 5 次修正2.下列不是可执行程序运行时内存结构的是(D )。A.代码区 B.数据区 C.栈堆区D.变量区3.下列有关fork()函数返回值说法错误的是(D)。A.正常情况下,fork调用一次,会返回两次。B.返回值等于
2、0 表示在子进程返回。C.返回值大于0 表示在父进程中返回。D.大于 0的返回值为父进程PID 号。4.进程调用wait将被阻塞,直到(D )。A.用户按任意键B.收到时钟信号 C.子进程被创建D.子进程结束5.下列关于网络编程的叙述中,错误的是(C )。A.一个完整的网络程序应该包含两个独立的程序,它们分别运行在客户端和服务器端。B.相同条件下UDP发送数据的速度要比TCP快。C.当使用 UDP编程时,若函数sendto()成功返回,表示系统发出的数据被通讯的对方准确接收到了。D.端口号是16bit的地址码,端口号和IP 地址构成一个插口(socket)。6.删除命名管道的系统调用是(A )
3、。A.unlink B.close C.fcolse D.dup2 7.当打开 vi 编辑器编辑文件时,vi 处于(A)模式。A.命令模式 B.编辑模式C.实模式D.虚模式8.为了将当前目录下的归档文件myftp.tgz解压缩,可以使用(A )命令。A.tar xvzf myftp.tgzB.tar xvf myftp.tgz C.tar vzf myftp.tgz D.tar jvzf myftp.tgz 9.cat命令可(C )。A.设置捕鼠器B.查看子目录内容 C.查看文本文件内容D.查看二进制文件10.man 命令可(D )。A.查看编译信息B.编译源程序C.查看用户信息D.查看帮助信
4、息11.在 Shell中 Ctrl+D用于(A )。A.输入文件结束符B.撤销最近做的操作C.输出文件结束符D.输出文件名12.pwd 命令可(B )。A.查看密码B.查看当前目录C.查看在线用户D.查看终端13.kill命令的功能是(C )。A.停止进程B.执行异步IO C.向进程发送信号D.查看帮助信息14.某 shell程序运行时需向脚本传递参数,为得到参数的个数,可以使用(B)。A.$B.$#C.$0 D.$!15.在 Linux 中执行命令时,重定向IO 的是(D )。A.命令B.参数 C.标准输入D.Shell 16.cp命令用于(A )。A.拷贝文件B.查询数据库 C.网络连接D
5、.执行命令17.默认情况下管理员创建了一个用户,就会在(B)目录下创建一个用户主目录。A./usr B./homeC./root D./etc 18.在 vi 编辑器里,命令dd 用来删除当前的(A )。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -第 2 页 共 5 页A.行B.变量C.字D.字符19.vi中哪条命令是不保存强制退出(C)。A.:wq B.:wq!C.:q!D.:quit 20.Shell脚本中的注释用(C )标记。A./B./*,*/C.#D.*21.用 vi 编辑并保存文件后,要退出vi 编辑器时,可按Esc 键切换到命令模式后,输入(A)。A.
6、:q B.:a C.:b D.:c 22.bind调用用于(A )。A.为 socket分配地址B.客户端与服务器连接C.接收 socket 上的连接D.监听 socket 上的连接23.一个进程收到SIGCHILD信号,表示(C )。A.创建子进程成功B.创建子进程失败C.子进程结束D.子进程开始运行24.如果用户想对某一命令详细的了解,可用(C)命令。A.ls B.help C.man D dir 25.若要将鼠标从VM中释放出来,可按(A )键来实现。A.Ctrl+Alt B.Ctrl+Alt+Del C.Ctrl+Alt+Enter D.Ctrl+Enter 26.在 UNIX/Lin
7、ux系统添加新用户的命令是(D)。A.groupadd B.usermod C.userdel D.useradd 27.删除文件命令为(D )。A mkdir B.move C.mv D.rm 28.从后台启动进程,应在命令的结尾加上符号(A)。A&B.C.#D.$29.如果执行命令#chmod 746 file.txt,那么该文件的权限是()。A.rwxr-rw-B.rw-r-r-C.-xrrwx D.rwxr-r30.下列那一个指令可以设定使用者的密码(C )。A pwd B newpwd Cpasswd Dpassword 二、简答题(第 1 小题 4分,第 2 小题 6 分,共 10
8、 分)1.进程之间通信有哪几种方式,各用于何种情景?答:管道、共享内存、信号、消息、socket。进程通信根据交换信息量的多少分为高级通信和低级通信。低级通信一般只传送一个或几个字节的信息,以达到控制进程执行速度的作用(如pv 操作);高级通信则要传送大量数据,目的不是为了控制进程的执行速度,而是为了交换信息。高级进程通信方式有很多种,大致可归并为三类:共享存储器、管道文件和消息传递。共享存储器:在内存种分配一片空间作为共享存储区。需要进行通信的进程把它附加到自己的地址空间中,不需要时则把它取消。管道文件:它是连接两个命令的一个打开文件。一个命令向该文件中写入数据,为写者;另一个命令从该文件中
9、读出数据,为读者。消息传递:它以消息为单位在进程间进行数据交换。2.若在计算机硬件系统中增加一个字符设备,为让用户方便地使用该设备,从底层硬件到应用层用户接口,我们应该在哪些层次编写何种功能的软件?可能会碰到哪些问题?答:驱动程序,虚拟文件系统VFS,设备文件节点,应用层API 驱动程序:驱动程序就是一组程序,一个比较特别的软件,它具有一般程序的一些特性,可以形象地把它理解为是搭建在计算机硬件设备与操作系统之间的桥梁,它的作用就是使操作系统能够正确地识别、管理、使用相应的硬件设备。虚拟文件系统VFS:向上,对应用层提供一个标准的文件操作接口;对下,对文件系统提供一个标准的接口,以便其他操作系统
10、的文件系统可以方便的移植到Linux 上;VFS内部则通过一系列名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -第 3 页 共 5 页高效的管理机制,比如inode cache,dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;此外VFS 把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。设备文件节点:x 中设备节点是通过“mknod”命令来创建的。一个设备节点其实就是一个文件,Linux 中称为设备文件。有一点必要说明的是,在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件程序普
11、通文件,设备节点称为设备文件。应用层 API:用户编程接口API 遵循了 UNIX 中最流行的应用编程界面标准-POSIX 标准。POSIX标准是由 IEEE 和 ISO/IEC 共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。三、程序设计题(每题 3分,共 30 分)1某工程包含源文件sub1.c,sub1.h,sub2.c,fun.h,fun.c,main.c,生成可执行文件doit,写一个 makefile,要求:(1)执
12、行 make,可以最小编译代价得到可执行文件doit。(2)执行 make clean,清除可执行文件和全部目标文件。(3)若 sub1.h 修改,sub1.o 需重新编译;若fun.h 发生修改,fun.o 需重新编译。(4)若 main.o,sub1.o,sub2.o,fun.o 发生修改,doit 需重新生成。解:Makefile doit:sub1.o sub2.o fun.o main.o gcc-o doit sub1.o sub2.o fun.o main.o main.o:main.c gcc c main.c sub1.o:sub1.c sub1.h gcc-c sub1.c
13、 sub2.o:sub2.c gcc-c sub2.c fun.o:fun.c fun.h gcc c fun.c clean:rm-rf*.o doit 2桌子上有一个盘子,最多只能装2 个水果。爸爸只能向盘中每次放入一个水果,儿子每次从盘中取出一个水果。请编写两个C 语言程序,模拟爸爸和儿子的动作过程。解:#include#include#include void Father();/Father 进程void Son();/Son 进程void Print();/向控制台输出信息int Plate_Size=0;/盘子中开始的苹果数int apple=0;/苹果数int Father_l
14、ag=0;/父亲是否处理等待状态,1 时表示等待名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -第 4 页 共 5 页int Son_lag;/儿子是否处于等待状态,1 时表示等待void Print()printf(现在盘子里有%d 个苹果 n,apple);if(Father_lag)printf(Father 进程处于等待状态);if(Son_lag)printf(Son 进程处于等待状态);if(Father_lag=0)&(Son_flag=0)!=1)printf(n);void Father()/Father进程apple+;Print();void So
15、n()/Son 进程apple-;Print();int main()int i;/1,表示 Father 进程操作,2 时表示 Son 进程操作int Plate_Size;/水果数量while(1)i=rand()%2+1;/产生 1,2 随机数,其中1,表示 Father()操作,2 表示 Son()进程操作switch(i)case 1:if(Plate_Size=2)Father_lag=1;/Father()进程等待Print();else Father();if(Son_lag=1)Son_lag=0;/唤醒 Son()可以拿苹果了Son();break;case 2:if(Pl
16、ate_Size=0)Son_lag=1;/Son()进程等待Print();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -第 5 页 共 5 页else Son();if(Father_lag=1)Father_lag=0;/唤醒 Father()可以放苹果了Father();break;3.完成 A、B两个进程所对应的C语言源程序。两进程共享一块结构体内存,结构体类型定义如下,A进程往该共享结构体内存中写入一帧视频数据,B 进程从中读取。共享内存为空,A 进程才可写入,共享内存中有数据,B进程才可读出。typedef struct _Frame int BufLen;/帧长度,int FrameType;/数据帧的类型 unsigned char FrameBuf4096;/帧数据,每帧数据不超过4KB FRAME;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -