20年老版rust_【Kevin三连弹之二】Rust适合用来写linux内核模块吗?

本文作者分享了使用Rust重写Linux内核模块的考量,探讨了是否应该在未找到原C代码BUG根因时进行重写、Rust与C在重写代价和性能上的对比,以及Rust作为高级语言的运行效率。通过实例分析,作者证明Rust在保持高性能的同时提供了更好的安全性。
摘要由CSDN通过智能技术生成

本文转载自知乎:https://zhuanlan.zhihu.com/p/137907908

作者:Kevin Wang

前几天,我发了一篇文章记录了我用Rust重写一个Linux内核模块的一些重点体验,没想到引起不少人关注。由于第一次写文章,一些背景没有详细介绍,只专注于写我想的东西了,导致一些不了解Rust的人表示有些担心,因此,我在这里我补充介绍一点儿背景。

TOC:

  1. 没有找到原软件BUG的根因,就贸然用Rust重写,合适吗?

  2. 用Rust重写的代价大吗?相比用C如何?

  3. Rust这种【高级语言】会不会运行性能差,附加开销大?

没有找到原软件BUG的根因,就贸然用Rust重写,合适吗?

由于我们的产品绝大部分采用C语言开发,因此,我们一直被C写出的内存安全问题所困扰。一些影响较大的故障,会导致各方面的人员高度紧张。我们开发人员要面对就是一旦有紧急情况发生,老道的“专家”们就被召集过来,不管你是在岗还是休息,都要爬到屏幕面前分析解决。基本每年都会有一些这种情况,我就这样陆续被折磨了十年。

印象最深的一次是我在另一个项目开发攻关的最后一天,通宵到第二天9点,刚上床躺下,就接到领导电话,说我们一个重要客户的设备紧急故障,“专家组”其他人已经分析了一阵了,我不得不强行打起精神回到办公室。经过大家将近一天的努力,初步找到了bug原因,就是我本次重写的这个内核模块中的某处内存安全问题导致,与此同时我们另一路人马正在奔赴他乡故障现场的路上......。这个已经算是众多安全问题相对较好分析定位的了。

复杂系统中,C语言的内存安全问题远没有许多人想象的那么简单,通过开发人员的素质培训、良好的测试、费尽心思发明的各种调试方法的确能解决的大部分的安全问题。但是始终会剩下那一小部分,如梦魇般伴随我们的每一天。每当到达一个新的战场,她们少则十天半月、多则几个月冒出头来给我们沉重一击,她们当中有些很聪明,从不光顾我们的测试环境和实验环境。

难查的故障这次再一次光临,我和另一个同事分析了几天,没有准确定位原因,看到代码里一些内存问题,重构起来改动也非常大,怕改出其它问题。根据故障现象,我们只能得出一个结论: 这是内存安全问题导致的。而事情又紧急,以至于我们不得不启用了plan B为客户解决了问题,公司付出了代价、对于开发人员来讲是比较丢脸的事。

问题现场得到缓解之后,按理说我们有足够的时间来分析解决这个故障,但是,我们真的要这样年复一年的继续下去吗?即使我们再花一两周时间解决了这个疑难,梦魇仍然不会结束,或许下个月、明年下一个再次光顾。我想,我们需要解决掉这个"根本原因" --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值