分析信号处理机制与中断的异同 本文关键词:异同,中断,信号处理,机制,分析
分析信号处理机制与中断的异同 本文简介:目录摘要11引言11.1研究背景11.2研究目的和意义11.3主要研究工作12MINIX信号处理机制22.1MINIX信号处理基本原理22.2信号产生的条件32.3进程对信号的处理33MINIX中断处理机制33.1硬中断43.2软中断53.3异常54MINIX信号处理机制与中断的比较64.1信号与中
分析信号处理机制与中断的异同 本文内容:
目录
摘要1
1
引言1
1.1
研究背景1
1.2
研究目的和意义1
1.3
主要研究工作1
2
MINIX信号处理机制2
2.1
MINIX信号处理基本原理2
2.2
信号产生的条件3
2.3
进程对信号的处理3
3MINIX中断处理机制3
3.1硬中断4
3.2软中断5
3.3异常5
4MINIX信号处理机制与中断的比较6
4.1信号与中断的相似点6
4.2信号与中断的区别6
5总结6
致谢7
参考文献7
7
分析信号处理机制与中断的异同
摘要
本文详细说明了MINIX的信号处理机制,以及MINIX的中断机制,包括MINIX的硬中断,软中断和异常。并对信号处理机制和中断处理进行了对比,研究了它们适用的场合。
关键词:MINIX,信号,中断
1
引言
1.1
研究背景
信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和“信号“有些类似,同时,软中断又是和硬中断相对应的。
1.2
研究目的和意义
通过对MINIX系统的信号处理机制和中断机制的分析,更加深入理解MINIX操作系统的设计原理和实现机制。
1.3
主要研究工作
本文主要分析了MINIX信号处理机制和中断处理机制,并对两者进行了比较。
2
MINIX信号处理机制
2.1
MINIX信号处理基本原理
信号是异步的进程间通讯机制,是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号被描述成一种信息传递机制,而收到消息的进程未必在等待输入。在系统中定义了一组信号,每个信号都有一个默认的动作,进程可以通过系统调用来改变信号的响应方式,可以请求将一个信号处理函数与某个信号绑定在一起(sigkill除外)。操作系统对信号的处理可以分为三个不同的阶段:准备阶段,此时进程可以去修改它对信号的响应方式;响应阶段,此时信号已经发生,相应的动作也已经被激活执行;清理阶段:一个特殊的系统调用会去清理并恢复收到信号的进程的正常操作。
在MINIX中,信号处理的准备阶段完全由PM处理。因为所有需要的数据结构都位于PM的进程表中。对于每一个进程,都有几个sigset_t变量,这些都是位图,每一个可能的信号由它们中的一个数据位来表示。对于每一个进程,还有一个sigaction结构体数组,每个数组元素代表一个信号,如图1所示:
图1
sigaction结构体
在sigaction结构体中,一个变量用于保存用户自定义的信号处理函数的起始地址;另一个sigedt_t类型的变量用于设定被阻塞的信号。
2.2
信号产生的条件
产生信号的条件主要有以下几种:
1.
用户在终端按下某些键时,终端驱动程序会发送信号给前台进程,例如Ctrl-C产生SIGINT信号,Ctrl-/产生
SIGQUIT信号,
Ctrl-Z产生SIGTSTP信号。
2.
硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。例如当前进程执行了除以0
的指令,CPU
的运算单元会产生异常,内核将这个异常解释为
SIGFPE信号发送给进程。再比如当前进程访问了非法内存地址,
MMU会产生异常,内核将这个异常解释为SIGSEGV
信号发送给进程。
3.
一个进程调用kill(2)
函数可以发送信号给另一个进程。
4.
可以用kill(1)命令发送信号给某个进程,kill(1)
命令也是调用kill(2)函数实现的,如果不明确指定信号则发送SIGTERM信号,该信号的默认处理动作是终止进程。
5.
当内核检测到某种软件条件发生时也可以通过信号通知进程,例如闹钟超时产生SIGALRM信号,向读端已关闭的管道写数据时产生SIGPIPE信号。
2.3
进程对信号的处理
进程对信号的处理主要有以下几种:
1.
忽略此信号。
2.
执行该信号的默认处理动作。
3.
提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(Catch
)一个信号。
3
MINIX中断处理机制
中断是计算机内实现任务切换的最根本的原因,它使多任务操作系统成为可能。中断根据产生原因和处理方法的不同大致可分为三类:硬件中断,软中断和异常中断。MINIX中的中断就可分为这三类,当然在其它复杂的操作系统中可能还有其他分法。硬中断为来自硬件的中断,如:键盘输入,硬盘读写,时钟滴答等;软中断就是在程序中直接用汇编指令发起的中断。异常是指在程序代码运行或系统检测时发现的溢出,超界或硬件与操作系统不匹配等出错情况。
3.1硬中断
硬中断,就是由硬件引起的中断,就是由于某种原因,某个硬件操作引发中断服务程序,而将它的驱动任务加入到就绪队列或者直接运行的过程。中断硬件的细节与系统相关,由硬件设备产生的中断是一些电信号,它们首先由中断控制器进行处理。使用32位处理器的PC机通常有两片中断控制器芯片,其中每一个可以处理8个输入,但其中有一片为从片,它的输出线连到主片的一条输入线,这样一共可以挂接15个不同的外部设备,如图2所示:
图2
一台32位Intel
PC上的中断处理硬件
该图中,中断信号出现在右侧的IRQn信号线上。连到CPU
INT管脚的连接线通知CPU发生了中断。从CPU发出的INTA(中断应答)信号使负责中断的控制器芯片将数据放在系统数据总线上并通知处理器应执行哪个服务例程。
3.2软中断
软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果,实际上就是由软件来引发任务切换的机制,具体是指程序代码中包含像int
n的语句。
硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断。图3对硬件中断处理过程和使用软件中断机制的系统调用作了比较。
图3
(a)硬件中断的处理过程,(b)系统调用处理过程
3.3异常
异常是由CPU内部的各种错误引起的,可以把异常分为用户异常和系统异常,也可分成一般异常和严重异常,一般异常指那些确实发生了错误,但系统还是能照常运行的异常;严重异常是指一些严重影响系统的错误,比如硬件损坏,故障或与操作系统不匹配等。
异常的处理和中断机制相同,使用中断描述符表中的描述符。该表中的表项指向16个异常处理入口。这些入口从_divide_error开始,以_copr_error结束。根据是否将一个错误码压栈,这些入口分别跳转到exception或errexception。异常导致的结果各不相同,有的被忽略,有的导致系统崩溃,有的导致向进程发生消息。
4
MINIX信号处理机制与中断的比较
4.1信号与中断的相似点
(1)
采用了相同的异步通信方式;
(2)
当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序;
(3)
都在处理完毕后返回到原来的断点;
(4)
对信号或中断都可进行屏蔽。
4.2信号与中断的区别
(1)
中断有优先级,而信号没有优先级,所有的信号都是平等的;
(2)
信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行;
(3)
中断响应是及时的,而信号响应通常都有较大的时间延迟。
5
总结
本文详细说明了MINIX的信号处理机制,以及MINIX的中断机制,包括MINIX的硬中断,软中断和异常。并对信号处理机制和中断处理进行了对比。
硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断。
致谢
参考文献
[1].
Andrew
S.
Tanenbaum,Albert
S.
Woodhull.
Operating
Systems
Design
and
Implementation,Third
Edition,Pearson
Education,Inc.
2006.
[2].
汤子瀛
等.
计算机操作系统.
第3版.
西安电子科技大学出版社.
2011.
[3].
Bovet,D.P.
Understanding
the
Linux
Kernel.
O’Reilly
&
Associates,Inc.
2001.
[4].
网络资源.