异常控制流

异常分类:
中断:是异步发生的,来自处理外部的I/O设备信号的结果。
陷阱(陷入内核):实现系统调用,在用户程序和内核之间提供一个像函数调用一样的接口。
故障:能够被故障处理程序修正的错误。
终止:通常是由一些硬件引起的不可恢复的致命错误。

逻辑控制流(logical control flow )就是一个进程在逻辑上的执行过程,因为CPU并不是一直只在执行某个单独进程的指令,但是从某个单独的进程的角度来看,这个进程就像是(只是像而已,所以叫逻辑上)独占着CPU一样。

处理器提供一种机制,使进程可能在用户模式或内核模式下运行。在内核模式下,进程拥有更高的权限,比如能执行更多的指令、发起一次I/O操作等等。一个进程最初都是用户进程,只有通过异常才能到内核模式。在私有地址空间中,有一部分专门为内核模式分配的空间,包括代码、数据、堆和栈。

信号处理原则
当有多个信号到达时,遵循以下原则:
(1)待处理信号被阻塞:程序正在处理handler函数时,如果又捕获到了一个SIGINT信号,这时候并不会停止handler函数的处理,而是将这个SIGINT信号放到带处理程序的位置(阻塞),直到handler函数执行完毕返回以后才接受这个待处理信号;
(2)待处理信号不会排队等待:如果正在处理handler函数,接受到了2个信号,这时候先到的那个信号会变成待处理信号被阻塞,最后的那个信号直接被丢弃;
(3)系统调用可以被中断:诸如read、wait函数,会阻塞进程一段时间,当处理程序捕获到一个信号时,被中断的系统调用在处理程序返回的时候就不会再执行了。

posted on 2019-01-01 21:34  LG一直在努力  阅读(145)  评论(0编辑  收藏  举报

导航