好文档 - 专业文书写作范文服务资料分享网站

南京邮电大学操作系统实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

实验名称 实验学时

试验二 进程管理 1 实验类型 实验时间 验证 2016.6.2 一、 实验目的和要求

1、掌握进程的概念,明确进程的含义 2、认识并了解并发执行的实质

二、实验环境

Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4

三、实验原理及内容

1.实验内容

使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有两个父进程和两个子进程活动。每一个进程在屏幕上显示为:父进程1显示“(1)parent pid say:A”,父进程2显示“(2)parent pid say:A”,子进程(1.1)显示(1.1)pid1 say:B,子进程(2.1)显示“(2.1)pid2 say:C”。 2、实验原理

fork( ):创建一个新进程。

系统调用格式: pid=fork( ) 参数定义:int fork( ) fork()返回值意义如下:

0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。

>0:在父进程中,pid变量保存的fork()返回值为子进程的id值(进程唯一标识符)。

-1:创建失败。

如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork()被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程的副本,称为子进程。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。

核心为fork( )完成以下操作:

(1)为新进程分配一进程表项和进程标识符

进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。

(2)检查同时运行的进程数目

超过预先规定的最大数目时,fork( )系统调用失败。 (3)拷贝进程表项中的数据

将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。

(4)子进程继承父进程的所有文件

对父进程当前目录和所有已打开的文件表项中的引用计数加1。 (5)为子进程创建进程上、下文

进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。 (6)子进程执行

虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC,然后根据pid变量保存的fork()返回值的不同,执行不同的分支语句。

3.实验步骤

(1)在文本编辑器输入程序:

#include

#include int main() {

int temp1,temp2; int pid1,pid2; pid1=fork(); temp1=pid1;

if (pid1>0) {

printf(“\\n(1)parent pid %d say:A”,temp1); } else {

printf(“\\n(1.1)pid1 say:B”); }

pid2=fork(); temp2=pid2; if (pid2>0) {

printf(“\\n(2)parent pid %d say:A”,temp2); } else {

printf(“\\n(2.1)pid2 say:C”); } }

将程序保存在主目录下。

(2)打开终端,使用gcc编译程序,如果出错,使用vi编辑器编辑程序。编辑无错后再次编译。

(3)运行程序,输入./a.out,运行多次后得到下图结果。

四、实验小结

通过这次实验,掌握了进程的概念,明确了进程的含义,认识并了解了并发执行的实质。这次实验学会了用fork()函数创建实验,了解到进程与子进程的创建过程。另外还掌握了LINUX系统中输出流重定向的使用,将程序的输出结果输出到文件中,而不是直接显示在屏幕上。

实验名称 实验学时

试验三 进程间通信 3 实验类型 实验时间 综合 2016.6.2,2016.6.9 一、 实验目的和要求

1、掌握进程另外的创建方法。

2、熟悉进程的睡眠、同步、撤消等进程控制方法。 3、了解什么是管道。

4、熟悉UNIX/LINUX支持的管道通信方式。

二、实验环境

Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4

三、实验原理及内容

1.实验原理

编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message!

父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。 2.实验步骤

(1)在文本编辑器输入程序:

#include #include #include int pid1,pid2;

main( )

南京邮电大学操作系统实验报告

实验名称实验学时试验二进程管理1实验类型实验时间验证2016.6.2一、实验目的和要求1、掌握进程的概念,明确进程的含义2、认识并了解并发执行的实质二、实验环境WindowsXP+VMWare+RedHatEnterpriseLinux(RHEL)4三、实验
推荐度:
点击下载文档文档为doc格式
5bixg7mfgf7s7tu43p391qw0b8cvba00t7x
领取福利

微信扫码领取福利

微信扫码分享