尝试用RUST写教学操作系统尝试用RUST写教学操作系统 向勇、陈渝 清华大学计算机系 20181123 1 背景 • 用什么语言写操作系统? – 汇编 – C – C++ – GO – RUST – … 2 3 各位老师所教的课程信息统计 计算机组成原理 编译原理 操作系统 其他 A B C D 提交 多选题 1分 此题未设答案 我们的尝试-教学操作系统ucore 7 我们的尝试-系统类课程的协调 8 用RUST写操作系统: 2018年春季操作系统课 http://os.cs.tsinghua.edu.cn/oscourse/OS2018spring/projects#A.2Bi.2F56C4u.2Bi6FbnpqMkAli6Q- 9 用RUST写操作系统: 2018年秋季操作系统专题训练课 18 RUST对Linux安全漏洞的安全性增强(2) 19 正在进行的工作 • 形成一组基于RustOS的操作系统课实验 https://rucore.gitbook.io/rust-os-docs/bootloader 20 后续工作 • 适合操作系统开发的语言剪裁 – 汇编 – C – Rust – … – 什么是适合内核开发的语言特征? 21 220 码力 | 23 页 | 1.53 MB | 1 年前3
Rust OS 开源操作系统训练营的教与学-0615-李明第三届中国Rust开发者大会 Rust OS 开源操作系统训练营的教与学 李明 清华大学 2023-6-17 Rust China Conf 2023 Rust OS 开源操作系统训练营的教与学 1 Rust OS 开源训练营的起因和发展 Title Title Title 开源操作系统训练营的起源(2020年) 陈渝老师 向勇老师 OS Tutorial Summer 训练营的愿景和目标 目标 愿景 核心产出 探索新一代安全高性能操作系统的设计与构建 影响并培养更多的人学会写操作系统 每年为高校和企业培养1000名操作系统开发人才 参加训练营要回答的三个问题 你为什么要来参加这个活动? 为什么要以开源 的方式来参与? 我们如何能把这些 知识技能学到? Rust OS 开源操作系统训练营的教与学 2 开源训练营的总体规划和教学实践 教什么?怎么学? RISC-V体系结构 一阶段 完成94道Rustlings编程题 (2周) OS 大实验 rCore/uCore 内核 二阶段 完成5个OS编程大实验 (2周) ArceOS 组件化 操作系统 三阶段 Hypervisor 虚拟化技术 四阶段 完成1个OS组件或驱动 (4周) 完成1个硬件虚拟化适配 (4周) 台阶式向上迈进 训练营的教学/实习安排 • 春夏季训练营0 码力 | 26 页 | 2.62 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人服务多活,保证图库不会出现单点 故障。 Raft 服务高可用方案 偏向分析型的分布式事务 【 MVOCC 事务提交】 基于多版本乐观并发控制技术的分布式事 务实现,在保障一致性的前提下,提供优 秀的分析性能 分布式事务技术方案 MVOCC 处理流程 全面的算法支持 覆盖全部常用算法 • 路径计算、社区检测、相似度计算 等 丰富的自研图算法 • 环路识别、链路识别、节点间全路径、 业务效果提升 10%+ 灵活易用的开发平台 • AtlasML Python Library • 集成 Jupyter Notebook 超参数自动优化 • 支持超参数自动调优,解放算 法科学家生产力,避免繁杂的 手动调参 海致图神经网络平台特点 Rust 语言特性助力构建高性能图数据库 01 利用 Rust Stream 进行数据流式 处理 02 03 协程和严格的内存安全性,编译 团队成员来自清华、北大、人大、北邮等高校,对图技 术、存储技术充满热爱 Young 、 Passion 、 Techie About team 6 年 Rust 开发经验、用 Rust 写过操作系统 ( Occlum )、编译器( Rustc ),现在在用 Rust 写数 据库系统( AtlasGraph ) About me About US shenyouren@stargraph0 码力 | 38 页 | 24.68 MB | 1 年前3
Rust 语言学习笔记java 的包管理系统大大不同,很容 易给人造成困惑。 最主要原因是: 1.Rust 的模块支持层级结构,但这种层级结构本身与文件系统目录的层级结构 是解耦的。 因为 Rust 本身可用于操作系统的开发。 开发者需要自己去定义路径,定义 mod 的层级关系,配合 rust 的默认约定。这 点和 java,go 开发完全不同,在面向 vm 的语言中这些都不需要考虑。 2.Rust 的 加载外部库 外部库是通过 extern crate xxx; 这样来引入的。 至于为何 Rust 要这样设计,有以下几个原因: 1.Rust 本身模块的设计是与操作系统文件系统目录解耦的,因为 Rust 本身可 用于操作系统的开发; 2.Rust 中的一个文件内,可包含多个模块,直接将 a::b::c::d 映射到 a/b/c/d.rs 会引起一些歧义; 3.Rust 一切从安全性 8、16、32、64 及 size。 因为浮点类型最少只能用 32 位来表示,因此只能有 f32 和 f64 来表示。 2.4.2.3 自适应类型 isize 和 usize 取决于你的操作系统的位数。简单粗暴一点比如 64 位电脑上就 是 64 位,32 位电脑上就是 32 位。 但是需要注意的是,不能因为电脑是 64 位的,而强行将它等同于 64,也就是 说 isize != i64,任何情况下你都需要强制转换。0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言简体中文版可靠的代码,并且运行速度和内存使用上都十分高效。 已经在从事编写底层代码的程序员可以使用 Rust 来提升信心。例如,在 Rust 中引入并行是相 对低风险的操作,因为编译器会替你找到经典的错误。同时你可以自信地采取更加激进的优 化,而不会意外引入崩溃或漏洞。 但 Rust 并不局限于底层系统编程。它表达力强、写起来舒适,让人能够轻松地编写出命令行 应用、网络服务器等各种类型的代码——在本书中就有这两者的简单示例。使用 Rust 联错误信息功 能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 Rust 学习了操作系统开发 等主题。社区对学生问题非常欢迎并乐于回答。通过类似这本书以及其他内容的努力,Rust 团队希望使系统概念能为更多人所易于理解,特别是编程新手。 公司 数百家大小规模的公司在生产环境中使用 Rust world! 在 Windows 上,输入命令 .\main.exe ,而不是 ./main : > rustc main.rs > .\main.exe Hello, world! 不管使用何种操作系统,终端应该打印字符串 Hello, world! 。如果没有看到这些输出,回到 安装部分的 “故障排除” 小节查找有帮助的方法。 如果 Hello, world! 出现了,恭喜你!你已经正式编写了一个0 码力 | 600 页 | 12.99 MB | 1 年前3
Comprehensive Rust(简体中文) 202412和 Python 依赖垃圾回收器来识别无法再访问的内存并将其舍弃。这保证可对所有指针 进行解引用操作,从而消除了释放后使用等各类 bug。但是,垃圾回收 (GC) 会产生运行时成本,并 且很难进行适当调优。 在许多情况下,Rust 的所有权和借用模型可以实现 C 语言的性能,能够精确地在所需位置执行分配和释 放操作,且为零成本。它还提供类似于 C++ 智能指针的工具。必要时,它还提供引用计数等其他选项,甚至 2)和线型(用于定义应如何从字节流确定载荷)。 整数(包括标签)使用名为 VARINT 的可变长度编码表示。幸运的是,下面为您提供了 parse_varint 的定义。该指定代码还定义了一些回调,用于处理 Person 和 PhoneNumber 字段,并将消息解析为对这 些回调的一系列调用。 What remains for you is to implement the parse_field function and the 使用 “str”和“String” UTF-8 用 Rust 进行文本处理 “CStr”和“CString” 以空字符结尾 与 C 函数通信 “OsStr”和“OsString” 特定于操作系统 与操作系统通信 您将在以下所有类型之间进行转换: • 将 &str 转换为 CString:您需要为尾随\0 字符分配空格, • 将 CString 转换为 \*const i8:您需要一个指针来调用0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 程序设计语言 简体中文版 1.85.0可靠的代码,并且运行速度和内存使用上都十分高效。 已经在从事编写底层代码的程序员可以使用 Rust 来提升信心。例如,在 Rust 中引入并行是相 对低风险的操作,因为编译器会替你找到经典的错误。同时你可以自信地采取更加激进的优 化,而不会意外引入崩溃或漏洞。 但 Rust 并不局限于底层系统编程。它表达力强、写起来舒适,让人能够轻松地编写出命令行 应用、网络服务器等各种类型的代码——在本书中就有这两者的简单示例。使用 Rust 内联错误信息功能。 通过使用 Rust 生态系统中丰富的工具,开发者在编写系统级代码时可以更加高效。 学生 Rust 适合学生群体,也适合有兴趣学习系统概念的人。许多人通过 Rust 学习了操作系统开发 等主题。社区对学生问题非常欢迎并乐于回答。通过类似这本书以及其他内容的努力,Rust 团队希望使系统概念能为更多人所易于理解,特别是编程新手。 公司 数百家大小规模的公司在生产环境中使用 Hello, world! 在 Windows 上,输入命令 .\main.exe,而不是 ./main: > rustc main.rs > .\main Hello, world! 不管使用何种操作系统,终端应该打印字符串 Hello, world!。如果没有看到这些输出,回到 安装部分的 “故障排除” 小节查找有帮助的方法。 如果 Hello, world! 出现了,恭喜你!你已经正式编写了一个0 码力 | 562 页 | 3.23 MB | 29 天前3
洛佳 组件化驱动、ROM运行环境与RustSBI在读(导师:周威老师) • 研究方向:物联网安全、系统安全 • 热爱开源,乐于尝试新技术 • RustSBI项目维护者 • 致力于向科研、教学和产业界推广 Rust语言 汲取Rust嵌入式和操作系统生态经验,总 结而成的新一代驱动开发方法。动、静态 基地址结合,高灵活性;一次开发,同时 复用于嵌入式、固件和内核中。 # 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能 也可通过专有函数使用; • 用户代码简短易懂,容易编写和调 试,降低开发成本。 *BL808组件化驱动操作GPIO按钮和灯 组件化外设的分类和设计方法 通 用 连 接 外 设 U A R T 、 S P I 和 I 2 C 等 , 通 过 互 斥 编译即可获得包含镜像头的固件包, 这是传统开发方法不具备的功能。 多核异构芯片的镜像融合(以BL808为例) 部 分 固 件 调 试 首 先 编 译 程 序 为 单 核 固 件 , 再 融 合 三 个 固 件 为 多 核 。 单 核 固 件 可 独 立 运 行 , 易 于 按 处 理 器 核 单 独 划 分 和 调 试 。 融 合 规 则 若 三 个 不 同 固 件 中 镜 像 头 的 闪 存 配 置 、 时 钟0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust 在算法交易中的实际应用与积极效应进一步提升研究->回测->实盘 的迭代效率 在浏览器内基于 Rust + WebAssembly 的高性能可视化工具 直接在 web 中直接看因子值 Rust 应用场景展望 - 高性能可视化 预测值和策略执行细节并即席调优 商务合作 技术交流 官网:ft.tech 电话:021-5071 9392 地址:上海市徐汇区漕河泾开发区 凯科国际大厦 Thank you!0 码力 | 18 页 | 3.49 MB | 1 年前3
Hello 算法 1.1.0 Rust版毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 Offer,但会引导你探索数据结构与算法的 “知识地图”,带你了解不同“地雷”的形状、大小和分布位置,让你掌握各种“排雷方法”。有了这些本领, ,用于表示各种语言的字母、标点符号甚至表情符号等。 ‧ 布尔类型 bool ,用于表示“是”与“否”判断。 基本数据类型以二进制的形式存储在计算机中。一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。 基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。 ‧ 整数类型 byte 占用 1 字节 = 8 比特,可以表示 28 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为0 码力 | 388 页 | 18.50 MB | 1 年前3
共 23 条
- 1
- 2
- 3













