linux内核网络源码--通知链

内核很多子系统之间有很强依赖其中一个子系统侦测或者产生事件其他子系统可能都有兴趣为了实现这种交互需求linux使用了所谓通知

本章我们看到

通知如何声明以及网络代码定义了哪些

内核子系统如何通知注册

内核子系统如何链上产生通知信息

注意通知连只在内核子系统之间使用内核用户空间之间通知信息则是依赖其他机制第三章介绍那些

使用通知原因

假设我们如图4-1所示带有四个接口linux路由器显示了路由器五个网络之间关系还有一份简化路由表

让我们看看4-1拓扑结构几个例子网络A直接连接到RT接口eth0网络F没用直接链接RT但是RTeth3直接另一个路由器其他接口地址IP1,并且第二个路由器知道如何联系网络F其他案例都很类似简而言之有些网络直接连接其他网络需要一个或者多个附加路由器协助才能联系得到

有关路由代码如何处理这种情况详细描述参考第七部分本章焦点通知角色假设接口eth3由于网络断线使得管理命令失效或者造成硬件失败结果RT无法联系网络DEF因此应该路由表中删除谁将通知路由子系统接口失效那就是通知

上图稍微复杂例子路由子系统动态路由协议交互这种协议可以调整一个或者多个路由表使其吻合网络拓扑结构因此拓扑结构许可的时候就可以处理接口失败问题

上图RT可以通过网络A网络E联系网络F最初E是因为成本较少但是现在E已经无法联系因此路由比哦啊应该更新网络F路由网络A这种决策基础可能包括一些本地主机事件诸如设备注册删除以及路由配置中复杂因素路由协议在任何情况下管理路由比哦啊路由子系统必须其他子系统那里收到相关信息通知因而产生通知链需求

概论

通知就是一份简单的函数列表给定事件发生时候予以执行每个函数都让另一个子系统知道调用函数子系统所发生一个事件或者子系统侦测一个事件

因此没调通知链而言都有被动主动也就是所谓发布--订阅模型

被通知就是要求接收事件子系统而且提供回调函数予以调用

通知者 就是感受到一个事件调用函数子系统

所执行函数通知的子系统选取绝不是链条拥有者决定执行什么函数拥有者只是定义这份列表而已任何内核子系统可以链条注册一个回调函数接收通知信息

通知使用源码易于编写维护想象一下一个通用函数使用通知如何把一个事件通知外部子系统

if (subsystem_X_enabled)

do_something_1

if (subsystem_Y_enabled)

do_something_2

if (subsystem_Z_enabled)

do_something_3

换言之必须每个可能对一个事件感兴趣子系统引入一个条件结果每次添加一个子系统内核子系统维护就得添加一个子句

子系统维护不可能追踪每个添加内核咨询哦太难过然而每位子系统维护者都应该知道

1 自己来自其他子系统哪种事件感兴趣

2 自己知道的事件几种并且其他子系统可能感兴趣的事件又是哪几种

因此通知允许每个子系统其他咨询哦太难过共享发生事件无需知道究竟哪些子系统产生事件以及那些子系统为什么感兴趣

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的校园生活服务平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园生活服务平台(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

如何优化工服识别算法的漏报与误报问题

背景 在一些行业,例如工厂、建筑工地、医院等,员工通常需要穿着特定的工服,工服有助于识别员工、保护员工免受潜在危险以及维护生产环境的清洁度。因此,开发工服识别算法并运用在未穿工服检测系统具有重要的实际意义。 尽管工服…

【AI知识】Stable diffusion常用提示词分享

模型(Model) majicmixRealistic_v7 majicmixRealistic(麦橘写实)是融合了多种展现日常生活人物形象的写实风格模型,人物的外观更加接近现实生活,对于光影、皮肤、人物动态均有较好的表现,非常…

PLC数据采集网关的功能和特点-天拓四方

一、引言 随着工业自动化程度的不断提高,数据在生产线上的作用愈发重要。PLC作为工业自动化的核心设备,其数据采集和处理能力直接影响到整个生产线的效率和稳定性。而PLC数据采集网关,作为连接PLC与外部系统的桥梁,正日益受到人们…

Photoshop 2022 for Mac/win:释放创意,打造专业级的图像编辑体验

在数字图像编辑的世界里,Adobe Photoshop 2022无疑是那颗璀璨的明星。这款专为Mac和Windows用户设计的图像处理软件,以其卓越的性能和丰富的功能,赢得了全球数百万创作者的青睐。 Photoshop 2022在继承前代版本强大功能的基础上,…

探索全新商业模式:循环购的奥秘

你是否曾经遇到过这样的疑问:为何有的商家会推出“消费1000送2000”的优惠活动?每天还有钱可以领取,甚至还能提现?这背后究竟隐藏着怎样的商业逻辑?今天,作为你们的私域电商顾问,我将带大家深入…

洗牌算法、蓄水池抽样算法

洗牌算法 应用场景 Link 知道数组的长度N将数组随机打散 算法实现 按照下标 i 从后向前遍历&#xff0c;在 [0, i] 随机选择一个下标 rand_idx将 arr[rand_idx] 与 random_i[i] 进行交换 代码实现 void shuffle(vector<int>& arr) {for (int i arr.size()…

使用 docker-compose 搭建个人博客 Halo

说明 我这里使用的是 Halo 作为博客的工具&#xff0c;毕竟是开源了&#xff0c;也是使用 Java 写的嘛&#xff0c;另外一点就是使用 docker 来安装&#xff08;自动挡&#xff0c;不用自己考虑太多的环境因素&#xff09;&#xff0c;这样子搭建起来更快一点&#xff0c;我们…

刷!简单的转录组分析+Cytoscape三小时工作量,思路易复现

说在前面 两样本孟德尔随机化应该大伙都了解的不少&#xff0c;不过今天看到一篇&#xff0c;有点“料”的文章&#xff0c;一句话总结&#xff1a;Cytoscape乱拳打死老师傅&#xff0c;通篇除了WGCNA、差异分析是作为常规的转录组分析方法&#xff0c;剩下的几乎都是ClueGO的…

Idea + maven 搭建 SSH (struts2 +hibernate5 + spring5) 环境

org.apache.struts struts2-core 2.3.35 org.apache.struts struts2-spring-plugin 2.3.35 org.apache.struts struts2-json-plugin 2.3.8 1.4 配置Java EE 坐标依赖 这里可以引入 servlet api&#xff0c;jstl 标签库等一系列工具 javax.servlet javax.servlet-api …

FPGA控制3步进电机驱动芯片和1直流电机驱动,用于工业打印控制

客户应用&#xff1a;DIY打印 主要功能&#xff1a; 1.支持触摸屏控制 2.支持WIFI无线控制 3.支持USB接口 4.支持网线有线控制 5.支持非标定制 6.支持光电感应接口 7.支持喷印材质木板&#xff0c;纸箱&#xff0c;石材&#xff0c;中纤板&#xff0c;钢材&#xff0c;管…

抖音APP运用的AI技术拆解

1.推荐系统&#xff08;RS&#xff09; 用户画像&#xff1a;根据用户的信息&#xff08;如地区、性别、年龄、收藏、关注......&#xff09;进行分析&#xff0c;构建用户画像&#xff0c;对用户进行分类&#xff1b; 行为分析&#xff1a;将用户的显形行为数据&#xff08;如…