进程创建系统说明书_第1页
进程创建系统说明书_第2页
进程创建系统说明书_第3页
进程创建系统说明书_第4页
进程创建系统说明书_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

e +++++++++*个*个*****************实践教学e力力、m,+++++++++ &力力“*********************兰州理工大学计算机与通信学院2012年春季学期操作系统原理课程设计题 目: 进程创建系统专业班级:10级计算机科学与技术2班姓 名: 李玉鑫学 号: 10240217指导教师: 李睿成绩: 一目录TOC\o"1-5"\h\z摘要 2正文 3\o"CurrentDocument"1.问题描述 3\o"CurrentDocument"设计目的 3\o"CurrentDocument"设计要求 3\o"CurrentDocument"详细设计 4界面设计 4算法设计 4\o"CurrentDocument"5.结果分析 5\o"CurrentDocument"设计总结 10\o"CurrentDocument"参考文献 11\o"CurrentDocument"致谢 12\o"CurrentDocument"附录:源程序代码 13进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。在UNIX系统中,用户创建一个新进程的唯一方法就是调用系统调用 fork。调用fork的进程称为父进程,而新创建的进程叫做子进程关键字:进程,操作系统,程序,父进程,子进程问题描述了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。编写程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符,如父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因;修改程序,每一个进程循环显示一句话,如子进程显示'daughter…’及'son ',父进程显示’parent ',观察结果,分析原因。设计目的(1) 通过该题目的设计过程,可以初步掌握进程创建系统的原理、软件开发方法并提高解决实际问题的能力。(2) 加深对操作系统系统调用功能和进程概念的理解,明确进程和程序的区别。(3) 掌握Linux中进程的创建方法,进一步理解进程的并发执行。设计要求编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…’及'son ',父进程显示'parent ',观察结果,分析原因。在程序中使用调用lockf()来给每一个子进程加锁4.详细设计(1)界面设计函数调用关系图:⑵算法设计各模块的伪码算法:对于概要设计中的使用系统调用fork()创建两个子进程,创建的过程函数如下:a.函数使用头文件如下:#include<iostream>Usingnamespacestd;b.main()系统调用格式参数定义Intp1,p2;调用函数fork()P1=fork();If(p1==0)cout<<”b”<<endl;Elseif(p1>0)(P2=fork();If(p2==0)cout<<”c”<<endl;Elseif(p2>0)cout<<”a”<<endl;}Return0;5.结果分析.使用系统调用fork()创建两个子进程的程序的调试结果如下图:

/bin/sh-Konsole登话编辑查看书签设置帮助Sh由上面的三个图可以看出来由于程序的并发执行,同一个程序运行的结果会有所区别。.修改程序之后,每一个进程循环显示一句话的调试结果如下图:

由上面的图可以看出来由于程序的并发执行,同一个程序运行的结果会有所区别。sonOson1son2parentOparentlparents钏回车继续!daughterOdaughterldaughters.在程序中使用调用lockf()来给每一个子进程加锁的调试结果如下图:/binfeh-Konsole会话编辑查看书签设置daughterOdaughter1daughtersparentOparent1parents旗回车继续!sonOson1son2

由上面的运行结果可以看出在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥。设计总结通过这次实验,让我明白了怎样创建一个进程,以及如何使用系统调用来调用fork()函数,当fork()的返回值为0的时候表示当前进程是子进程,当fork()函数的返回值是大于0的时候表示当前进程是父进程,当fork()返回值是-1的时候表示创建进程失败。通过实验使我见到了由于程序的并发执行,同一个程序运行的结果会有所区别;并且知道了使用调用lockf()来给每一个子进程加锁,来实现进程之间的互斥。更重要的是通过这次实验使我学会了如何在linux的环境下使用kdevelop来编辑和编译程序。总之通过这次上机实验让我学到了许多书本上面学不到的知识,锻炼了自己的动手能力和编程的能力。参考文献汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.王清,李光明.《计算机操作系统》.冶金工业出版社.孙钟秀等.操作系统教程.高等教育出版社曾明.Linux操作系统应用教程.陕西科学技术出版社.张丽芬,刘利雄.《操作系统实验教程》.清华大学出版社.孟静,操作系统教程原理和实例分析.高等教育出版社周长林,计算机操作系统教程.高等教育出版社张尧学,计算机操作系统教程,清华大学出版社任满杰,操作系统原理实用教程,电子工业出版社致谢这次课程设计使我学到了很多东西,真正做到了理论与实践相结合,得到了软件工程的综合训练,大大地提高了解决实际问题的能力。当然,这与老师的指导和同学们的帮助是分不开的。在此我要诚心感谢李睿老师的耐心指导,他对工作认真负责的态度以及严谨治学的精神和深厚的理论水平深深影响了我。在整个设计过程当中给我提出了很多意见,并指出了许多错误和不足之处,使我受益匪浅。为他付出了个人的宝贵时间来辅导我们而表示忠心的感谢!还要感谢我们班的同学,他们在这次设计当中给了我很多帮助,没有他的帮助这次的课设是不可能顺利完成的。同时还要感谢孙钟秀,汤子瀛及张尧学等教授以及他们的书籍,为我提供了不少资料,使得这次设计能够按时完成。在他们的帮助下不仅完成了这次课程设计,同时也学到了不少东西,在此再次感谢他们对我的帮助和支持!附录:源程序代码使用系统调用fork()创建两个子进程的程序清单:#include<iostream>Usingnamespacestd;Intmain()(Intp1,p2;P1=fork();//获得fork函数的返回值赋给p1If(p1==0)cout<<”b”<<endl;Elseif(p1>0)(P2=fork();If(p2==0)cout<<”c”<<endl;Elseif(p2>0)cout<<”a”<<endl;}Return0;}修改程序之后,每一个进程循环显示一句话的程序清单:#include<iostream>Usingnamespacestd;Intmain()(Intp1,p2;P1=fork();//获得fork函数的返回值赋给p1If(p1==0)(For(inti=0;i<3;i++)(cout<<”daughter”<<i<<endl;}cout<<”b”<<endl;}Elseif(p1>0)(P2=fork();If(p2==0){For(inti=0;i<3;i++)(cout<<”son”<<i<<endl;}cout<<”c”<<endl;}Elseif(p2>0)(For(inti=0;i<3;i++)(cout<<”parent”<<i<<endl;}

cout<<”a”<<endl;}}Return0;}在程序中使用调用lockf()来给每一个子进程加锁的程序清单:#include<iostream>Usingnamespacestd;Intmain()(Intp1,p2;P1=fork();//获得fork函数的返回值赋给p1If(p1==0)(lockf(1,1,0);//加锁For(inti=0;i<3;i++)(cout<<”daughter”<<i<<endl;}cout<<”b”<<endl;lockf(1,0,0);//解锁}Elseif(p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论