文件名称:,信号处理方式-UNIX(V6)内核阅读
文件大小:325KB
文件格式:PPT
更新时间:2024-05-12 12:28:08
UNIX(V6)内核阅读
3,信号处理方式 。进程接到信号后,在一定时机对其进行处理。处理的方式有三种:一是终止本进程,这是针对用户态下故 障信号最经常采用的一种方式;二是忽略该信号,不作任何处理;三是执行一段预先编制好的信号处理程序。 不同类型的信号的处理方式记录在u-signal[NSIG]中。 。信号处理方式的预置 u-signal[NSIG]表中各元素的值可用系统调用signal(sig,func)加以改变,系统调用signal的处理程序是ssig: ssig( ) { register a; a=u.u-arg[0]; if (a<=0 or a>=NSIG or a==SIGKIL) { u.u-error=EINVAL; return; } u.u-ar0[R0]=u.u-signal[a]; u.u-signal[a]=u.u-arg[1]; if (u.u-procp-sig==a) u.u-procpp-sig=0; } 系统调用signal的两个参数sig和func在陷入处理中 送入u-arg[0]和u-arg[1]。在ssig中,先检查信号类 型数是否合法 :如果不在1—19范围或是SIGKIL 则为非法信号,如果信号合法,则将该信号原处理 方式存入栈中存放r0的单元接着将已存入u-arg[1] 中 的新的处理方式func送入信号表中相应项。如果该 进程在此前已接到这种信号,因为其处理方式发生 了变化,所以将其清除。