实验五 软中断通信 实验目的 1、了解什么是信号 2、熟悉 LINUX 系统中进程之间软中断通信的基本原理 实验内容 1、编写程序:用 fork( )创建两个子进程,再用系统调用 signal( )让父进程捕捉键盘上来的中断信号(即按^c 键);捕捉到中断信号后,父进程用系统调用 kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process1 is killed by parent
Child process2 is killed by parent
父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed
2、分析利用软中断通信实现进程同步的机理 实验指导 一、信号 1、信号的基本概念 每个信号都对应一个正整数常量(称为 signal nu mber,即信号编号
定义在系统头文件中),代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件
每个进程在运行时,都要通过信号机制来检查是否有信号到达
若有,便中断正在执行的程序,转向与该信号相对应的处理程序,以完成对该事件的处理;处理结束后再返回到原来的断点继续执行
实质上,信号机制是对中断机制的一种模拟,故在早期的UNIX 版本中又把它称为软中断
信号与中断的相似点: (1)采用了相同的异步通信方式; (2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序; (3)都在处理完毕后返回到原来的断点; (4)对信号或中断都可进行屏蔽
信号与中断的区别: (1)中断有优先级,而信号没有优先级,所有的信号都是平等的; (2)信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行; (3)中断响应是及时的,而信号响应通常都有较大的时间延迟
信号机制具有以下三方面的功能: (1)发