尝试用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年秋季操作系统专题训练课 RUST的安全哲学 • 尝试把系统正确性证明整合到语 ⾔言本身当中 • Rust有严格的安全约束,也可以 把编译时约束转移到运⾏时(例 如Mutex,RefCell),也允许程序 员显式地指出不安全(unsafe块), 并使⽤安全封装和管理不安全 • unsafe块是一个精妙的设计,在你 想偷懒破坏安全性时给你带来⼩ 小的骚扰 13 Rust的安全特征 • 类型安全: 远离void*0 码力 | 23 页 | 1.53 MB | 1 年前3
2.3 用golang写一个操作系统统 复睿:李四保 ⽤用Golang ⾃自我介绍 l 开发过银⾏行设备 l 同花顺移动证券 l 前后参与创⽴立过多家公司 l ⽤用Golang写了⼀一个云操作系统 电⼒力、⽯石化、银⾏行、证券、⼲⼴广电、电商 研发、产品、运营、公司运营 l 多种职业 l 喜欢各种宗教 l 喜欢在虚⽆无中创造⼀一个世界 l 多个⾏行业 ⾃自我介绍 说⼀一万句,不如做⼀一件事:⽤用Golang写⼀一个操作系统 来份硬菜:⽤用Golang写⼀一个操作系统 l 操作系统 相对完整的控制系统资源,有应⽤用体系 Unix,CP/M,dos、windows, l ⽣生态操作系统 在原有操作系统内核基础上,构建新的应⽤用体系及应⽤用⽣生态 ios、android l 云操作系统 chrome chrome os和阿⾥里云os。在上⼀一层操作系统基础之上和⾃自家的云系统进⾏行整合 l 去中⼼心化的云操作系统 Leither 架构基本和chrome os类似,只是将后端的云系统去中⼼心化,使之脱离巨头的控制 操作系统历史 l 互联⺴⽹网正在整合各个⾏行业,对各个传统⾏行业进⾏行重构 l 互联⺴⽹网的格局正在固化 ⾏行业巨头垄断互联⺴⽹网资源,全⾯面压制创新空间0 码力 | 33 页 | 1014.12 KB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 报告日期:2022.11.25 复旦大学 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 Rust语言 ❑ 系统级安全编程语言 ▪ 内存安全 ▪ 并发安全 ▪ 效率 2006年 2011年 Foundation成立 2020年 2021年 Mozilla裁员Servo团队 AWS, Huawei, Google, Microsoft, Mozilla… Rust如何保障内存安全? ❑ 内存安全问题产生的主要原因之一是指针别名导致悬空指针 ▪ 手动释放内存或调用析构函数 ▪ 函数返回时发生的自动析构或内存释放 ❑ Rust设计的目标之一是编译时检查指针别名(共享可变引用) ▪ 0x012345usize; let r = address as *const i32; } unsafe { risky(); } 调用unsafe函数 定义unsafe函数 Rust的安全哲学 ❑ Safe API无论如何被使用都不应带来未定义行为 ❑ 程序员应避免直接使用unsafe code ❑ Interior unsafe:将unsafe code封装为safe API0 码力 | 28 页 | 1.55 MB | 1 年前3
Borsh 安全高效的二进制序列化第三届中国 Rust 开发者大会 安全高效的二进制序列化 Daniel Wang @ NEAR Borsh • 运行、编码效率 • 确定性 • 跨平台兼容性 二进制序列化的问题 Binary Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射0 码力 | 21 页 | 3.35 MB | 1 年前3
邓良驹 编写更安全的Python代码编写安全的Python代码 邓良驹 2019.10.19 思考题 if user.balance >= product.price: user.balance -= product.price ? 目录 CONTENTS 常见不安全代码 代码检查的工具 总结:如何规避风险 常见不安全代码 小心 eval 应对: 在生产环境中,任何情况下都不要使用eval。 import sys "__main__": shellcode = pickle.dumps(ShellExp()) pickle.loads(shellcode) 应对: 绝不对不可信/未认证数据进行unpickle,使用更安全的JSON 或YAML做序列化。必须使用pickle时在沙盒环境执行。 小心 PyYAML 应对: 使用yaml.safe_load,必要时编写自定义 Loader 做更严格的检查。 对不可信来源的序列化检查后操作。 有的甚至是故意、恶意为之。 应对: 谨慎选择第三方 PyPI 包,尽量少导入 PyPI 包; 利用 https://pyup.io/ 等服务保持检查和更新依赖; 利用 Chef InSpect 落实代码安全规范的检查。 *参考资料:“驹说码事” 《如何import一个不存在的对象》 https://mp.weixin.qq.com/s/0_ivKVDU-nKf3r-c96sqrA 利用 Bandit0 码力 | 18 页 | 988.40 KB | 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
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 54 -> 0.59 3.14 -> 0.93 2.00 -> 0.03 2.60 -> 0.96 如果还有时间,我们用静态类型 来写一个简单的网页生成框架 一个用起来,没有学习曲线的框架。 很安全,因为没有程序员需要付出心 智负担的工作。 THANK YOU thautwarm: - github.com/thautwarm - twshere@outlook.com0 码力 | 43 页 | 10.71 MB | 1 年前3
Rust 语言学习笔记语言设计的看法主要是:重大创新,却又博采众长。 Rust 为了解决内存安全问题重新设计了类型系统,提出了所有权的概念,同时 为了能够解决当前大多数语言无法检测到的运行时错误,rust 创造性地设计了 无畏并发。Rust 借鉴了很多优秀语言的设计理念,以及快速迭代的社区,这些 都是 Rust 受到赞赏的重要因素。 Rust 是一门系统级编程语言,被设计为保证内存和线程安全,并防止段错误。 作为系统级编程语言,它的基本理念是 可以被归为通用的、多范式、编译型的编程语言,类似 C 或者 C++。与 这两门编程语言不同的是,Rust 是线程安全的! Rust 编程语言的目标是,创建一个高度安全和并发的软件系统。它强调安全性、 并发和内存控制。尽管 Rust 借用了 C 和 C++ 的语法,它不允许空指针和悬 挂指针,二者是 C 和 C++ 中系统崩溃、内存泄露和不安全代码的根源。 Rust 中有诸如 if else 和循环语句 for 和 while (structured type)而不是类(class)。这点,与基于继承的 OO 语言 C++, Java 有相当大的差异。而跟 Ocaml, Haskell 这类函数式语言更加接近。 Rust 做到了内存安全而无需 .NET 和 Java 编程语言中实现自动垃圾收集器的 开销,这是通过所有权/借用机制、生命周期、以及类型系统来达到的。 Rust 程序设计语言的本质在于赋能(empowerment):无论你现在编写的是何0 码力 | 117 页 | 2.24 MB | 1 年前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 vii 15 加密服务 569 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 15.1.1 哈希算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 15.3.1 随机数 . . . . . . . . . . 应用技巧与最佳实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 16 通用操作系统服务 585 16.1 os --- 多种操作系统接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5850 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 15 加密服务 601 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 15.1.1 哈希算法 . . . . . 用于消息验证的密钥哈希 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 15.3.1 随机数 . . . . . . . . . . . 应用技巧与最佳实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 16 通用操作系统服务 617 16.1 os --- 多种操作系统接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 160 码力 | 2246 页 | 11.74 MB | 9 月前3
共 419 条
- 1
- 2
- 3
- 4
- 5
- 6
- 42













