洛佳 组件化驱动、ROM运行环境与RustSBI第三届中国Rust开发者大会 组件化驱动、ROM运行环境与RustSBI 洛佳 华中科技大学 网络空间安全学院 2023年6月 本次演讲…… 关于我…… • 笔名洛佳 • 华中科技大学网络空间安全学院研一 在读(导师:周威老师) • 研究方向:物联网安全、系统安全 • 热爱开源,乐于尝试新技术 • RustSBI项目维护者 • 致力于向科研、教学和产业界推广 Rust语言 Rust语言 汲取Rust嵌入式和操作系统生态经验,总 结而成的新一代驱动开发方法。动、静态 基地址结合,高灵活性;一次开发,同时 复用于嵌入式、固件和内核中。 # 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 步地,可完成安全引导、安全镜像分发和 通常的嵌入式开发等功能。 # ROM运行环境 # 2023年的RustSBI 作为RISC-V 作为RISC-V SBI固件的RustSBI,2023年 将与UEFI、LinuxBoot擦出火花。在驱 动、环境和SBI接口的基础上,提供快速 实现具体引导流程的解决方案。 目录 组件化驱动 第 01 部分 什么是组件化驱动? 运 用 生 命 周 期 、可 变 性 等 最 新 的 编 程 语 言 理 论 成 果 ,构 造 适 应 开 发 需 求 的 驱 动 程 序 。可 结 合 过 程 宏 等 工0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0存。这在编程语言中是非常通用的。 然而,第二部分实现起来就各有区别了。在有 垃圾回收(garbage collector,GC)的语言中, GC 记录并清除不再使用的内存,而我们并不需要关心它。在大部分没有 GC 的语言中,识别 出不再使用的内存并调用代码显式释放就是我们的责任了,跟请求内存的时候一样。从历史的 角度上说正确处理内存回收曾经是一个困难的编程问题。如果忘记回收了会浪费内存。如果过 70/562Rust 程序设计语言 字符串也不能 改变 parse 方法的返回值类型:它仍然是一个 Result 值,而编译器仍然会要求我们处理这个 Result,好像还是有可能出现 Err 变体那样。这是因为编译器还没有智能到可以识别出这个字 符串总是一个有效的 IP 地址。如果 IP 地址字符串来源于用户而不是硬编码进程序中的话,那 么就确实有失败的可能性,这时确实需要我们以一种更健壮的方式处理 Result。提及这个 IP 地址是硬编码的假设会促使我们将来把 深入了解泛型的语法之前,我们首先来看一种没有使用泛型的减少冗余的方法,即提取一个函 数。在这个函数中,我们用一个可以代表多种值的占位符来替换具体的值。接着我们使用相同 的技术来提取一个泛型函数!通过学习如何识别并提取可以整合进一个函数的重复代码,你也 会开始识别出可以使用泛型的重复代码。 让我们从下面这个寻找列表中最大值的小程序开始,如示例 10-1 所示: 文件名:src/main.rs fn main() { let0 码力 | 562 页 | 3.23 MB | 1 月前3
Comprehensive Rust(简体中文) 202412的使用。课程内容 包括在 Chromium 的 gn 编译系统中使用 Rust,引入第三方 crate,以及与 C++ 的互操作性。 您需要能够构建 Chromium。为了提高速度,建议使用调试、组件构建方式,其他构建方式也可以使用。确 保所构建的 Chromium 浏览器可以正常运行。 裸机 Rust 深入探究裸机 Rust 课程为期一天,旨在介绍如何使用 Rust 进行裸机(嵌入式)开发。其中涵盖了微控制 ptr)等工具,可以利用与调用析构函数相关的语言 保证来确保在函数返回时释放内存。这些工具仍然很容易被滥用并导致与 C 语言类似的 bug。 • Java、Go 和 Python 依赖垃圾回收器来识别无法再访问的内存并将其舍弃。这保证可对所有指针 进行解引用操作,从而消除了释放后使用等各类 bug。但是,垃圾回收 (GC) 会产生运行时成本,并 且很难进行适当调优。 在许多情况下,Rust 的所有权和借用模型可以实现 chrome out/Debug/chrome # or on Mac, out/Debug/Chromium.app/Contents/MacOS/Chromium (建议使用调试 build 组件,以缩短迭代时间。这是默认值!) 如果您不具备这点,请参阅如何构建 Chromium。注意:设置 build Chromium 需要花些时间。 此外,我们还建议您安装 Visual Studio0 码力 | 359 页 | 1.33 MB | 11 月前3
简谈 Rust 与国密 TLS - 王江桐2022 – 2023, Shanghai, China • SM7 为分组加密算法,对称加密,分组长度为128比特,密钥长度为128比特。 • 保证信息机密性。 • 该算法不公开,应用包括身份识别类应用(非接触式 IC 卡、门禁卡、工作证、参赛证 等),票务类应用(大型赛事门票、展会门票等),支付与通卡类应用(积分消费卡、校 园一卡通、企业一卡通等)。 SM9 Introduction of Shangmi Protocols Rust China Conf 2022 – 2023, Shanghai, China • 接口与 OpenSSL 对比:兼容 OpenSSL,便与 C 与其他语言组件切 换迁移使用 Ylong Rust 国密算法性能对比 Performance Comparison of Ylong Rust Shangmi Cryptography Framework Rust0 码力 | 44 页 | 3.70 MB | 1 年前3
Rust 语言学习笔记“值”的体现,“Anything that has a value"。 比如说 var a=b 就是表达式,是把 b 的值赋给 a,或者 if (a == b)其中 if() 内的也是表达式。 而表达式语句就是程序识别的一条执行表达式的语句。 例如 var a=b; 这条是赋值语句,这里微小的差别就是加上了分号;作为语句结 束符。 其实表达式简单的可以理解成某语言的语法,而由这些语法构成的一条执行语 句则是表 借用检查器(borrow checker),它比较作用域来确保所 有的借用都是有效的。避免出现类似 C 的悬挂指针等问题。借用检查器是在编 译阶段进行工作的,将所有的无效借用识别出来。 大部分情况下,借用检查器可以正常工作,对于某些特殊情况,借用检查器无 法识别,需要由开发人员显示标注生命周期。 主要分为以下三种情况: 1.函数定义中的生命周期注解 2.结构体定义中的生命周期注解 3.方法定义中的生命周期注解 通过其所有权机制,严格控制拥有和借用关系,来保证程序的安全,并且 这种安全是在编译期可计算、可预测的。但是这种严格的控制,有时也会带来 灵活性的丧失,有的场景下甚至还满足不了需求。 因此,Rust 标准库中,设计了这样一个系统的组件:Cell, RefCell,它们弥 补了 Rust 所有权机制在灵活性上和某些场景下的不足。同时,又没有打破 Rust 的核心设计。它们的出现,使得 Rust 革命性的语言理论设计更加完整, 更加实用。0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言简体中文版存。这在编程语言中是非常通用的。 然而,第二部分实现起来就各有区别了。在有 垃圾回收(garbage collector,GC)的语言中, GC 记录并清除不再使用的内存,而我们并不需要关心它。在大部分没有 GC 的语言中,识别 出不再使用的内存并调用代码显式释放就是我们的责任了,跟请求内存的时候一样。从历史的 角度上说正确处理内存回收曾经是一个困难的编程问题。如果忘记回收了会浪费内存。如果过 早回收了,将会出现无效变量。如果重复回收,这也是个 不能 改变 parse 方法的返回值类型:它仍然是一个 Result 值,而编译器仍然会要求我们处理这 个 Result ,好像还是有可能出现 Err 成员那样。这是因为编译器还没有智能到可以识别出这 199/600 Rust 程序设计语言 简体中文版 个字符串总是一个有效的 IP 地址。如果 IP 地址字符串来源于用户而不是硬编码进程序中的 话,那么就 确实 有失败的可能性,这时就绝对需要我们以一种更健壮的方式处理 深入了解泛型的语法之前,我们首先来看一种没有使用泛型的减少冗余的方法,即提取一个函 数。在这个函数中,我们用一个可以代表多种值的占位符来替换具体的值。接着我们使用相同 的技术来提取一个泛型函数!!通过学习如何识别并提取可以整合进一个函数的重复代码,你 也会开始识别出可以使用泛型的重复代码。 让我们从下面这个这个寻找列表中最大值的小程序开始,如示例 10-1 所示: 文件名:src/main.rs fn main() {0 码力 | 600 页 | 12.99 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人图注意力网络 • 图自编码器 图查询及其应用场景 图查询 • 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 联 当前图的典型应用场景 路径识别 群体挖掘 节点识别 相似节点 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 … 人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘 分布式事务技术方案 MVOCC 处理流程 全面的算法支持 覆盖全部常用算法 • 路径计算、社区检测、相似度计算 等 丰富的自研图算法 • 环路识别、链路识别、节点间全路径、 发散子图识别、汇聚子图识别、金字塔 子图识别 与图数据库的深度结合 使用 cypher 语句直接调用 支持在用户筛选出的子图上计算 灵活的参数设定 自研图计算系统架构、极致的性能优化 用户授权管理 • 中文及显示别名支持 图模型设计 WebUI—— 可视化图探索分析 【亮点】 • K 步邻居查询、属性过滤 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在 线图挖掘分析 • 实体、边可视化统计分析 • 树、层次、分组等多种布 局方式 • 基于 D3 自研的万级别实 体展现 可视化图探索分析 AtlasGraph 架构及实现 图技术简介0 码力 | 38 页 | 24.68 MB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究MIR的特点对算法进行优化,使其可行 ❑ 整体思路:基于编译过程中的生成的MIR进行静态分析 ▪ 路径提取:控制流图=>生成树 ▪ 别名分析:分析指针之间的关联关系 ▪ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取 别名分析 模式识别 “SafeDrop: Detecting memory deallocation bugs of Rust programs via static data-flow 对SCC出口处的alias关系统一取上界 ❑ 特殊情况特殊处理 路径提取 别名分析 模式识别 控制流图 生成树 别名分析 ❑ 主要规则: 路径提取 别名分析 模式识别 过程间分析 近似处理multi-level pointers ❑ 示例: 域敏感和过程间分析 过程间分析 域敏感 更新 缺陷模式 路径提取 别名分析 模式识别 生成新的所有者 大纲 一、问题背景 二、Rust指针缺陷检测方法0 码力 | 28 页 | 1.55 MB | 1 年前3
夏歌-使用Rust构建LLM应用5 调用 OpenAI , 并把结果返回。 "0.1.0" 基于 ChatGPT 的 Telegram 机器人 在 ocr 这个 function 里 识别 图片中的文字, text_detection 是把识别的图片转化为 base64 https://github.com/flows-network/review-any- pr-with-chatgpt 使用 Rust Slash 开头的 telegram command ,就启动不同的 Prompt "0.1.0" 基于 ChatGPT 的 Telegram 机器人 OCR 识别图片中的文 字, text_detection 是把识别 的图片转化为 base64 招聘 Rust 实习生 请与 vivian@secondstate.io 联系 一个小广告 Thank you !0 码力 | 36 页 | 38.31 MB | 1 年前3
Rust OS 开源操作系统训练营的教与学-0615-李明开源训练营的总体规划和教学实践 教什么?怎么学? 在读本科生 在读研究生 已工作 52% 18% 30% Rust 语言编程 RISC-V 体系结构 rCore/uCore 大实验 ArceOS 组件化OS Rust for Linux Hypervisor 虚拟化 面向高校和企业 工程师开放报名 (2周) 四个阶段的培训课程 逐级培养选拔 (12周) 50% 20% 8% 完成94道Rustlings编程题 (2周) OS 大实验 rCore/uCore 内核 二阶段 完成5个OS编程大实验 (2周) ArceOS 组件化 操作系统 三阶段 Hypervisor 虚拟化技术 四阶段 完成1个OS组件或驱动 (4周) 完成1个硬件虚拟化适配 (4周) 台阶式向上迈进 训练营的教学/实习安排 • 春夏季训练营 • 4.1 ~ 6.30 共3个月 训练营的学习情况统计 是否学习过OS课程? 是否学习过Rust编程? 90%以上是初学Rust 75%以上是初学OS 训练营培养 Rust OS 人才的三个方向 Rust for Linux 驱动开发 组件化OS 内核开发 多核异构处理器 虚拟化开发 Rust OS 产学研用生态建设 用 研 学 产 智能网联汽车操作系统,工业安全操作系统, 机器人操作系统,物联网AIoT等 鹏城实0 码力 | 26 页 | 2.62 MB | 1 年前3
共 21 条
- 1
- 2
- 3













