2022年操作系统课程设计方案信号机制实验 .docx
《2022年操作系统课程设计方案信号机制实验 .docx》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计方案信号机制实验 .docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 写在前面:这是 操作系统课程设计试验报告( 信号机制试验),前半部分是试验手册上的内容(老师发的),后面有该试验的试验报告,这个是我自己做的,不是网上搜来 的, 肯定原创 ,现在免费共享到文库上,目的是为了沟通和共享;以后会边做边共享;虽然试验报告已经被老师审核通过,但假如仍有不对的地方,请斧正;试验手册内容:一 信号机制试验试验目的 1、明白什么是信号 2、熟识 LINUX 系统中进程之间软中断通信的基本原理 试验内容 1、编写程序:用 fork 创建两个子进程,再用系统调用 signal让父进程捕 c 键);捕获到中断信号后,父进程用系统调
2、用 捉键盘上来的中断信号(即按 kill 向两个子进程发出信号,子进程捕获到信号后分别输出以下信息后终止:Child process1 is killed by parent. Child process2 is killed by parent. 父进程等待两个子进程终止后,输出如下的信息后终止:Parent process is killed. 2、分析利用软中断通信实现进程同步的机理 试验指导 一、信号1、信号的基本概念 每个信号都对应一个正整数常量称为 signal number,即信号编号;定义在系统头文件 中,代表同一用户的诸进程之间传送事先商定的信息的类 型,用于通知某进程发生了
3、某反常大事;每个进程在运行时,都要通过信号机制来检查是否有信号到达;如有,便中断正在执行的程序,转向与该信号相对 应的处理程序,以完成对该大事的处理;处理终止后再返回到原先的断点连续 执行;实质上,信号机制是对中断机制的一种模拟,故在早期的 UNIX 版本中 又把它称为软中断;信号与中断的相像点:(1)采纳了相同的异步通信方式;(2)当检测出有信号或中断恳求时,都暂停正在执行的程序而转去执行相 应的处理程序;(3)都在处理完毕后返回到原先的断点;名师归纳总结 - - - - - - -第 1 页,共 10 页精选学习资料 - - - - - - - - - (4)对信号或中断都可进行屏蔽;信号
4、与中断的区分:(1)中断有优先级,而信号没有优先级,全部的信号都是公平的;行;(2)信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运(3)中断响应是准时的,而信号响应通常都有较大的时间推迟;信号机制具有以下三方面的功能:(1)发送信号;发送信号的程序用系统调用 kill 实现;(2)预置对信号的处理方式;接收信号的程序用 式的预置;signal 来实现对处理方(3)收受信号的进程按事先的规定完成对相应大事的处理;2、信号的发送 信号的发送,是指由发送进程把信号送到指定进程的信号域的某一位上;假如目标进程正在一个可被中断的优先级上睡眠,核心便将它唤醒,发送进程 就此终止;一个进程可能
5、在其信号域中有多个位被置位,代表有多种类型的信号到达,但对于一类信号,进程却只能记住其中的某一个;进程用 kill 向一个进程或一组进程发送一个信号;3、对信号的处理 当一个进程要进入或退出一个低优先级睡眠状态时,或一个进程即将从核心态返回用户态时,核心都要检查该进程是否已收到软中断;当进程处于核心态时,即使收到软中断也不予理会;只有当它返回到用户态后,才处理软中断 信号; 对软中断信号的处理分三种情形进行:(1)假如进程收到的软中断是一个已打算要忽视的信号(进程不做任何处理便立刻返回;function=1),(2)进程收到软中断后便退出(function=0);(3)执行用户设置的软中断处理
6、程序;二、所涉及的中断调用1、kill 系统调用格式参数定义int killpid,sig int pid,sig;其中, pid 是一个或一组进程的标识符,参数sig 是要发送的软中断信号;(1)pid0 时,核心将信号发送给进程 pid;(2)pid=0 时,核心将信号发送给与发送进程同组的全部进程;(3)pid=-1 时,核心将信号发送给全部用户标识符真正等于发送进程的有效用户标识号的进程;2、signal 预置对信号的处理方式,答应调用进程掌握软中断信号;名师归纳总结 系统调用格式signalsig,function 第 2 页,共 10 页头文件为#include 参数定义- - -
7、 - - - -精选学习资料 - - - - - - - - - signalsig,function int sig;void *func 其中 sig 用于指定信号的类型, sig 为 0 就表示没有收到任何信号,余者如下表:值 名 字 说 明01 SIGHUP 挂起( hangup)02 SIGINT 中断,当用户从键盘按 c 键或 break键时 (输入方式 Ctrl+C )03 SIGQUIT 退出,当用户从键盘按 quit 键时04 SIGILL 非法指令05 SIGTRAP 跟踪陷阱( trace trap),启动进程,跟踪代码的执行06 SIGIOT IOT 指令07 SIGE
8、MT EMT 指令08 SIGFPE 浮点运算溢出09 SIGKILL 杀死、终止进程10 SIGBUS 总线错误11 SIGSEGV 段违例( segmentation violation ),进程试图去拜访其虚地址空间以外的位置12 SIGSYS 系统调用中参数错,如系统调用号非法13 SIGPIPE 向某个非读管道中写入数据14 SIGALRM 闹钟;当某进程期望在某时间后接收信号时发此信号15 SIGTERM 软件终止( software termination)16 SIGUSR1 用户自定义信号 1 17 SIGUSR2 用户自定义信号 2 18 SIGCLD 某个子进程死19 S
9、IGPWR 电源故障function:在该进程中的一个函数地址,在核心返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号 SIGKILL ,SIGTRAP 和 SIGPWR以外的信号,核心自动地重新设置软中断信号处理程序的值为 SIG_DFL (进程终止) ,一个进程不能捕获 SIGKILL 信号;function 的说明如下:(1)function=1(即 SIG_IGN )时,进程对sig 类信号不予理会,亦即 屏蔽了该类信号;(2)function=0即 SIG_DFL 时,缺省值,进程在收到sig 信号后应终止自己 ;(3)function 为非 0、非 1 类整数时,
10、function 的值即作为信号处理程序的 指针;三、参考程序 #include #include #include void waiting ,stop ;名师归纳总结 - - - - - - -第 3 页,共 10 页精选学习资料 - - - - - - - - - int wait_mark;main int p1,p2,stdout; whilep1=fork=-1 ; /*创建子进程 p1*/ if p10 whilep2=fork=-1 ; /*创建子进程 p2*/ ifp20 wait_mark=1;signalSIGINT,stop; /*接收到 c 信号,转 stop*/ w
11、aiting ;killp1,16 ; /*向 p1 发软中断信号 16*/ killp2,17 ; /*向 p2 发软中断信号 17*/ wait0; /*同步 */ wait0;printfParent process is killed.n; else exit0;17,转 stop*/ wait_mark=1;signal17,stop; /* 接收到软中断信号waiting ;lockfstdout,1,0;printfChild process 2 is killed by parent.n ;lockfstdout,0,0;exit0; else wait_mark=1;sign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统课程设计方案信号机制实验 2022 操作系统 课程设计 方案 信号 机制 实验
限制150内