实验4进程通信signal软中断.ppt_第1页
实验4进程通信signal软中断.ppt_第2页
实验4进程通信signal软中断.ppt_第3页
实验4进程通信signal软中断.ppt_第4页
实验4进程通信signal软中断.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1 第四章进程管理实验 4 1实验目的一 加深对进程概念的理解 明确进程和程序的区别二 进一步认识并发执行的实质三 分析进程争用资源的现象 学习解决进程互斥的方法四 了解Linux系统中进程通信的基本原理4 2准备知识4 2 1基本概念进程的概念进程与程序的区别并发执行的概念进程互斥的概念进程通信的基本原理 2 系统调用 图4 1系统调用的参数表方式 系统调用是一种进入系统空间的办法 通常 在OS的核心中都设置了一组用于实现各种系统功能的子程序 并将它们提供给程序员使用 程序员在需要OS提供某种服务的时候 便可以调用一条系统调用命令 去实现希望的功能 这就是系统调用 因此 系统调用就像一个黑箱子一样 对用户屏蔽了操作系统的具体动作而只是提供了调用功能的接口 系统调用与一般的过程调用有下述几方面的明显差别 1 运行在不同的系统状态 2 通过软中断进入 3 返回问题 当调用进程仍具有最高优先级时 才返回到调用进程继续执行 否则 将引起重新调度 以便让优先权最高的进程优先执行 4 嵌套调用 系统调用也可以嵌套进行 系统调用的实现 系统调用的实现与一般过程调用的实现相比 两者间有很大差异 对于系统调用 控制是由原来的用户态转换为系统态 这是借助于中断和陷入机制来完成的 在该机制中包括中断和陷入硬件机构及中断与陷入处理程序两部分 中断是指CPU对系统发生某事件时的一种响应 中断分为外中断和内中断 1 所谓外中断是指由于外部设备事件所引起的中断 2 内中断则是指由于CPU内部事件所引起的中断 如程序出错 地址越界 电源故障等 内中断 trap 被译为 捕获 或 陷入 陷入是由于执行了现行指令所引起的 中断则是由于系统中某事件引起的 该事件与现行指令无关 进程创建与软中断通信 fork系统调用 由于进程为执行程序的环境 因此在执行程序前必须先建立这个能 跑 程序的环境 Linux系统提供系统调用拷贝现行进程的内容 以产生新的进程 调用fork的进程称为父进程 而所产生的新进程则称为子进程 子进程会承袭父进程的一切特性 但是它有自己的数据段 也就是说 尽管子进程改变了所属的变量 却不会影响到父进程的变量值 父进程和子进程共享一个程序段 但是各自拥有自己的堆栈 数据段 用户空间以及进程控制块 换言之 两个进程执行的程序代码是一样的 但是各有各的程序计数器与自己的私人数据 9 linux是多用户和多进程的操作系统 进程在操作系统中的创建 都会生成一个进程描述块 描述当前进程的所有信息 包括 数据段 代码段 堆栈段的地址 当前进程的环境变量 文件描述符等 fork函数过程 操作系统先创建一个进程描述块 然后把父进程的所有进程描述符的信息精确拷贝过来 和父进程一样 除了进程ID不一样外 代码段共享 数据段和堆栈段复制 所有的寄存器的值全部精确拷贝 文件描述符也许精确拷贝 fork的返回值 fork在父进程空间中返回子进程的PID 在子进程空间中返回0 10 图3 2父进程和子进程的内存映像 11 一 fork 函数 用于创建一个新进程 子进程 intfork pid fork if pid0 printf Theparentprocessisrunningnow n exit 0 进程创建与软中断通信 信号与软中断信号是OS系统中使用的一种进程间通信方式 它提供一种处理异步事件的方法 例如 用户可以通过一个中断指令中断一个程序的执行 两个进程间可以通过发送信号通知一个异步事件 系统或进程通过信号报告突发的硬件故障 如非法指令或运算溢出 此外 系统还可以通过信号实现软中断 即用户进程向自身发送信号 以调用某些系统功能 或转入某些特定处理 进程创建与软中断通信 软中断 不同于普通中断 它是指通过随机向进程发送信号 通知进程完成某事件 只有执行状态的进程才会响应该信号 与处理普通中断一样 进程转而执行信号要求的处理 如果信号到达时 进程处于执行状态以外的其他状态 则信号不会被响应 进程创建与软中断通信 系统调用signal是进程用来设定某个信号的处理方法 系统调用kill是用来发送信号给指定进程的 这两个调用可以形成信号的基本操作 处理信号有三种类型 进程接收到信号后退出 进程忽略该信号 进程收到信号后执行用户设定用系统调用signal的函数 信号SIGINT由按下Ctrl C发出 信号SIGQUIT由按下Ctrl 发出 Wait 函数Wait 函数常用来控制父进程与子进程的同步 在父进程中调用wait 函数 则父进程被阻塞 进入等待队列 等待子进程结束 当子进程结束时 会向父进程发出SIGCHLD信号 当接收到信号后 父进程从wait 函数返回继续执行原程序 Exit 函数是进程结束最常调用的函数 在正常终止时 exit 函数返回进程结束状态 进程创建与软中断通信 include include include includeintwait flag voidstop main intpid1 pid2 wait flag 1 signal 2 stop orsignal 14 stop 进程创建与软中断通信 while wait flag 1 while pid1 fork 1 if pid1 0 while pid2 fork 1 if pid2 0 wait flag 1 sleep 5 kill pid1 16 kill pid2 17 wait 0 wait 0 printf Parentprocessiskilled n exit 0 进程创建与软中断通信 else wait flag 1 signal 17 stop while wait flag 1 printf Childprocess2iskilledbyparent n exit 0 进

温馨提示

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

评论

0/150

提交评论