10 级《操作系统》实验 5
学号:
姓名:
实验五 进程的创建与控制
一、实验目的
进程是操作系统中最重要的概念之一,任何程序的执行都要借助于进程来启动、运行和控制。
通过该实验,一方面让学生理解程序和进程之间的一对多联系,体会程序的静态性和进程的
动态性,另一方面也感受我们所使用的操作系统对进程的支持情况。
二、实验预习
1.什么是进程?一个进程在其生存期中至少要经历哪几种状态?一个程序是否只能被一个
进程启动?
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行
活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程
既是基本的分配单元,也是基本的执行单元。进程的概念主要有两点:
第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况
下,包括文本区域(text region)、数据区域(data region)和堆栈(stack
region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执
行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和
本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的
实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们
称其为进程。
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,
为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律
引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
就绪状态,等待状态,运行状态
可以用一个文件,当程序起来时检查该文件被打开,如果没有说明
这是第一次运行,则打开文件并继续运行,否则退出。记得在程序退出
的时候关闭该文件。该方法不是太好,如果在运行中程序意外退出,就
会有问题。
和上面的方法类似,可以把文件换成一个 socket,这样比较好。
2.操作系统是根据什么信息来感知进程的存在的?
进程控制块 PCB:用来描述进程的一切静态和动态的特征,操作系统只
能通过它来感知和管理进程。每个进程都有且仅有一个进程控制块。
进程控制块的内容:PCB 的具体内容随不同系统而异,一般包括以下信
2012-4-18
1
10 级《操作系统》实验 5
学号:
姓名:
息:
前值
进程标识: 唯一地标识进程的名称或代码
进程状态: 标识进程是运行态、就绪态或阻塞态
进程实体: 指示进程的程序部分和数据部分在存储器中的位置和大小
调度信息(优先数): 确定就绪进程转为运行进程的优先级
资源信息: 描述内存占用、外设占用等信息
现场信息: 包括程序计数器、程序状态字、累加器、变址寄存器的当
进程通信信息:用于进程间的通信
三、实验内容和要求
1.创建一个进程,来运行一个 Windows 系统自带的记事本程序(notepad.exe)设计出来的
界面大体如图:
要求:通过点击界面上的按钮,来分别启动、阻塞、唤醒和终止记事本进程。
2012-4-18
2
10 级《操作系统》实验 5
学号:
姓名:
2.自己建立一个可执行程序,用几个不同的进程来启动它。可参考如下步骤:
(1)自己用 VB 建立一个应用程序 hello.exe,保存起来,为下一步做准备。
(2)在 VC 环境下设计界面如下:
2012-4-18
3
10 级《操作系统》实验 5
学号:
姓名:
分别点击界面中的三个按钮,来启动三个进程,但让它们运行的程序都是(1)中建立的
hello.exe。
问:在这里,哪个是父进程,哪个(些)是子进程?
*3.选做)Linux 下的进程创建(用 fork()函数创建子进程):
(1)在 linux 操作系统下,建立一个 C 语言文件,命名为 fork1.c
(2)fork1.c 文件的内容为:
#include
main(
)
int
{
int pid;
pid=fork();
if( pid < 0 )printf(“error in fork!\n”);
else if (pid==0) printf(“I am child, and my process id is: %d !\n”,pid);
else printf(“I am father process, and my process id is %d !\n”,pid);
return 0;
}
(3)编译该 fork1.c 文件,并形成可执行文件 fork1.exe:
-o
fork1.c
gcc
(4)执行刚形成的 fork1.exe 文件,多执行几次,观察结果:
fork1.exe
2012-4-18
4
10 级《操作系统》实验 5
学号:
姓名:
./fork1.exe
四、实验小结
本次试验是进程的创建与控制,这是对进程的最基本的了解。我们通过实
验感受到了一到多的关联。同时,我们体会到了程序的静态性和进程的动态性
2012-4-18
5