首页
学习
活动
专区
圈层
工具
发布

Linux内核中断顶半部和底半部的理解

下图描述了Linux内核的中断处理机制。为了在中断执行时间尽量短和中断处理需完成的工作尽量大之间找到一个平衡点,Linux将中断处理程序分解为两个半部:顶半部和底半部。 ?   ...底半部几乎做了中断处理程序所有的事情,而且可以被新的中断打断,这也是底半部和顶半部的最大不同,因为顶半部往往被设计成不可中断。...尽管顶半部、底半部的结合能够善系统的响应能力,但是,僵化地认为Linux设备驱动中的中断处理一定要分两个半部则是不对的。如果中断要处理的工作本身很少,则完全可以直接在顶半部全部完成。   ...其他操作系统中对中断的处理也采用了类似于 Linux的方法,真正的硬件中断服务程序都斥尽量短。...在Linux内核中,用 softing_action结构体表征一个软中断,这个结构体包含软中断处理函数指针和传递给该函数的参数。

2.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    寻根究底,为什么Docker中的Alpine Linux镜像能这么小

    在此我有必要表示歉意,同时我需要补充这篇文章,对于Alpine Linux之所以这么小,再解释的更清楚一些。 1....同样,Debian与大都数Linux类似,都是使用的systemd。...使用了BusyBox,Apt以及OpenRC等一些轻量级实现 从这些做法上也能看出,Alpine的定位不是普通的Linux系统,它应该是为嵌入式Linux而生,几MB的系统大小,当然更适合嵌入式Linux...这也从另一个角度充分说明Linux系统的优秀,也就是只需要一个Linux内核,其它外围的一切几乎都是可以替代的,而仍然能保证Linux系统的运行与一致性。 幸运的是,Linux内核是开源的。...而正因为它是开源的,今天Linux才能造福世界。

    3.5K60

    半同步半异步模式以及Leader_Follwer模式

    半同步/半异步(half-sync/half-async ): 三、 半同步-半异步模型 http://www.cppblog.com/liangairan/articles/62917.html?...在网 上一份资料 中引用了一本貌似很经典的书 里的比喻:  ”   许多餐厅使用 半同步/半异步 模式的变体。...“    按照另一份似乎比较权威的文档的描述,要实现半同步/半异步模式,需要实现三层:异步层、同步层、队列层。...综合同步异步的有优点,就有了半同步半异步的设计模式。 这个模式中,高层使用同步I/O模型,简化编程。低层使用异步I/O模型,高效执行。...4.2 半同步半异步模式有下面的缺点: 跨边界导致的性能消耗,这是因为同步控制,数据拷贝和上下文切换会过度地消耗资源。 上层任务缺少异步I/O的实现。

    2.3K30

    【TinyWebServer】半同步半反应堆线程池

    IO复用:linux用select/poll函数实现IO复用模型,这两个函数也会使进程阻塞,但是和阻塞IO所不同的是这两个函数可以同时阻塞多个IO操作。...知道有数据可读或可写时,才真正调用IO操作函数 异步IO:linux中,可以调用aio_read函数告诉内核描述字缓冲区指针和缓冲区的大小、文件偏移及通知的方式,然后立即返回,当内核将数据拷贝到缓冲区后...Reactor 模型有三个重要的组件: 多路复用器:由操作系统提供,在 linux 上一般是 select, poll, epoll 等系统调用。...半同步/半异步模式 领导者/追随者模式 半同步/半反应堆 半同步/半反应堆并发模式是半同步/半异步的变体,将半异步具体化为某种事件处理模式....线程池分析 线程池的设计模式为半同步/半反应堆,其中反应堆具体为Proactor事件处理模式。

    45200
    领券