欢迎来到天天文库
浏览记录
ID:38657706
大小:19.50 KB
页数:5页
时间:2019-06-17
《实验三 软中断通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三软中断通信实验目的1、了解什么是信号2、熟悉LINUX系统中进程之间软中断通信的基本原理实验内容1、编写程序:用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Childprocess1iskilledbyparent!Childprocess2iskilledbyparent!父进程等待两个子进程终止后,输出如下的信息后终止:Parentprocessiski
2、lled!2、分析利用软中断通信实现进程同步的机理实验指导一、信号1、信号的基本概念每个信号都对应一个正整数常量(称为signalnumber,即信号编号。定义在系统头文件中),代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件。每个进程在运行时,都要通过信号机制来检查是否有信号到达。若有,便中断正在执行的程序,转向与该信号相对应的处理程序,以完成对该事件的处理;处理结束后再返回到原来的断点继续执行。实质上,信号机制是对中断机制的一种模拟,故在早期的UNIX版本中又把它称为软中断
3、。信号与中断的相似点:(1)采用了相同的异步通信方式;(2)当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;(3)都在处理完毕后返回到原来的断点;(4)对信号或中断都可进行屏蔽。信号与中断的区别:(1)中断有优先级,而信号没有优先级,所有的信号都是平等的;(2)信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行;(3)中断响应是及时的,而信号响应通常都有较大的时间延迟。信号机制具有以下三方面的功能:(1)发送信号。发送信号的程序用系统调用kill()实现;(2)预置对信号的处理方式。接收信号
4、的程序用signal()来实现对处理方式的预置;(3)收受信号的进程按事先的规定完成对相应事件的处理。2、信号的发送信号的发送,是指由发送进程把信号送到指定进程的信号域的某一位上。如果目标进程正在一个可被中断的优先级上睡眠,核心便将它唤醒,发送进程就此结束。一个进程可能在其信号域中有多个位被置位,代表有多种类型的信号到达,但对于一类信号,进程却只能记住其中的某一个。进程用kill()向一个进程或一组进程发送一个信号。3、对信号的处理当一个进程要进入或退出一个低优先级睡眠状态时,或一个进程即将从核心态返回用户态时,核心都要检查该进
5、程是否已收到软中断。当进程处于核心态时,即使收到软中断也不予理睬;只有当它返回到用户态后,才处理软中断信号。对软中断信号的处理分三种情况进行:(1)如果进程收到的软中断是一个已决定要忽略的信号(function=1),进程不做任何处理便立即返回;(2)进程收到软中断后便退出(function=0);(3)执行用户设置的软中断处理程序。二、所涉及的中断调用1、kill()系统调用格式intkill(pid,sig)参数定义intpid,sig;其中,pid是一个或一组进程的标识符,参数sig是要发送的软中断信号。(1)pid>0时
6、,核心将信号发送给进程pid。(2)pid=0时,核心将信号发送给与发送进程同组的所有进程。(3)pid=-1时,核心将信号发送给所有用户标识符真正等于发送进程的有效用户标识号的进程。2、signal()预置对信号的处理方式,允许调用进程控制软中断信号。系统调用格式signal(sig,function)头文件为 #include参数定义signal(sig,function)intsig;void(*func)()其中sig用于指定信号的类型,sig为0则表示没有收到任何信号,余者如下表:值名字说明01SI
7、GHUP挂起(hangup)02SIGINT中断,当用户从键盘按^c键或^break键时03SIGQUIT退出,当用户从键盘按quit键时04SIGILL非法指令05SIGTRAP跟踪陷阱(tracetrap),启动进程,跟踪代码的执行06SIGIOTIOT指令07SIGEMTEMT指令08SIGFPE浮点运算溢出09SIGKILL杀死、终止进程10SIGBUS总线错误11SIGSEGV段违例(segmentationviolation),进程试图去访问其虚地址空间以外的位置12SIGSYS系统调用中参数错,如系统调用号非法13
8、SIGPIPE向某个非读管道中写入数据14SIGALRM闹钟。当某进程希望在某时间后接收信号时发此信号15SIGTERM软件终止(softwaretermination)16SIGUSR1用户自定义信号117SIGUSR2用户自定义信号218SIGCLD某个子进
此文档下载收益归作者所有