码迷,mamicode.com
首页 > 其他好文 > 详细

异步机制

时间:2019-03-13 10:47:15      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:丢失   lin   函数   操作   方法   epoll   模拟   实时   排队   

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

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

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

信号的种类:

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

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

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

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

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

信号的生命周期:

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

异步机制

标签:丢失   lin   函数   操作   方法   epoll   模拟   实时   排队   

原文地址:https://www.cnblogs.com/chen-cai/p/10521410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!