操作系统 并发程序设计
更新时间:2023-04-24 00:22:01 阅读量: 实用文档 文档下载
- 操作系统推荐度:
- 相关推荐
fock()函数的详尽分析的汇报版
030702412陈楠
fock()函数的详尽分析的汇报版
PPT结构
fock()函数的详尽分析的汇报版
修改的代码段
#include<stdio.h>用来检测fork()之前语句是否被执行#include<unistd.h> void main (void){ int x=5;printf(“start\n”); if( fork( ) )用来标示父进程的输出{ x+=30; printf (“father%d\n”,x);}标示子进程的输出 else printf(“child%d\n”,x); printf(“out%d\n”,x);标示if外侧的输出}
fock()函数的详尽分析的汇报版
一般的输出 结论 fock()对于该语句之前的程序段只执行一次 fock()对于该语句返回两次值并针对两次返回值依次执行之后的语句
fock()函数的详尽分析的汇报版
fock() 被fork创建的新进程叫做自进程。fork函数被调用一次,却两次返回。返回值唯一的区别是在子进程中返回0,而在父进程中返回子进程的pid。 子进程和父进程都执行在fork函数调用之后的代码,子进程是父进程的一个拷贝。
父进程的数据空间、堆栈空间都会给子进程一个拷贝,而不是共享这些内存。
fock()函数的详尽分析的汇报版
解释 根据输出来看,fock()第一次先在子进程中执行代码段,第二次返回后在父进程中执行代码
fock()函数的详尽分析的汇报版
代码段修改(1)
#include<stdio.h>#include<unistd.h> void main (void){ int x=5;printf(“start\n”); if( fork( ) ){ x+=30; printf (“father%d\n”,x);} else{x+=20; printf(“child%d\n”,x);} printf(“out%d\n”,x);}
fock()函数的详尽分析的汇报版
解释1 修改后的代码能够体现子进程的空间和父进程的空间是不在同一个区域中,即不是共享同一内存
fock()函数的详尽分析的汇报版
并发执行现象(1) 在原始代码段运行中偶尔还会出现这样的现象
fock()函数的详尽分析的汇报版
并发执行现象(2) 在原始代码段运行中偶尔还会出现这样的现象
fock()函数的详尽分析的汇报版
并发执行解释 我的理解是程序刚好在执行中切换进程执行,在编译原始代码段后因为执行时间持续较短,发生这种现象的概率较小。 在之前的解释中能够说明父进程和子进程的空间是独立,存在进程间切换的可能性,发生这种现象证明了这种猜测。
fock()函数的详尽分析的汇报版
并发执行猜测 既然进程间会进行切换,那么所有执行的可能就有如下几种
start child 5 5 father 35 35(无切换) start child 5 father 35 35 5(切换1次) start child 5 father 35 5 35(切换2次)
start father 35 35 child 5 5(切换1次) start father 35 child 5 5 35(切换2次) start father 35 child 5 35 5(切换3次)
fock()函数的详尽分析的汇报版
并发执行猜测 不可能出现的情况是 start 5 child 5 35 father 35
start 5 35 father 35 child 5 start 5 35 child 5 father 35 start 35 father 35 5 child 5
start 35 5 child 5 father 35 start 35 5 father 35 child 5 即在father输出前已经输出35或 在child输出前已经输出5
fock()函数的详尽分析的汇报版
并发执行改进 在对源程序进行近半小时的重复执行后还没发现其他情况,我尝试的增加了一些冗
余的执行代码来增加切换的几率。 增加了很多空执行的延时 for(int i=0;i<0XFFFFF;i++);
fock()函数的详尽分析的汇报版
代码段修改(2) #include<stdio.h> #include<unistd.h> #define delay for(int i=0;i<0XFFFFF;i++); void main (void) { int x=5;printf(“start\n”); if( fork( ) ) { x+=30;delay; printf (“father%d\n”,x); delay; } else{30;delay; printf(“child%d\n”,x); delay;} delay; printf(“out%d\n”,x); }
fock()函数的详尽分析的汇报版
并发执行结果 这样的程序执行的一般结果就不再是5 5 35 35
而是其他的结果,在此列出我执行出的结果
fock()函数的详尽分析的汇报版
fock()函数的详尽分析的汇报版
小结 我总共尝试出6种结果中的5种,最后一种由于要3次切换才能出现,概率太小了,未能尝试出。
当执行操作很少的时候,一般是顺序就执行完 当执行操作很多的时候,进程间的切换概率就很大 由于并发执行对于单个程序来说还是顺序执行的,所以不可能出现5 child 5 35 father 35等6种情况 验证出来的结果充分说明并发执行中的进程切换是随机而且是无序的,在执行操作持续时间约长的时候,出现的几率越高;但对于同一个程序来说是顺序执行的。
fock()函数的详尽分析的汇报版
所有尝试出来结果的截屏
正在阅读:
操作系统 并发程序设计04-24
青岛版三年级科学下册实验报告材料11-28
初中地理教学中创设生活情境的实践探索02-26
19《商品陈列》教学大纲12-30
四级冲刺试卷01-16
最新苏教版五年级下册数学第六单元-圆教案05-02
四年级数学下册教学工作总结09-30
《自然辩证法概论》高教版课后题答案10-26
逐套验收01-24
2015二级建造师施工管理各章节练习题07-20
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 并发
- 程序设计
- 操作系统
- 书法名家对联作品欣赏
- 牛奶中锌的测定-富锌牛奶的开发
- 苏教版六数下长方体和正方体认识的复备以及教后反思
- 静电场、恒定电流测试题
- 社区卫生服务的组织管理
- 八年级上册政治知识点汇总
- XX移动情绪管理及员工激励(S)
- 最新PEP小学英语五年级上册Unit 1 What’s he like A let's
- 《义务教育化学课程标准(2011年版)》的变化与分析
- 人教版五年级上册数学期末复习计划
- 2014届中考政治二轮复习_热点专题10_防范侵害_共筑校园安全课件_
- 电脑BIOS中USB模式启动热键
- 315促销活动话术(2015)
- 麻黄生物碱提取工艺改进
- “十一五”时期山东省产业结构调整研究——基于2005—2009年的数
- 当代中国经济高社会成本_低产品成本模式研究_改革开放30年政府转
- 物流信息系统--业务流程图
- 高考物理第二轮能力专题电路设计与仪器选择1
- 物业管理公众管理制度
- 金融工程本科毕业论文选题参考