福建农林大学操作系统实验报告二

更新时间:2023-09-19 18:41:01 阅读量: 小学教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《操作系统》实验报告(二)

Linux下的编程 (综合性 2学时) 1、实验目的:

1) 熟悉Linux的进程机制。 2)熟悉LINUX环境编程。 2、实验内容:

(1)完成LINUX系统的登录,启动终端。

(2)创建一个新用户,名为dd1。要求记录操作步骤或命令序列。

切换用户dd1

(3)进程查看命令PS的使用探讨,使用ps命令选项:-l –al ,记录命令的结果。

(4)编写一个程序,创建一个子进程,显示“New process.” 子进程在休眠(15秒)后,通过调用getpid()和getppid()获取父、子进程的id后结束并退出exit()。父进程调用waitpid()等待子进程结束,并同样返回其父、子进程的id。(提示:运行过程中配合ps -l命令查看进程的家族关系。)

回答问题:当父进程不等待子进程的结束时,运行结果如何?请分析原因。

运行结果:

原因:父进程执行到wait的时候,会阻塞等待子进程的结束,一个wait函数只调用一次,如果只有一个wait,其他的子进程在父进程结束后会成为孤儿进程init进程收养。采用不阻塞方式调用waitpid的话,父进程不会等待,没执行完的子进程将会成为孤儿进程

(5)进程的创建:编制一段程序,使用系统调用fork( )创建两个子进程,在该程序运行时,在系统中就有一个父进程和两个子进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,子进程分别显示字符 b和字符c。试观察、记录并分析屏幕上,进程运行的情况。(提示:运行过程中配合ps -l命令查看进程的家族关系。)

运行结果:

附:系统调用函数说明:

(1)fork()函数,创建一个新进程。 格式:int fork()

其中返回int取值意义如下:

0:创建子进程,从子进程返回的id值 >0:从父进程返回的子进程id值 -1:创建失败

(2)getpid()与getppid();

获取进程及其父进程的id.

(3) waitpid(pid,status,options) 可用调用格式:waitpid(0,NULL,0)

功能:waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用 waitpid()时子进程已经结束,则 waitpid()会立即返回子进程结束状态值。 参数设置:pid=0,表示等待进程组识别码与目前进程相同的任何子进程; status=NULL, 表示忽略进程的结束状态;

options=0,表示不提供了一些额外的选项来控制waitpid。 (4)相关的头文件包含如下: #include #include 3、实验结果分析:

(1)讨论第(4)和(5)题中的进程的家族关系。 答:在第四题中进程4413的父进程是4412

在第五题中输出b和c的进程是输出a的进程的子进程 4、总结:你对本次实验有什么体会或看法。

本次实验探究了操作系统中字符进程的关系,较为复杂,需用通过多次反复的实验来进行总结和归纳才能得出正确的结论。

本文来源:https://www.bwwdw.com/article/7mph.html

Top