山东农业大学课程考试专用 if [ $a -gt 0 ] ;then (1分) echo “user exists” else echo “no such user” fi else echo “on params” fi 执行: sh checkuser username (1分) 三、判断题(10分,每题1分) 1-5: FTFFT 6-10: TFTTT 四、问答题(50分) 1、4个进程(2分) 兄弟关系(2分)fork发生时,执行该fork的进程内返回的是子进程的进程号,而被创建出的 子进程空间中返回值是0。(2分)第一次fork后,第1个儿子进程的空间中的pid1==0,继续执行第2次fork若得到的 pid2>0,说明仍是第1个儿子在运行。所以输出A:…的是第一个儿子;同理,pid1>0是在祖先进程里,祖先进程继续执行得到pid2==0,说明是祖先的第2个儿子。所以这两个进程是兄弟关系。(2分) 2、程序运行结果parent write1 Hello! parent write2 Pipe! 10 numbers read from the pipe is Hello Pipe (3分) 分析:fork()调用后产生父子 两个进程,当子进程先执行时,sleep2秒钟,所以一定是父进程先执行,父进程关闭读口文件描述符pipe_fd[0],向管道中写入5个字符“Hello”,输出语句parent write1 Hello,,继续向管道中写入5个字符“ Pipe”,输出语句parent write2 pipe,关闭写文件描述符pipe_fd[1], 休眠3秒钟,子进程运行,关闭写文件描述符pipe_fd[1],从管道中读出数据,输出10 numbers read from the pipe is Hello Pipe,关闭读文件描述符。(3分) 必须在fork()前调用pipe(),否则子进程将无法继承文件描述符。(2分) wait(NULL)的作用是在子进程exit后回收子进程。(2分) 3、(1)信号 一种简洁的通信方式,进程或内核均可使用信号通知一个进程有某种事件发生 (2) 管道及命名管道 进程将管道视为一个文件,一个进程向管道写入数据,另一个进程从管道中读出数据。 (3)消息队列 进程之间以传递消息的形式进行通信。 (4)共享内存 多个进程可以访问同一块内存空间 (5)信号量 进程之间及同一进程之间的同步手段,信号量机制的一种推广。 (答对上述4个即可,每个要点2分) 4、答:将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址就是物理地址(2分) 将应用程序员看到的内存空间定义为虚拟地址空间(或地址空间),其中的地址就叫虚拟地址(或虚地址), 一般用“段:偏移量”的形式来描述 (2分) 注:考试期间试卷不允许拆开。 第 9 页 共 10 页 山东农业大学课程考试专用 5、都是内核代码在内核空间分配内存(虚拟内存),但分配的内存在内核空间的不同位置。 kmalloc()分配的内存处于3GB~high_memory之间,vmalloc()分配的内存在VMALLOC_START~4GB之间,(4分) 地址连续性不同:kmalloc虚拟地址连续,物理地址也连续。vmalloc虚拟地址连续,但通过分页映射的物理内存不保证物理地址连续。kamlloc以字节为单位,vmalloc以页为单位。(4分) 6、系统调用是操作系统内核提供的、功能相对较强的一系列函数,这些函数是在内核码中实现的,并通过某种接口形式,将这些函数提供给用户来进行调用。(3分) 添加一个能满足自己需求的系统调用需要四个步骤:(每个步骤1分,共4分) (1) 添加系统调用号 (2) 添加新的系统调用服务函数 (3) 更新头文件 (4) 更新系统调用函数表 注:考试期间试卷不允许拆开。 第 10 页 共 10 页