易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 信号signal处理机制 二

二、信 号 机 制
上 一节中介绍了信号的基本概念,在这一节中,我们将介绍内核如何实现信号机制。即内核如何向一个进程发送信号、进程如何接收一个信号、进程怎样控制自己对信 号的反应、内核在什么时机处理和怎样处理进程收到的信号。还要介绍一下setjmp和longjmp在信号中起到的作用。
1、内核对信号的基本处理方法
内 核给一个进程发送软中断信号的方法,是在进程所在的进程表项的信号域设置对应于该信号的位。这里要补充的是,如果信号发送给一个正在睡眠的进程,那么要看 该进程进入睡眠的优先级,如果进程睡眠在可被中断的优先级上,则唤醒进程;否则仅设置进程表中信号域相应的位,而不唤醒进程。这一点比较重要,因为进程检 查是否收到信号的时机是:一个进程在即将从内核态返回到用户态时;或者,在一个进程要进入或离开一个适当的低调度优先级睡眠状态时。
内核处理一个进程收到的信号的时机是在一个进程从内核态返回用户态时。所以,当一个进程在内核态下运行时,软中断信号并不立即起作用,要等到将返回用户态时才处理。进程只有处理完信号才会返回用户态,进程在用户态下不会有未处理完的信号。
内 核处理一个进程收到的软中断信号是在该进程的上下文中,因此,进程必须处于运行状态。前面介绍概念的时候讲过,处理信号有三种类型:进程接收到信号后退 出;进程忽略该信号;进程收到信号后执行用户设定用系统调用signal的函数。当进程接收到一个它忽略的信号时,进程丢弃该信号,就象没有收到该信号似 的继续运行。如果进程收到一个要捕捉的信号,那么进程从内核态返回用户态时执行用户定义的函数。而且执行用户定义的函数的方法很巧妙,内核是在用户栈上创 建一个新的层,该层中将返回地址的值设置成用户定义的处理函数的地址,这样进程从内核返回弹出栈顶时就返回到用户定义的函数处,从函数返回再弹出栈顶时, 才返回原先进入内核的地方。这样做的原因是用户定义的处理函数不能且不允许在内核态下执行(如果用户定义的函数在内核态下运行的话,用户就可以获得任何权 限)。
在信号的处理方法中有几点特别要引起注意。第一,在一些系统中,当一个进程处理完中断信号返回用户态之前,内核清除用户区中设 定的对该信号的处理例程的地址,即下一次进程对该信号的处理方法又改为默认值,除非在下一次信号到来之前再次使用signal系统调用。这可能会使得进程 在调用signal之前又得到该


相关文档:

Connection reset by peer > Linux 下的错误 error.h

问题:两台DVR同时连接同一台2路的DVS,其中一台DVR正常连接DVS的两路输出,预览也正常。
         而另一台DVR只能连上DVS的1路输出,另一路怎么也连不上。
        
         跟踪发现,D ......

Redhat Linux AS4 ls 文件夹 颜色(蓝色)的 改变方法

文本界面下,红帽用蓝色作为ls的目录的颜色,配合他的黑色背景,感觉太暗了,看不清。
改成别的颜色的方法:
首先,
# vi
/etc/DIR_COLORS
内的设定“DIR 01;34”,为ls命令的目录的颜色设置,01表示粗体,34表示字体蓝色。
我把它
改成了“DIR 01;37;44”,37是字体白色,44是字背景蓝色, ......

Linux下安装mysql

1:下载社区版的mysql,
     要下载两个文件,分别为:MySQL-server-community-5.1.46-1.rhel5.i386.rpm
                               ......

linux 下which、whereis、locate、find区别

当我们需要某个文件或目录时,而又不知道该文件放在什么地方,怎么办?
在windows下面,可以通过“搜索”功能进行查找,而在linux下,同样有相同的功能:
which       查看可执行文件的位置
whereis     查看文件的位置
locate    &n ......

iphone 3.1.2开发环境搭建——linux平台

一、引子
前段时间看到了apple公司发布了iphone os4.0的预览视频,iphone终于打算支持多任务了,尤其是对于预览视频中的skype软件的展示让人印象深刻。
一般来说,想做一名正规的iphone应用开发者应当至少准备三件事情:
(1)一台apple的电脑
可以是mac book或者mac mini,国内比较“节俭”的公司大都选 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号