操作系统课程实验报告
实验编号与实验名称:
实验二进程的创建
实验目的:1掌握进程的概念,明确进程的含义2认识并了解并发执行的实质
实验内容及要求(详见实验讲义):11)编写一段程序,使用系统调用fork创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示a,子进程分别显示字符b和字符c。22)修改上述程序,每一个进程循环显示一句话。子进程显示daughter…及so
……,父进程显示pare
t……,观察结果,分析原因。
实验用到的软件(:)虚拟机
实验内容、关键步骤(流程图、代码等)及结果分析(70分)
第一题写法
第一题代码
f第二题代码第二题:没使用sleep();函数所得结果
f第二题:使用sleep();函数所得结果
f结果分析:对于第一题,sleep()函数使用与否,其实没有多大影响。对于第二题,如果不加,CPU会一直在打印第一个进程,直至结束;而后CPU才会跳转
到另一个进程并执行它,依次执行直至完成。而加了sleep()函数后,CPU会先执行第一个进程,睡眠一次,这时为避免CPU空转,
CPU会切换到另一个进程并执行它……这个过程中,CPU会来回的切换、执行。
并发执行的深刻思考:
假如以宏观上来看,并发执行是CPU还没完全放弃上一个进程时,下一个进程已经开始被执行。尽管两个进程交错的时间极为短暂,但它们确实是并发执行了。
但微观上来看,CPU还是严格遵循着它的规则的:一个CPU在一定的时间内只能对应一个程序。所以把时间放大到一定程度便会发现,其实CPU不过是在很短的时间内来回地在进程与进程之间切换罢了。
f思考题1、系统是怎样创建进程的?
Li
ux系统用fork系统调用创建子进程。由fork系统调用创建的新进程被称为子进程。该函数被调用一次,但返回两次。如果fork进程调用成功,两次返回的区别是子进程的返回值是0,而父进程的返回值则是子进程的进程号。
创建的子进程与父进程的资源是相同的,即进程表项、栈、缓存区等等都是相同的;但彼此的地址空间却是不同的。
2、当首次调用新创建进程时,其入口在哪里?
Fork是把父进程的执行环境复制一份,到自己的进程空间,即父子进程的执行体是一样的,子进程也是从父进程fork的地方开始执行。
所以但首次调用新创建进程时,其入口在fork即将进入并执行下一句的地方。
实验过程中遇到的问题解决办法与实验体会(10分)【请注意:此处必须如实填写,为空或不适均扣10分】
1、,因为第一r