山东农业大学-2014-2015-2Linux操作系统(A)和详细答案

山东农业大学-2014-2015-2Linux操作系统(A)和详细答案

2023年8月2日发(作者:)

山东农业大学课程考试专用

2014 - 2015学年第 2学期

《Linux操作系统》试题(卷)A

课程代码 BF002357 考试方式 闭卷 考试时长 100 分钟

姓名 学号 教学班号 专业 级 班

题 号

满 分

得 分

阅卷人

20

34

46

合计

100

一、选择题(每题1分,共20分)

1. Linux最早是由( )计算机爱好者开发?

A)Linus Torvalds B)Richard Peteresen C)Linux Sarwar D)Rob Pick

2. 以下( )不是Linux的文件系统

A. NTFS B. SWAP

C. ext4 3

3. 哪个命令可以将普通用户转换成超级用户( )。

A. super B. passwd D. su

4. 在Linux系统中,每个进程都有4GB的虚拟地址空间,但属于用户自己的虚拟地址是( )。

A.0~2GB-1 B.0~3GB-1

C.3GB~4GB-1 D.2GB~4GB-1

5. 从后台启动进程,应在命令的结尾加上符号( )。

A.& B. @ C. # D. $

6. ls –al 命令列出下面的文件列表,问哪一个文件是目录( )。

A.-rw------- 2 hel-s users 56 Sep 09 11:05 folder

B.-rw------- 2 hel-s users 56 Sep 09 11:05 goodbye

C.drwx----- 1 hel users 1024 Sep 10 08:10 zhang

D.lrwx----- 1 hel users 2024 Sep 12 08:12 cheng

7. 如何删除目录 /tmp下的所有文件及子目录( )。

A. del /tmp/* B. rm -rf /tmp C. rm -Ra /tmp/* D. rm –rf /tmp/*

8. Linux文件系统的目录结构是一棵倒挂的树,文件都按其作用分门别类地放在相关的目录中。系统程序和大部分应用程序的全局配置文件,我们将其放在( )目录中。

A./bin B./etc C./dev D.lib

9. 用户编写了一个文本文件,想将该文件名称改为txt.a,下列命令( )可以实现。

A. cd xt.a B. echo > txt.a

C. rm txt.a D. cat > txt.a

10. 一下哪个环境变量表示当前路径( )。

注:考试期间试卷不允许拆开。 第 1 页 共 10 页 山东农业大学课程考试专用

A. PATH B. PWD C. HOME

11. 已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是以下( )?

A)cd test B)cd /stud1/test C)cd stud1/test D)cd home

12. /etc/shadow文件中存放( )。

A.用户账号基本信息 B.用户口令的加密信息

C.用户组信息 D.文件系统信息

13. vi中( )命令是不保存强制退出?

A.:wq B.:wq! C.:q! D.:quit

14. Shell程序中变量的引用方法是?( )

A.直接引用 B.加$引用 C.加括号引用 D.加引号引用

15. office 1 2命令行中的$2的值是多少?( )

C.1 D.2

16. 通常第一个SCSI硬盘的第一个分区用( )来表示?

A.had B.hda1 C.sda D.sda1

17. 使用自动补全功能时,输入命令名或文件名的前1个或几个字母后按( )键?

A.【Ctrl】键 B.【Tab】键 C.【Alt】键 D.【Esc】键

18. shell程序中的判断命令是什么?( )

19. 下面环境变量( )表示哪个命令可以查看进程的动态运行情况?

A.ps B.ll C.top D.Fs

20. 以下哪一个命令( )能用来查找/home目录及其子目录中包含'hello'字符串的5天以前访问过的文件,并将它们删除,删除前需要得到用户的确认,但是删除过程不需要任何提示。

/home –name “hello” –atime +5 –ok rm –f {} ;

/home –name “hello” –atime -5 –ok rm –f {} ;

/home –name “hello” –atime +5 –ok rm ;

/home –name “hello” –atime -5 –ok rm –f ;

请将选择答案填写在下面的表格里

1~5 6~10

11~15

16~20

二、应用题(共35分)

1、解释命令功能或根据功能写出命令(每小题2分)

1) 清空日志文件/var/log/dmesg

2) 将当前用户目录/home/user下的目录文件mydir包括的所有文件打包,文件名为文件,并且用选项参数“-v”显示所有的tar处理文件时的信息。

3) 复制文件/etc/passwd到/home/mydir目录下

注:考试期间试卷不允许拆开。 第 2 页 共 10 页 山东农业大学课程考试专用

4) kill -9 1234

5) kill –s SIGQUIT 1234

6) chmod a+x, g-w exer

7)

8)

9)

10)

ln passwd passwd_h

cd ~

grep ’root’ /etc/passwd

将cat kkk 的错误输出结果重定向到文件。 (kkk是一个不存在的文件)

2、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(5分)

#!/bin/bash #(1)

dir=$1 #(2)

if [ -d $dir ] #(3)

then

cd $dir

for file in *

do

if [-f $file ] #(4)

then

cat $file

echo “end of file $file”

fi

done

else

echo “bad directory name $dir”

fi

注:考试期间试卷不允许拆开。 第 3 页 共 10 页 山东农业大学课程考试专用

3、设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。(5分)

4、将当前目录下以.txt为后缀的文件更名为*.doc(5分)

三、 问答题(共45分)

1.Vi的工作模式有几种?分别都是什么?(3分)

2.进程的通信方式有哪些?请说出其中的四种,哪种效率最高,为什么?(6分)

注:考试期间试卷不允许拆开。 第 4 页 共 10 页 山东农业大学课程考试专用

3. 简单介绍进程相关的系统调用函数fork、wait、execlp的作用 (6分)

4.分析下面程序的运行结果(5分)

int glob=6

int main()

{ int var=88

pid=fork();

if (pid<0)

printf(“fork error”);

else if (pid==0)

{ glob++;

var++;

}

else

sleep(2);

printf(“glob=%d,var=%d”,,glob,var)

return 0;

}

5.读下面的代码,回答以下问题( 10分)

注:考试期间试卷不允许拆开。 第 5 页 共 10 页 山东农业大学课程考试专用

① 该程序运行时会产生几个进程?为什么?

② 输出“A:my pid is…”和输出“B:my pid is…”的进程的亲缘关系如何,为什么?

main(){

int a;

pid_t pd1,pd2;

pid1=fork();

pid2=fork();

if (pid1==0 && pid2>0)

printf(“A:my pid is:%dn”,getpid());

if (pid1>0 && pid2==0)

printf(“B:my pid is:%dn”,getpid());

}

6.某管道操作程序的部分代码如下,阅读程序回答下面问题:(10分)

① 程序运行会有怎样的输出?说明你的分析。

② 请说明系统调用pipe( )为什么应该在fork( )调用前面使用?父子进程中先执行close(pipe…)是为了做什么?

③ wait(NULL)的作用是什么?

int main(){ int pid_fd[2];

注:考试期间试卷不允许拆开。 第 6 页 共 10 页 山东农业大学课程考试专用

pid_t pid;

char buf_f[100];

char* p_wbuf;

int r_num;

memset(buf_r,0,sizeof(buf_r));//对缓冲区进行初始化

if(pipe(pipe_fd)<0)

{

printf(“pipe create errorn”);

return -1;

}

if((pid=fork())==0){

close(pipe_fd[1]);

sleep(2);

if((r_num=read(pipe_fd[0],buf_r,100)).0)

注:考试期间试卷不允许拆开。 第 7 页 共 10 页

printf(“%d numbers read from the

pipe is %sn”,r_num,buf_r);

close(pipe_fd[0]);

exit(0);

}

else if(pid>0){

close(pipe_fd[0];

printf(“parent write Hello!n”);

if(write(pipe_fd[1],”Hello”,5)= =-1)

printf(“parent write err!n”);

close(pipe_fd[1]);

sleep(3);

wait(NULL);

exit(0);

}

return 0; }//main山东农业大学课程考试专用

7、请说明什么是僵尸进程,什么是孤儿进程?分析如下代码中父子进程的执行顺序,子进程的PCB由谁来回收?(5分)

main()

{

pid_t pid;

pid=fork();

if (pid<0) printf(“fork error!n”);

if (pid==0)

sleep(2);

if (pid>0) {

exit(0);}

}

注:考试期间试卷不允许拆开。 第 8 页 共 10 页 山东农业大学课程考试专用

2014 -2015 学年第2 学期

《Linux操作系统》A卷参考答案

一、 选择题(每题1分,共20分)

1~5 AADBD 6~10 CDBDB

11~15 CBCBC

二、应用题(35分)

16~20 DBCCA

1、 解释命令功能或根据功能写出命令(每题2分)

1) cat /dev/null>/var/log/dmesg

2) tar –cvf /home/user/*

3) cp /etc/passwd /home/mydir

4) 结束进程1234

5) 发送SIGQUIT信号给进程1234

6) 对于exer,增加所有用户的执行权限,取消用户组的读权限

7) 给文件passwd创建一个硬链接

8) 切换到用户家目录

9) 在文件/etc/passwd中寻找所有包含root的行

10) cat kkk 2>

2、#(1)使用/bin/bash解释脚本 (1分)

#(2)将位置变量1赋值给变量dir (1分)

#(3)如果dir所指为目录 (1分)

#(4)如果循环变量file所指是普通文件 (1分)

程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。(1分)

3、 #!/bin/bash

for ((i=1;i<=50;i++))

do

mkdir -p /usrdata/user$i )

cd /usrdata

chmod 754 user$i

done

4、 #!/bin/bash

for file in *.txt

do

leftname=`basename $file .txt`

mv $file $

done

三、问答题(45分)

注:考试期间试卷不允许拆开。 第 9 页 共 10 页 山东农业大学课程考试专用

1、vi的工作模式有3种,分别是底行命令行模式、命令行模式和编辑模式

2、管道、信号量、信号、消息队列、共享内存(任意四种都可以),共享内存效率最高,其他通信方式都要经过4次复制,共享内存2次即可。

3、Fork 克隆父亲产生孩子进程,在父子进程空间内返回不同的值。

Wait阻塞调用它的进程,当其一个孩子进程进入死亡进入僵尸态后被唤醒

Execlp可将参数指定的用户程序装载进当前进程空间内,赋予进程新的工作,该调用成功后,进程原来的代码被覆盖将不会再运行。各2分

4、glob=7,var=89

glob=6 ,var=88(顺序无所谓,都正确)

子进程对变量所做的改变并不影响父进程中该变量的值,各自操作自己的数据空间。

5、

① 程序运行共产生4个进程(4分)

② 兄弟关系。fork发生时,执行该fork的进程内返回的是子进程的进程号,而被创建出的 子进程空间中返回值是0。第一次fork后,第1个儿子进程的空间中的pid1==0,继续执行第2次fork若得到的 pid2>0,说明仍是第1个儿子在运行。所以输出A:…的是第一个儿子;同理,pid1>0是在祖先进程里,祖先进程继续执行得到pid2==0,说明是祖先的第2个儿子。所以这两个进程是兄弟关系。两者并发运行,若没用同步控制语句,则谁先结束不确定。(6分)

6、程序运行结果parent write1 Hello!

5 numbers read from the pipe is Hello (3分)

分析:fork()调用后产生父子 两个进程,当子进程先执行时,sleep2秒钟,所以一定是父进程先执行,父进程关闭读口文件描述符pipe_fd[0],向管道中写入5个字符“Hello”,关闭写文件描述符pipe_fd[1],休眠3秒钟,子进程运行,关闭写文件描述符pipe_fd[1],从管道中读出数据,输出5 numbers

read from the pipe is Hello,关闭读文件描述符。(3分)

必须在fork()前调用pipe(),否则子进程将无法继承文件描述符。(2分)

wait(NULL)的作用是在子进程exit后回收子进程。(2分)

7、我们将一个已经终止、但是其父进程尚未对期进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为僵死进程。

进程是在父进程fork后生成的,子进程将其终止状态返回给父进程,如果父进程在子进程前终止,我们称这种进程为孤儿进程。

程序中子进程sleep,先调用父进程,父进程接着退出了,子进程变成孤儿进程,由init收养。

注:考试期间试卷不允许拆开。 第 10 页 共 10 页

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690957737a472836.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信