天津城建大学计算机与信息工程学院
操作系统实验报告
班级: 软件二班 学号 1407070225 姓名: 郭飞 时间: 2016年5月6 日
实验二 进程管理 (二)进程的控制实验
一、实验目的
1、掌握进程另外的创建方法
2、熟悉进程的睡眠、同步、撤消等进程控制方法
二、实验内容
1、用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容
2、利用wait( )来控制进程执行顺序
三、实验过程
进入LINUX系统。打开虚拟机,在vi中编写程序,在终端输入文件名,执行指令,得出运行结果。
1.运行程序:
天津城建大学计算机与信息工程学院
操作系统实验报告
班级: 软件二班 学号 1407070225 姓名: 郭飞 时间: 2016年5月6 日
2.运行实验结果:
四、回答问题
(1)可执行文件加载时进行了哪些处理?
可执行文件加载时首先是创建一个新进程的fork系统调用,然后用于实现进程自我终止的exit系统调用;改变进程原有代码的exec系统调用;用于将调用进程挂起并等待子进程终止的wait系统调用;获得进程标识符的getpid系统调用等处理过程。
(2)什么是进程同步?wait( )是如何实现进程同步的?
a.我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。
b.首先程序在调用fork()建立一个子进程后,马上调用wait(),使父进程在子进程调用之前一直处于睡眠状态,这样就使子进程先运行,子进程运行exec()装入命令后,然后调用wait(0),使子进程和父进程并发执行,实现进程同步。
五、实验总结
通过进程创建和进程控制两节课实验,让我们掌握了进程的基本概念及其含义,了解了系统是怎样创建进程的,首次调用新进程时,其入口地址在哪,应该开始从哪执行;搞明白可执行文件加载时进行的那些处理,进一步深刻认识到进程同步的概念以及wait()实现进程同步的方式方法。
六、参考程序
#include
天津城建大学计算机与信息工程学院
操作系统实验报告
班级: 软件二班 学号 1407070225 姓名: 郭飞 时间: 2016年5月6 日
int pid;
pid=fork( ); /*创建子进程*/
switch(pid)
{
case -1: /*创建失败*/ printf(\ exit(1);
case 0: /*子进程*/ execl(\ printf(\ exit(1);
default: /* wait(NULL); /* printf(\ exit(0); }
}
父进程*/ 同步*/