《2024龙蜥大会技术实践分论坛:基于rust重构操作系统常驻服务技术分享-孟凡升.pdf》由会员分享,可在线阅读,更多相关《2024龙蜥大会技术实践分论坛:基于rust重构操作系统常驻服务技术分享-孟凡升.pdf(21页珍藏版)》请在三个皮匠报告上搜索。
1、基于rust重构操作系统常驻服务技术分析孟凡升统信软件系统研发工程师概述开发背景核心特征社区生态0101现有成果utsudoutshell0202最新动态pamdnsmasq0303后续计划社区开源功能开发0404概述开发背景&核心特征&社区生态开发背景centos停服“十四五”无法获取安全补丁来修复高风险的CVE漏洞不再发布新版本软件包,缺乏新功能新架构支持服务器操作系统是“十四五”期间国家重点关注、要求实现自主研发和自主演进的基础软件rust核心特征性能同为系统编程语言的rust,通过优化内存分配和多线程处理等方式,使性能通常与C相当。内存安全rust强调内存安全,通过所有权、借用和生命周
2、期的概念来防止常见的内存错误,如空指针解引用、缓冲区溢出等,编译时就能确保内存安全。并发编程rust的并发模型被设计为无数据竞争,这意味着开发者可以在不考虑锁的情况下安全地编写多线程代码。错误处理Rust通过Option和Result类型简化了错误处理,使得异常流程更加直观和易于管理社区和生态系统Instantly publish your crates and installthem.Use the API to interact and find out more information about available crates.Become a contributor and enh
3、ance the site with your work.Rust仓库是Rust开发者社区的重要组成部分,涵盖了从语言参考手册到各种开源项目。Cargo 是 Rust 语言的官方包管理器和构建工具。它负责管理 Rust 项目的依赖关系、构建过程以及项目的配置。Crates.io 是 Rust 语言的官方包注册表和包管理平台,它提供存储、搜索和分发 Rust 代码库的功能,允许开发者共享和获取第三方库。现有成果utsudo&utshell内存检测对比Valgrind工具测试对比(sudo&utsudo、bash&utshell)(单位:bytes)475235521264171451224319
4、16672401000020000300004000050000600007000080000明确丢失间接丢失可能丢失仍能访问sudoutsudo24924063427692201000002000003000004000005000006000007000008000009000001000000明确丢失间接丢失可能丢失仍能访问bashutshell明确丢失程序结束时,分配的内存没有被释放,并且没有任何指针指向这片内存,导致内存不可访问。间接丢失当内存泄漏的指针保存在已经明确丢失的内存中时,会发生间接丢失。可能丢失当内存分配后,如果程序在其生命周期结束前未能显式释放这部分内存,这部分内存会被
5、标记为可能丢失。仍能访问这部分内存虽然在程序结束时没有被释放,但仍然可以通过有效的指针访问。性能检测对比Hyperfine工具,sudo&utsudo性能检测对比性能检测对比Hyperfine工具,bash&utshell性能检测对比性能测试对比结果Hypefine工具测试对比(sudo&utsudo、bash&utshell)(单位:ms)3012725393096224001020304050平均执行时间用户时间系统时间最小执行时间最大执行时间sudoutsudo17611358185113900102030405060708090100平均执行时间用户时间系统时间最小执行时间最大执行时间
6、bashutshellutsudo大约慢utshell大约慢最新动态pam&dnsmasq项目筛选软件包名CVE数量代码量最后活跃时间pam84(40%内存)548972024年8月Networkmanager10(30%内存)5318192024年8月samba200(5%内存)18297702024年8月rsyslog18(70%内存)1461222024年8月iscsi33(50%内存)633912024年8月libgcrypt18(20%内存)1294562024年8月dnsmasq39(40%内存)385