收藏 分销(赏)

操作系统实验二.doc

上传人:w****g 文档编号:6911864 上传时间:2024-12-23 格式:DOC 页数:6 大小:99KB 下载积分:6 金币
下载 相关 举报
操作系统实验二.doc_第1页
第1页 / 共6页
操作系统实验二.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
贵州大学实验报告 学院:计算机学院 专业:信息安全 班级:121 姓名 饶永明 学号 1208060066 实验组 实验时间 10.17 指导教师 王道书 成绩 实验项目名称 实验二 进程的创建 实验目的 1、掌握进程的概念,明确进程的含义 2、认识并了解并发执行的实质 实验要求 课堂集中授课参考程序和学生编程实现、并回答相关疑问; 实验内容 1、编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 2、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter …'及'son ……',父进程显示 'parent ……',观察结果,分析原因 实验数据 试验程序一: #include <stdio.h> main( ) { int p1,p2; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) putchar('b'); else { while((p2=fork( ))= = -1); /*创建子进程p2*/ if(p2= =0) putchar('c'); else putchar('a'); } } 试验程序二: #include <stdio.h> main( ) { int p1,p2,i; while((p1=fork( ))= = -1); /*创建子进程p1*/ if (p1= =0) for(i=0;i<10;i++) printf("daughter %d\n",i); else { while((p2=fork( ))= = -1); /*创建子进程p2*/ if(p2= =0) for(i=0;i<10;i++) printf("son %d\n",i); else for(i=0;i<10;i++) printf("parent %d\n",i); } } 程序一结果: 程序二结果: 实验总结 通过做这次实验让我我了解了子进程和父进程之间的调用顺序,以及调用的结果,而且通过调用fork()可以知道存在多种情况下,子进程发生调用的变化。这根我们以前编程思维有着很大的不同,因为进程的执行顺序是任意的。此次实验让我们对系统调用进程的过程有了更深一步的了解。 1、 系统是怎样创建进程的? 答: 系统调用格式为pid=fork( ),参数定义为int fork( ),fork( )返回值意义如下: 0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。 >0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。 -1:创建失败。 如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。 2、当首次调用新创建进程时,其入口在哪里? 答:fork系统调用创建的子进程继承了原进程的context,也就是说fork调用成功后,子进程与父进程并发执行相同的代码。但由于子进程也继承了父进程的程序指针,所以子进程是从fork()后的语句开始执行(也就是新进程调用的入口)。另外fork在子进程和父进程中的返回值是不同的。在父进程中返回子进程的PID,而在子进程中返回0。所以可以在程序中检查PID的值,使父进程和子进程执行不同的分支 指导教师意见 签名: 年 月 日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服