异步机制

Posted chen-cai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步机制相关的知识,希望对你有一定的参考价值。

Linux 内核中使用到异步机制的地方:
  信号,这是一种进程间通信的异步机制 【通信】
  epoll,这是一种高效I/O的异步通信机制 【I/O】

信号的本质:
  软中断信号(signal,又简称为信号),用来通知进程发生了异步事件。
在软件层次上,信号是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。
信号是进程通信机制中唯一的异步通信机制。(一个进程不必通过任何操作来等待信号的到达,进程也不知道信号到底什么时候到达)

进程收到信号后,有3种处理方法:
  1. 类似中断的处理程序。对于需要处理的信号,进程可以指定处理函数,由该函数去处理。
  2. 忽略来的信号
  3. 对所来信号保留系统的默认值(对大部分信号的缺省操作是让进程终止)

信号的种类:

  1. 可靠信号与不可靠信号

  2. 实时信号与非实时信号

不可靠信号:信号值小于SIGRTMIN的信号都是不可靠信号,不可靠 ---- 这些信号有可能丢失

可靠信号:由于上面的信号不可靠,所以对其进行改进和扩充,引入可靠信号,将信号值位于SIGRTMINSIGRTMAX之间信号定义为可靠信号(这些信号,支持排队,不会丢失)

早期Unix系统只定义了32种信号(这32种信号都有确定的用途和含义,并且每种信号都有各自默认的缺省操作,比如:按键盘的ctrl+c,会产生SIGINT信号,默认的缺省操作就是将 进程终止),这32种信号是非实时信号(非实时信号都不支持排队,都是不可靠信号),后32种信号是实时信号(实时信号都支持排队,都是可靠信号)

信号的生命周期:

  对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:

以上是关于异步机制的主要内容,如果未能解决你的问题,请参考以下文章

常见异步机制分析

转载:java 异步机制与同步机制的区别

[转]异步机制与异步原理

JavaScript异步机制

异步执行的运行机制

Linux之异步通知机制分析