diff --git a/_sources/chapter0/0intro.rst.txt b/_sources/chapter0/0intro.rst.txt index 3efd29323..e9e294bad 100644 --- a/_sources/chapter0/0intro.rst.txt +++ b/_sources/chapter0/0intro.rst.txt @@ -31,7 +31,7 @@ Remzi H. Arpaci-Dusseau 和 Andrea C. Arpaci-Dusseau 的《Operating Systems: Th 为应对“缺少历史发展的脉络”的问题,我们重新设计操作系统实验和教学内容,按照操作系统的历史发展过程来设立每一章的内容,每一章会围绕操作系统支持应用的某个核心目标来展开,形成相应的软硬件基本知识点和具体实践内容。同时建立与每章配套的多个逐步递进且相对独立的小实验,每个实验会形成一个独立的操作系统,体现了操作系统的一个微缩的发展历史,并可从中归纳总结出操作系统相关的概念与原理。这样可以在教学中引导学生理解操作系统的这些概念和原理是如何一步一步演进的。表面上看,这样会要求同学了解多个不同的操作系统,增加了同学的学习负担。但其实每个实验中的操作系统都是在前一个实验的操作系统上的渐进式扩展,同学只需理解差异的部分即可。而且学生通过分析不同操作系统对应用支持能力和对应实现上的差异,可以更加深入地理解相关操作系统概念与原理出现的前因后果。也许有同学认为讲解历史上的操作系统太过时了。但我们认为:技术可以过时,思想值得传承。 -为应对“忽视硬件细节或用复杂硬件”的问题,我们在硬件(x86, ARM, MIPS, RISC-V 等)和编程语言(C, C++, Go, Rust 等)选择方面进行了多年尝试。在 2017 年把 复杂的 x86 架构换为 简洁的 RISC-V 架构,作为操作系统实验的硬件环境,降低了学生学习硬件细节的负担。在 2018 年引入 Rust 编程语言作为操作系统实验的可选编程语言之一,通过Rust语言特有的编译时内存/并发安全检查、强类型静态分析、高级数据结构支持、抽象封装支持、内嵌汇编和丰富的第三方库,来提高编程效率、降低调试成本,从而减少了用C语言编程和对硬件操作出现较多运行时缺陷的情况。使得学生以相对较小的开发和调试代价进行操作系统实验。同时,我们把操作系统的概念和原理直接对应到程序代码、硬件规范和操作系统的实际执行中,加强学生对操作系统内涵的实际体验和感受。 +为应对“忽视硬件细节或用复杂硬件”的问题,我们在硬件(x86, ARM, MIPS, RISC-V 等)和编程语言(C, C++, Go, Rust 等)选择方面进行了多年尝试。在 2017 年把 复杂 x86 架构换为 简洁 RISC-V 架构,作为操作系统实验的硬件环境,降低了学生学习硬件细节的负担。在 2018 年引入 Rust 编程语言作为开发操作系统的可选编程语言之一,减少了用C语言编程出现较多运行时缺陷的情况。使得学生以相对较小的开发和调试代价进行操作系统实验。同时,我们把操作系统的概念和原理直接对应到程序代码、硬件规范和操作系统的实际执行中,加强学生对操作系统内核的实际体验和感受。 如何基于本书学习操作系统 @@ -97,7 +97,7 @@ Remzi H. Arpaci-Dusseau 和 Andrea C. Arpaci-Dusseau 的《Operating Systems: Th **目前常见的操作系统内核都是基于 C 语言的,为何要推荐 Rust 语言?** - - 事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 KenThompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。 + - 事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 Ken Thompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。 - C 语言的指针既是天使又是魔鬼。它灵活且易于使用,但语言本身几乎不保证安全性,且缺少有效的并发支持。这导致内存和并发漏洞成为当前基于 C 语言的主流操作系统的噩梦。 - Rust 语言具有与 C 一样的硬件控制能力,且大大强化了安全编程和抽象编程能力。从某种角度上看,新出现的 Rust 语言的核心目标是解决 C 的短板,取代 C 。所以用 Rust 写 OS 具有很好的开发和运行体验。 - 用 Rust 写 OS 的代价仅仅是学会用 Rust 编程。 diff --git a/chapter0/0intro.html b/chapter0/0intro.html index 44b32a492..fbe5eb009 100644 --- a/chapter0/0intro.html +++ b/chapter0/0intro.html @@ -409,7 +409,7 @@
目前常见的操作系统内核都是基于 C 语言的,为何要推荐 Rust 语言?
事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 KenThompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。
事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 Ken Thompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。
C 语言的指针既是天使又是魔鬼。它灵活且易于使用,但语言本身几乎不保证安全性,且缺少有效的并发支持。这导致内存和并发漏洞成为当前基于 C 语言的主流操作系统的噩梦。
Rust 语言具有与 C 一样的硬件控制能力,且大大强化了安全编程和抽象编程能力。从某种角度上看,新出现的 Rust 语言的核心目标是解决 C 的短板,取代 C 。所以用 Rust 写 OS 具有很好的开发和运行体验。
用 Rust 写 OS 的代价仅仅是学会用 Rust 编程。