*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2008 年秋季学期
操作系统原理课程设计
题
目:进程的控制系统
专业班级:计算机(1)班
姓
学
指导教师:刘 嘉
成
名:杨永富
号:06240116
绩:
目 录
摘 要 ·····························································································1
正 文 ·····························································································2
1. 问题描述 ·················································································· 2
2. 设计目的 ·················································································· 3
3. 设计要求 ·················································································· 4
4. 详细设计 ·················································································· 5
(1)界面设计 ···········································································5
(2)算法设计 ···········································································6
5. 结果分析 ·················································································· 7
设 计 总 结 ·················································································9
参 考 文 献 ····················································································10
致 谢 ····························································································11
附录:源程序代码 ············································································ 12
2
摘 要
课程设计是为了让我们能对操作系统有更进一步的了解所开设的实践课程。
所以这就要求我们在对课本主要内容熟练掌握的前提下,运用这些内容来解决实
际问题。进程的控制问题是一个有关对进程的运用问题。对进程的控制包括:创
建进程、唤醒进程、挂起进程、终止进程等等。这些控制和管理功能是由操作系
统中的原语来实现的。原语是在管态下执行、完成系统特定功能的过程。系统对
进程 的控制如不使用原语,就会造成其状态的不确定性,从而达不到进程控制目
的。
课程设计可以提高我们的实践动手能力,能让我们把课本上的知识真正在实际
应用中得到实现,进而把它变成自己的东西,达到学以致用的效果。同时,还可
以加深对理论知识的印象。这也可以为我们以后的工作奠定良好的基础
关键字: 进程 父进程 子进程 函数的调用
1
正 文
1. 问题描述
程序在调用 fork()建立一个子进程后,马上调用 wait(),使父进程控制在子进
程结束之前,一直处于睡眠状态。子进程用 exec()装入命令 ls,exec()后,子进程
的代码被 ls 的代码取代,这时子进程的 PC 指向 ls 的第一条语句,开始执行 ls 的命
令代码。其中 wait()用来实现进程同步。
2
2.设计目的
通过该题目的设计过程,可以初步掌握进程控制系统的原理、软件开发方法并提
高解决实际问题的能力。也是为了提高同学们的实践动手能力,在实践过程中加深理
解和熟练掌握课本中所学的各种操作,学会如何把所学的知识用于解决实际问题,以
达到学以致用的效果。
3
3. 设计要求
用 fork( )创建一个进程,再调用 exec( )用新的程序替换该子进程的内容,利
用 wait( )来控制进程执行顺序。
1、分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结
构)。
2、设计合适的测试用例,对得到的运行结果要有分析。
3、设计中遇到的问题,设计的心得体会。
4
4.详细设计
(1)界面设计
函数的调用关系图如下:
M a i n( )
Pid=fork( )
E x i t(1)
E x e c l( )
W a i t (null)
E x i t(1)
E x i t(0)
执行命令 ls -1 –color,列出当前目录下所有的文件和子目录;
5
Ls completed!
(2)算法设计
1.fork( )函数
用 fork( )创建子进程,即 pid=fork( ).
2.Execl( )函数
Execl( )可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空
间上,以更改新进程的用户级上下文。Execl( )的系统调用是把一个新程序装入内存,
来改变调用进程的执行代码,从而形成新进程。Execl( )调用成功后,没有任何数据
返回。
3.Wait( ) 函数
Wait( )将调用进程挂起,直到其子进程因暂停或终止而发来软中断信号为止。
6