莱昂氏UNIX源代码分析(14).docVIP

  • 1
  • 0
  • 约9.62千字
  • 约 20页
  • 2023-11-04 发布于浙江
  • 举报
莱昂氏UNIX源代码分析(14) 下载 第13章 软 件 中 断 本章主要涉及文件“ sig.c”的内容。“sig.c”文件引进了进程之间通信的一种新机制。特 别地,这种新机制提供了一种使“用户态”进位可被中断、转移或终止的方法,而造成这种 中断、转移或终止的原因可以是另一个进程的动作、击错或操作员的操作。 在本章的讨论中,我们经慎重考虑特地用“软件中断” (software interrupt)代替术语“信 号”(signal)。“信号”在 UNIX环境中的涵义与普通英语中的用法有相当区别,所以为了不引 起误解,我们避免使用该术语。 UNIX识别 20种(见0113行的 NSIG定义)不同类型的软件中断,如果读者仔细阅读 UPM的 SIGNAL(II),那么可以发现其中的 13种具有标准名字和含意。中断类型,,被解释为“无中 断”(no interrupt)。 在每个进程的 ppda区中有一整型数组“ u.u_signal”,其长度为“ NSIG”。其中每一项对应 于一个不同类型的软件中断,并定义了该进程遇到此种软件中断时应采取的动作 (如表13-1所 示)。 表13-1 软件中断的种类及涵义 u_signal当,〔n〕 n中断发生时 ,此进程将终止自身 奇数,非 0 忽略此软件中断 偶数,非 0 该值为用户空间中一过程的起始地址,应立即执行该过程 中断类型, 9(SIGKIL)是非常特殊的一种, UNIX保证“ u.u_signal〔9〕”的值一直为 0, 所以若进程由于“ SIGKIL”而中断,则它总是终止自身。 13.1 设置期望动作 每个进程都可设置它自己的“ u.u_signal〔 〕”数组中各项 (除u.u_signal〔9〕以外)的值, 以指定将来发生相应类型中断时应采取的动作。用户程序的编写人员用“ signal”系统调用实 现这一类 (参见UPM中的SIGNAL(II))。 例如,若程序员希望忽略,,软件中断 (用户在终端上击删除键,则产生此软件中断 ),那 么他应当在“ C”程序中,用下列系统调用将“ u.u_signal〔,〕”设置为 1: “signal(2,1);” 13.2 对进程造成中断 在进程“ proc”结构中包含有“ p_sig”项(0363),将其值设置为某一中断类型编号 (亦即 在1至NSIG,1之间的一个值 ),那么对该进程就造成了一个中断。 13 第章软件中断289 下载 即使所影响进程及其 ppda区已换出至磁盘上,也总是可以直接存取“ p_sig”。显然,这种 机构只允许每一个进程在任一时刻仅有一个中断等待处理。该等待处理的中断总是“ p_sig” 即最近一次设置的值所对应的中断,唯一的例外是类型为 9的中断,一旦将“ p_sig”设置为 9, 那么后面发生中断时就不再能重新设置“ p_sig”,也就是说,,中断是占绝对优势的。 13.3 作用 软件中断的作用不会立即产生。如果受影响的进程当前正在运行,那么经短时间延迟后, 软件中断的作用就可能产生。如果受影响的进程已被挂起或者其映像已被换出到磁盘上,那 么软件中断就可能经过相当长的时间后才能起作用。 对于软件中断的规定动作总是由受影响的进程自己执行并施加到自身的,因此只有当所 影响的进程是活动进程时,软件中断的作用才可能产生。 如果软件中断的相应动作是执行一个用户定义的过程,那么为了实现这一点,核心态进 程要对用户态栈作调整使其符合下列状态:刚刚进入该软件中断对应的用户定义过程,在执 行其第 1条指令之前立即被中断 (硬件类型 )。于是当系统从核心态以一般方式返回至用户态时, 由于用户栈调整后的作用,下一条执行的用户态指令就是指定过程的第 1条指令。 13.4 跟踪 UNIX在软件中断设施基础上稍加扩充又提供了一种非常强有力但效率在某种程度上较低 的机构,使用这种机构父进程可以监控其一个或多个子进程的进展状况。 13.5 过程 因为与软件中断相关的各过程之间的关系初看起来会使人感到困惑,所以在逐个介绍它 们之前,先对它们作一些简要说明。 13.5.1 期望动作的设置 “ssig”(3614)实现,48系统调用,其功能主要是设置数组“ u.u_signal”中一个元素的值。 13.5.2 造成软件中断 “kill”(3630)实现,37系统调用,其功能是对指定标识号的进程造成一指定的中断。 “signal”(3949)对由一个指定的终端所控制的或启动的所有进程造成一次指定的软件中断。 “psignal”(3963)的作用是实际设置“ p_sig”,它由“kill”(3649)和“signal”(3955)调用。 (trap(2793、2818)和pipe(7828)

文档评论(0)

1亿VIP精品文档

相关文档