linux 进程管理实验.ppt_第1页
linux 进程管理实验.ppt_第2页
linux 进程管理实验.ppt_第3页
linux 进程管理实验.ppt_第4页
linux 进程管理实验.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1 第四章进程管理实验 4 1实验目的一 加深对进程概念的理解 明确进程和程序的区别二 进一步认识并发执行的实质三 分析进程争用资源的现象 学习解决进程互斥的方法四 了解Linux系统中进程通信的基本原理4 2准备知识4 2 1基本概念进程的概念进程与程序的区别并发执行的概念进程互斥的概念进程通信的基本原理 2 4 2 2系统调用 图4 1系统调用的参数表方式 系统调用是一种进入系统空间的办法 通常 在OS的核心中都设置了一组用于实现各种系统功能的子程序 并将它们提供给程序员使用 程序员在需要OS提供某种服务的时候 便可以调用一条系统调用命令 去实现希望的功能 这就是系统调用 因此 系统调用就像一个黑箱子一样 对用户屏蔽了操作系统的具体动作而只是提供了调用功能的接口 3 4 2 3相关函数 一 fork 函数 用于创建一个新进程 子进程 intfork pid fork if pid 0 printf forkerror n exit 0 4 if pid 0 printf Thechildprocessisrunningnow n exit 0 if pid 0 printf Theparentprocessisrunningnow n exit 0 5 图3 2父进程和子进程的内存映像 6 二 wait 函数 用来控制父进程与子进程的同步 include include pid t wait int statloc 三 exit 函数 进程结束最常调用的函数 includevoidexit intstatus 四 kill 函数 用于删除执行中的程序或者任务kill intPID intIID 7 五 signal 函数 signal 函数是允许调用进程控制软中断信号的处理 includeintsig void func signal sig function 8 9 六 pipe 函数 pipe 函数用于创建一个管道 其调用格式为 includepipe intfp 2 10 4 3 1编制实现软中断通信的程序 Childprocess1iskilledbyparent Childprocess2iskilledbyparent Parentprocessiskilled 多运行几次编写的程序 简略分析出现不同结果的原因 4 3实验内容 11 4 3 2编制实现进程的管道通信的程序 使用系统调用pipe 建立一条管道线 两个子进程分别向管道写一句话 Childprocess1issendingamessage Childprocess2issendingamessage 而父进程则从管道中读出来自于两个子进程的信息 显示在屏幕上 要求 父进程先接收子进程P1发来的消息 然后再接收子进程P2发来的消息 12 4 4实验指导 4 4 1进程的软中断通信附 算法流程图 源代码 运行结果4 4 2进程的管道通信附 算法流程图 源代码 运行结果 13 4 4 1进程的软中断通信 参考程序源代码 include include include include 14 图4 3软中断通信程序流程图 15 intwait flag voidstop main intpid1 pid2 定义两个进程号变量signal 3 stop 或者signal 14 stop while pid1 fork 1 若创建子进程1不成功 则空循环 16 if pid1 0 子进程创建成功 pid1为进程号while pid2 fork 1 创建子进程2if pid2 0 wait flag 1 sleep 5 父进程等待5秒kill pid1 16 杀死进程1 17 kill pid2 17 杀死进程2wait 0 等待第1个子进程1结束的信号wait 0 等待第2个子进程2结束的信号printf nParentprocessiskilled n 18 exit 0 父进程结束 else wait flag 1 signal 17 stop 等待进程2被杀死的中断号17printf nChildprocess2iskilledbyparent n 19 exit 0 else wait flag 1 signal 16 stop 等待进程1被杀死的中断号16printf nChildprocess1iskilledbyparent n exit 0 20 voidstop wait flag 0 21 程序运行结果 Childprocess1iskilledbyparent Childprocess2iskilledbyparent Parentprocessiskilled Childprocess2iskilledbyparent Childprocess1iskilledbyparent Parentprocessiskilled 22 4 4 2进程的管道通信 参考程序源代码 include include includeintpid1 pid2 定义两个进程变量 23 图4 4管道通信程序流程图 24 main intfd 2 charOutPipe 100 InPipe 100 定义两个字符数组pipe fd 创建管道while pid1 fork 1 如果进程1创建不成功 则空循环 25 if pid1 0 如果子进程1创建成功 pid1为进程号lockf fd 1 1 0 锁定管道sprintf OutPipe nChildprocess1issendingmessage n 给Outpipe赋值write fd 1 OutPipe 50 向管道写入数据 26 sleep 5 等待读进程读出数据lockf fd 1 0 0 解除管道的锁定exit 0 结束进程1 27 else while pid2 fork 1 若进程2创建不成功 则空循环if pid2 0 lockf fd 1 1 0 sprintf OutPipe nChildprocess2issendingmessage n write fd 1 OutPipe 50 sleep 5 28 lockf fd 1 0 0 exit 0 else wait 0 等待子进程1结束read fd 0 InPipe 50 从管道中读出数据 29 printf s n InPipe 显示

温馨提示

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

评论

0/150

提交评论