一个补丁迭代了16个版本后被撤,我的 Linux内核之旅!

深入解析Ubuntu与Linux内核版本关系:从映射机制到管理实践 Linux内核作为操作系统的核心,负责管理硬件资源、进程调度和系统安全。其版本迭代遵循主线开发模式,通过长期支持版本为下游发行版提供稳定基础。在技术价值层面,内核版本直接决定了硬件兼容性、性能优化和安全性能力。Ubuntu作为基于Debian的流行Linux发行版,采用独特的版本绑定策略:每个LTS版本会锁定一个经过充分测试的内核版本,并通过安全更新和硬件支持更新机制实现动态维护。理解Ubuntu发行版与内核版本的映射关系,能帮助开发者和运维人员有效管理**系统更新**与**硬件兼容性**,规避因内核不匹配 阅读详情

【优快云 编者按】一个好的开源项目,能够成长为一个全球性的开源项目,肯定有它的独特魅力所在。Linux内核守护者吴峰光博士特别为《新程序员001:开发者的黄金十年》撰文,生动细致地分享了他早年为Linux Kernel提交I/O预读取算法补丁的经历,过程颇为波折有趣,从中可以一窥Linux成为全球最大开源项目的关键。

作者 | 吴峰光 责编 | 张红月
出品 | 《新程序员》编辑部

Linux内核开发者社区普遍被认为是一个大神云集、充满挑战的社区,不仅是这个社区对于代码质量的高度挑剔,也因为网络上盛传这一项目的发起人——Linus Torvalds,是一个脾气不太好的“独裁者”:每一次他在邮件列表里发飙“骂人”,都会成为不大不小的新闻事件,让每一位好奇Linux项目的开发者们交头接耳。

在这里插入图片描述

Linus Torvalds,图片来源于2022年开源峰会活动

那些充满骄傲的黑客们,四处传颂着他那句“Talk is cheap, show me the code”,昂首挺胸地游走在各个社区之间。

与此同时,虽然开源社区已经发展了这么多年,但要说是否有另外一个开源项目达到了Linux这样的成就,其答案至今仍然是否定的,Linux仍是软件领域最为成功的开源项目,没有之一。

1991年的那个夏天,当时就读于赫尔辛基大学的Linus Torvalds 21岁,在Usenet上发布了那篇著名的帖子,开启了他的奇妙人生,也改变了更多年轻人的未来。1999年,在Linux诞生的8年后,还在中科大自动化系读大三的我第一次接触到Linux,成为一名Linux用户。6年后,读到博士的我向Linux内核社区提交了人生中第一个内核补丁。本来,只是为了完成自己的论文,本着实用化的想法,将补丁提交给社区。然而,这个对I/O预读取算法进行改进的补丁却是一块超出我预估的硬骨头。从一开始丢入社区中无人问津,到经受挑战,再到反复修改,差不多每个月都提交一两次迭代版本,历经将近两年的时间,在迭代了十多个版本之后终于被社区接受。

不打不相识,毕业后,我正式走上了Linux内核开发这条职业道路。

在这里插入图片描述
吴峰光,博士毕业于中国科学技术大学自动化系。先后工作于Intel与华为。开源贡献包括:2007 Linux Kernel I/O预读算法、2010 Linux Kernel回写算法、2013 LKP(Linux Kernel Performance)内核性能测试、2018 Memory-optimizer冷热内存检测与透明迁移解决方案、2020 Compass-CI开源软件全栈测试平台、2021 openEuler开源操作系统技术委员会成员等。

初见Linux内核

我第一次近距离接触Linux比较有意思,是有人拿着一张Linux光盘来让我帮忙安装。我顺着安装程序的一步步英文提示的指引,居然成功了,然而重启后就抓瞎了,不知道该怎么用。

之后,我的同学弓岱伟就充当了我的Linux导师,他在Linux控制台里噼里啪啦打命令,满屏幕的英文输入输出让人目不暇接——真真Linux大玩家! 我很喜欢搬一个板凳默默坐在他一旁,跟着他在这个新世界里徜徉。

我是幸运的:这可能是最为轻松而有趣的一种Linux入门方式了!对于不玩游戏的我来说,GNU/Linux系统就是我的“游戏世界”:探索、挑战,新鲜感、成就感。一般游戏的引人之处,Linux亦可带来相似的满足感。更让人兴奋的是,身边有志同道合的人一起交流学习,将来还能对接实验室、学校、社会的需求。这符合人的本性,就像是小小孩热衷于追着大一点的小孩求带着玩一样,跟志同道合的人一起玩Linux,比独乐乐有意思太多。

从此,我与Windows下的OWL/MFC拜拜了。之后很自然地,我也以类似的方式影响了身边的有缘人。这是属于程序员的美丽新世界——Shell/Vim等命令行工具一旦掌握,就效率飞起;GNU/Linux开放源代码,工具链齐全,对开发者的可玩性太高了;UNIX系统小而美工具集的组合设计理念,经受了历史考验,一旦学会终身受用。

那时候我们跑Slackware,两个寝室之间拉一根网线,内网互联,尝试各种服务。后来我们在瀚海星云BBS找到了LUG组织,就玩得更嗨,还在校园里玩Debian安装大会。进实验室后,我们搭起了PXE网络启动服务,校园网各处的电脑,可以免安装启动进入KNOPPIX等Linux系统。我们独家优化的FTP服务器,百倍提速,开启了全校的文件分享盛宴。

在又一次机缘巧合之下,我开始触及Linux Kernel代码。

2005年读博期间,我在实验室做的流媒体服务器项目,遭遇了并发能力不足的问题。随着排查的深入,我闯入了内核I/O领域:原来是其中的I/O预读取(readahead)算法代码没有按预期检测出的顺序读,导致大量低效的小I/O。

我尝试自己修改内核代码后,问题被修复,效果令人振奋!好东西要分享呀!于是我屁颠屁颠地去给Linux社区提交补丁。
在这里插入图片描述
本文节选自《新程序员001:开发者的黄金十年》

几经波折的填坑之路

那时我已经非常认可开源的理念:自由使用、分发,修改、回馈。当Linux用户遇到了问题,就能以Bug report或Bug fix的方式,回馈上游社区,从而形成一个越用越好的正向循环。所以,搭了多年免费班车的我,现在亲历一个坑,责任感油然而生:是时候帮忙填坑了!(只不过当时的我还没有意识到这是个多么庞大的坑!)

要填坑,第一件要做的事情是啥?是转变角度:不能仅仅以服务自己单位项目为目标,草草搬个木板,让项目之车能快速通过就了事——那叫Hack,显然上不了台面。需要正儿八经地研究I/O预读取周边代码,研究过去的邮件讨论,搞清楚它的设计目标、思路、来龙去脉,还有非常重要的:各种场景下的行为表现。这意味着大量测试和假设/验证迭代,在此基础上形成新的方案(Linux社区主要在Mailing list展开公开讨论,这就为我这种潜水爱好者提供了极好的观摩学习机会)。

然而当时的我还不懂太多道理,只知其一,不知其二。当心怀兴奋与忐忑,敲下邮件发送命令之后,首先面对的第一重考验就是:沉默。

邮件如泥牛入海,没有收到任何反馈。

我想没关系,没有收到反馈一定是因为代码还不够好,咱继续测试和改进代码。就这样,V2、V3、…… 补丁集越发越庞大。在默默发了几个版本之后,终于,来自Andrew Morton的一份邮件打破了宁静:
在这里插入图片描述
(备注:Andrew Morton是内核社区-mm tree的maintainer,主管质量的二号人物。他邮件大意是:这个补丁可真大!而且预读这个事情本身就超级复杂。我已经找了两位兄弟Ram Pao和Steve Pratt帮忙一起审查和测试了,但是这要花时间。)

从这里可以看出,Linux社区最稀缺的资源是两个:代码审查(Review)和测试(Testing)。我也是那个时候才知道,社区鼓励发小而美的补丁——抛出一大坨令人望而生畏的补丁集,很容易劝退查看者(至少会让人产生“等我有大块空闲时间了再来消化”的想法)。

新人发补丁最担心什么?有人挑战、挑毛病?或者更糟,无人理会?而更深层次的问题,是面对一个新社区,心虚没底,没感觉,没品位。解决办法,一是潜水学习,二是投身其中。新人发补丁的最佳策略,是从小修复开始:“这儿有个缺陷,这个小补丁可以修复”,接下来社区的交互就会比较顺,不容易遭遇重大挫折。

在这一点上,我显然犯错了。

但我又极其幸运,因为不久之后,Andrew Morton开始正式审查我的补丁。从此,我与他结下了不解之缘,可以说他正是我在Linux Kernel的领路人。

我逐渐学会了从社区视角来看问题:Linus Torvalds及其维护者(Maintainer)团队,他们需要什么样的补丁?不欢迎什么样的补丁?

“我们公司/项目需要xxx,所以写了这个配套补丁希望合入Linux。”这是一种以公司为中心的视角。抱歉,在社区看来,上述描述是一种政治不正确。

Linux现在的主要贡献都来自各家公司的雇员,这可能是世界上最广泛的一个跨公司合作开源项目。那么,Linux社区如何协调和引导如此众多的公司完成协作,避免冲突?这是个不小的挑战,尤其是其中有不少互为竞争对手的公司,在一些热点问题上可能希望竞争主导权、话语权,以及有利于自身的实现。

对此,Linus Torvalds作为“独裁者”的作用就体现出来了:你们都愿意投人来做xxx,很好!选择做什么,是你们的自由。但是!最终怎么做,我的地盘我做主,要遵从社区的原则来做。

最大的原则就是:所有开发者/贡献者,摘掉你们所属公司的帽子,戴上“独立贡献者”的帽子,按照技术本来的最佳实践,去做设计与实现。大家都以“独立贡献者”的角度参与审查。

换言之,公司从商业竞争力角度,选择“做正确的事”;社区从技术通用性角度,确保“把事情做正确”。这就是开源社区与商业公司的基本合作共识。除了倡导大家做“独立贡献者”,Linux社区还有“看门人”的逻辑。Linux社区人来人往,每天补丁与话题无数,像是个热闹的市集;开放的邮件列表,谁都可以订阅,观摩;谁都可以冲进来,发布一个补丁,或者对一个补丁发表自己的看法。在这纷纷纭纭之中,对补丁贡献的质量控制,必须极为严格。

在Linux社区,质量控制的核心在于“代码合入”(Git Merge)这一动作,这是属于“看门人”的唯一权力。合入是一个重要的门槛和分水岭。在合入之前,看门人有是否接受、何时合入的决断权,以及在此基础上衍生的关于补丁实现原则/方案的建议权。此时看门人的权威一面,想必给贡献者们留下了深刻印象。可是在合入之后,强势的看门人,随即变身为苦命的维护者,这是因为开源社区有一个基本假设:在开源市集里,贡献者们进进出出,随时可能走掉,不再响应。这意味着合入代码所增加的系统复杂性,其长期维护责任,要由社区与维护者来兜底。

“Linux有xxx问题,影响了xxx用户/场景。这个补丁效果好,副作用小,通用,是长期演进方向。”这,才是看门人喜闻乐见的补丁。

I/O预读取补丁集前后发了十几个版本,Andrew Morton非常认真地给了一百多份审查邮件,就连Linus Torvalds也回复了十来封邮件,甚至还跃跃欲试,亲手奉上了一个一百多行代码的补丁。

当时我信心满满,以为功能日渐完善,很快会被合入主线。

然而,经历了一年多的开发迭代,到第16个版本发出后,我收到了Andrew的一份邮件,大意是:

我把你的补丁集去掉了,因为它太复杂了!

那一刻犹如晴天霹雳!我整个人都傻了。回过味来,我终于刻骨铭心地体会到了KISS原则的重要性。这可是真正的刻骨铭心!

从一开始,Linux就是简单的。当年Linus第一次发布Linux的时候,并不完善,但是简单能用。及早发布,这是Linux取得成功的一个重要因素。时至今日,虽然Linux日趋庞大和完善,但对于任何一个功能项,这一原则仍然适用,并被看门人坚持。

于是,我决定抛掉原来的代码,重新写一份大大简化了的方案,包括功能与算法,这又花了我几个月的时间。在Andrew Morton的审查下,这些代码又经过了几轮改进。终于,到了2007年的7月19日,那一天我收到了很壮观的几十封邮件,那是Andrew Morton把补丁集发给Linus,然后从-mm tree里移除消息!

  • 380 C Jul 19 Andrew Morton ( 64:0) [patch 048/209] readahead: pass real splice size

  • 381 C Jul 19 Andrew Morton ( 122:0) [patch 049/209] mm: share PG_readahead and PG_reclaim

  • 382 C Jul 19 Andrew Morton ( 240:0) [patch 051/209] readahead: sanify file_ra_state names

  • 383 C Jul 19 Andrew Morton ( 282:0) [patch 050/209] readahead: split ondemand readahead interface into two fun

  • 384 T Jul 19 Andrew Morton ( 69:0) - readaheadintroduce-pg_readahead.patch removed from -mm tree

  • 385 T Jul 19 Andrew Morton ( 109:0) - readaheadadd-look-ahead-support-to-__do_page_cache_readahead. patch remo

  • 386 T Jul 19 Andrew Morton ( 66:0) - readaheadmin_ra_pages-max_ra_pages-macros.patch removed from -mm tree

  • 387 T Jul 19 Andrew Morton ( 146:0) - readaheaddata-structure-and-routines.patch removed from -mm tree

This patch was dropped because it was merged into mainline or a subsystem tree

这些补丁集终于被合并了!这可真是激动人心的时刻!进入开源世界交互,就像是打开一扇大门。整个过程中,先后有140多位来自世界各地、各种背景的人帮忙审查、测试,在自己的网站上试用并反馈效果;还有人在网上发帖子、晒贴自己的性能数据、图表;有人邀请我在期刊杂志写文章,去技术大会讲,甚至出书……如此广泛和全方位的协作,有效支撑了代码的改进。

这样的支持力度,在一家即使很大的公司里,可能也仅限于重点项目。但是在Linux社区,这样的事情就是日常协作!基于开源协作,任何一个模块都能吸收全世界的能量,并且是自由选择,让最适合的人做最适合的事,让最利益相关的个人与组织做最对口的测试和反馈,从而达到《大教堂与市集》里描述的:市集实质上拥有了压倒性的资源优势,形成对大教堂开发模式的碾压。

这大概就是Linux能够发展为全世界最大的开源项目的生命力源泉吧!

Sai对本文亦有贡献。

本文节选自《新程序员001:开发者黄金十年》,该书特别策划十万亿开发者新生态、家家都是技术公司、人人都是开发者三大版块,为所有开发者带来有技术、有深度、有质量的高品质内容。
在这里插入图片描述

[工业互联-16] 从通用到确定:实时Linux内核补丁PREEMPT-RT的演进与工业实践 本文深入探讨了实时Linux内核补丁PREEMPT-RT在工业互联领域的应用与优化。通过分析标准Linux内核在工业实时性挑战中的不足,详细解读了PREEMPT-RT的核心机制,包括可抢占内核、中断线程化和优先级继承等技术。文章还提供了工业现场部署的实战指南,涵盖硬件选型、内核参数调优及典型应用案例,帮助实现微秒级精度的工业控制。 阅读详情

相关推荐

Cyclictest测试Linux内核的实时性

概述 本文主要介绍了如何编译测试Linux实时内核的实时性的流程及方法。 1. 编译RT内核 RT-patch 内核源码 给内核打补丁: cd linux-4.19 patch -p1 < ../patch.... 编译内核: make menuconfig General setup----Preemption ModelFully Preemptible Kernel(RT) make sudo make modules_install sudo make install sudo updat

MIRSTAMP的博客 3903

Linux内核之旅

Linux内核之旅 Linux Kernel Travel 首页>>   2.6内核模块编程实例   走进内核   电子杂志   经验交流   Linux杂谈   新手上路   资料下载   讨论区   关于我们

Ramble Over The Cloud~ 1016

ThinkBook 16 2024 Ubuntu驱动问题:从硬件迭代看Linux社区适配的挑战与机遇

本文探讨了ThinkBook 16 2024在Ubuntu系统下的驱动适配问题,详细分析了Intel Ultra 7处理器等新硬件与Linux内核的兼容性挑战。通过实战案例提供了无线网卡、蓝牙模块和显卡驱动的解决方案,并展望了硬件厂商与开源社区协作的未来机遇。

weixin_29288313的博客 488

linux kernel 学习之旅与记录

谨以此篇,作为linux kernel学习之旅的开头,做到每周一更。

weixin_54350224的博客 192

【BlueZ】5.x版本兼容性梳理:内核版本/依赖库匹配对照表

Linux嵌入式蓝牙开发中,90%的编译失败和运行异常源于BlueZ协议栈与内核版本、系统依赖的兼容性问题。本文深入解析BlueZ 5.x系列的三大技术代际(5.40-5.50经典蓝牙期、5.50-5.62 BLE/Mesh期、5.62-5.88 LEAudio期),提供经官方源码核验的完整兼容矩阵,揭示内核接口(MGMT/HCI/ISO)、依赖库(glib/dbus)的版本约束规则。

byte轻骑兵的技术小窝 1万+

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

【深入剖析Linux内核】Linux内核之旅--(三)同步

1、概述 同步问题是操作系统中的经典问题,它伴随着并发处理而自诞生。现代体系结构中常见的并发处理情况可以分为如下三种情况: (1)多个线程在单处理器上执行——多线程编程 (2)多个线程在多处理器上执行——并行计算 (3)多个线程在分布的多个处理上执行——分布式计算 相应的编程也分成三种情况: 共享变量编程、分布式(基于消息)编程和并行编程。 1.1、并发程序设计的本质 并发程序通常

淡红星空的专栏 1456

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 546

linux 内核之旅

我不认为我是 linux 之上的高手,因为我的shell 没有达到c语言的 拿来即用的水平,而且我的内核开发主要集中于设备驱动的开发。但我确信我现在已经是一个入门者,可以再遇到问题的时候,迅速定位,然后给出正确的指导和答案。 linux内核难吗?接触之初,和现在完全是两种答案。在学习linux之前,我做过几年的单片机开发,基本的51系列,msp430系列等等。这为我理解linux的对硬

faithsws的专栏 1715

GIS常用坐标系简介

EPSG:4326是基于WGS 84的地理坐标系,使用经纬度表示,适用于全局定位和地理数据表示。它的缺点是在进行距离、面积计算等地理分析时不够准确。EPSG:3857是投影坐标系,使用平面米坐标表示,适用于在线地图展示,特别适合 Web 地图应用。虽然它在地图展示中很高效,但由于投影引起的变形问题,它不适合高精度地理测量和计算。

weixin_59096287的博客 1978

SAP Retail 补货里的 Requirement Groups,站点和商品太多时,主数据维护如何做减法

SAP Retail补货主数据设计中,Requirement Groups(需求组)是常被低估但至关重要的分类机制。它通过将具有相同补货需求的接收方(如门店)按商品分类(Merchandise Category)分组,大幅降低主数据维护量。在大型零售场景中(如800家门店、6万商品),直接维护每个门店和商品的组合参数会导致维护量失控。Requirement Groups允许企业按品类特性(如乳制品、饮料等)为不同门店组设置统一补货参数,并随业务变化灵活调整。该机制与商品分类紧密绑定,不同于MRP Group

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 68

标题:【探索Linux核心】加入Linux内核之旅开源社区,共筑技术未来!

标题:【探索Linux核心】加入Linux内核之旅开源社区,共筑技术未来! 去发现同类优质开源项目:https://gitcode.com/ 在技术的世界里,Linux内核无疑是星辰大海中的一颗璀璨明星。自十多年前起,“Linux内核之旅”(http://kerneltravel.net/)以其深度解析和全面的知识体系,成为了无数开发者的技术指南。今天,这一经典项目迎来了新的篇章,它变身为一个完全...

gitblog_00023的博客 534

ESP32-C3模组上跑通HTTPS分次传输文件(1)

ESP32-C3模组上跑通HTTPS分次传输文件(1)

phmatthaus的专栏 761

吴峰光杀进 Linux 内核

本期《开源英雄》,让我们一起走进吴峰光的技术人生。

《程序员》官方BLOG 4万+

YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题

1.首先,WTConv利用二维Haar小波变换对输入图像进行多级分解。低频分量 (LL):捕捉图像的低频信息,如整体形状或轮廓。水平高频分量 (LH):捕捉图像中的水平边缘信息。垂直高频分量 (HL):捕捉图像中的垂直边缘信息。对角线高频分量 (HH):捕捉图像的对角线细节。在每一级的小波变换中,图像被下采样(空间分辨率减半),但频率信息得到了更细的分解。递归地执行小波变换(称为多级分解)可以得到不同尺度下的频率分量。

qq_64693987的博客 1万+

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4255

Linux Kernel Development入门:从0到1理解内核开发流程

Linux Kernel Development是全球最大的协作软件开发项目之一,其独特的开发模式和高效的迭代流程支撑着全球数十亿设备的稳定运行。本文将带你快速掌握内核开发的核心流程、参与方式和关键工具,让你从新手成长为合格的内核贡献者。 ## 🚀 内核开发全景:协作模型与组织架构 Linux内核开发采用分布式协作模式,拥有清晰的层级结构和责任划分。这种架构确保了代码质量的同时,也让全球开发

gitblog_00622的博客 803

解决anaconda占用C盘空间过多问题

anaconda就算安装在其他盘,默认会把索引、锁定文件、压缩包等都放到系统盘(C盘),我用了两年,占用30GB。 1. 卸载不用的虚拟环境 查看已安装的虚拟环境 conda env list 卸载不用的、过期的虚拟环境 conda remove -n (要卸载的环境的名字) --all 2. 删除索引缓存、锁定文件、未使用过的包和tar包 conda clean -a 清理完之后,删除了15GB,还剩15GB,舒服了 ...

沉迷单车的追风少年 3万+

3.2编译Xenomai内核

本文介绍了Xenomai内核镜像的编译过程。主要内容包括:1)Xenomai代码仓库迁移至GitLab;2)内核层分为Dovetail和Cobalt两部分;3)详细说明了如何应用Dovetail补丁到Linux内核,包括版本匹配、分支选择及补丁生成方法;4)提供了在中国地区优化Git仓库克隆的实用技巧。文章重点演示了Xenomai v3.2.4与Linux 5.10.199-dovetail1组合的移植过程,并给出了工作目录结构建议。

三问Linux社区 1321

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Linux Kernel Development核心数据揭秘:谁在推动内核进化?

Linux Kernel Development作为开源项目的典范,其惊人的迭代速度和庞大的贡献者网络一直是技术社区关注的焦点。本文将深入剖析内核开发的核心数据,揭示背后推动这一复杂系统持续进化的关键力量,为你展现Linux内核如何在全球开发者协作下保持活力与创新。 ## 🚀 内核进化的惊人速度:每小时3.31次代码变更 Linux内核的开发节奏堪称软件项目的奇迹。根据项目统计数据显示,在过

gitblog_00253的博客 750

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux内核优化抿了,Linux内核连接跟踪锁的优化分析(1)

Linux内核连接跟踪锁的优化分析(1)作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net微博:weibo.com/glinuxerQQ技术群:4367710简介很多网络设备都使用Linux作为自己的OS,但是由于Linux本身是一个通用的操作系统,因此各家厂商都会根据自己的技术水平和需求,对内核进行或多或少的改动。而Linux随着版本的...

weixin_42105169的博客 194

eBPF 进阶: 内核新特性进展一览

程序 BTF 中用户定义的 BPF 类型对象, 这使得 BPF 程序可以分配自己的对象,构建自己的对象层次结构,并使用 BPF 运行时提供的基本构建块灵活地构建自己的数据结构。int data;int ret;SEC("tc")同 linked lists,增加了针对 rbtree 的支持,详见。

dwh0403的专栏 1158
上一篇: “代码写得越急,程序跑得越慢”
下一篇: “我放弃编程,写了一本130万字的硬科幻小说”
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值