Skip to content

Commit

Permalink
deploy: 3e59720
Browse files Browse the repository at this point in the history
  • Loading branch information
scPointer committed Jul 9, 2024
1 parent 77c5360 commit 5baae44
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 5 deletions.
4 changes: 2 additions & 2 deletions _sources/chapter0/0intro.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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语言编程出现较多运行时缺陷的情况。使得学生以相对较小的开发和调试代价进行操作系统实验。同时,我们把操作系统的概念和原理直接对应到程序代码、硬件规范和操作系统的实际执行中,加强学生对操作系统内核的实际体验和感受


如何基于本书学习操作系统
Expand Down Expand Up @@ -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 编程。
Expand Down
4 changes: 2 additions & 2 deletions chapter0/0intro.html
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ <h3>解决问题的思路<a class="headerlink" href="#id5" title="永久链接
<p>这些现存问题增加了学生学习和掌握操作系统的难度。我们尝试通过如下方法来解决上面三个问题,达到缓解学生的学习压力,提升学习兴趣,能在一个学期内比较好地掌握操作系统的目标。</p>
<p>具体而言,为应对“原理与实践脱节”的问题,我们强调 <strong>实践先行,实践引领原理</strong> 的教学理念。MIT 教授 Frans Kaashoek 等师生设计实现了基于 UNIX v6 的 xv6 教学操作系统用于每年的本科操作系统课的实验中,并在课程讲解中把原理和实验结合起来,在国际上得到了广泛的认可,也给了我们很好的启发。经过十多年的操作系统教学工作,我们认为:对一位计算机专业的本科生而言,设计实现一个操作系统(包括CPU)有挑战但可行,前提是这样的操作系统要简洁小巧,能体现操作系统中最基本的核心思想,并能把操作系统各主要部分的原理与概念关联起来,形成一个整体。而且还需要丰富的配套资源,比如对操作系统的整体框架、核心算法、关键组件之间的联系等的分析文档、配套的图示和视频讲解、能够自动测试操作系统功能的测试用例和测试环境、能展现操作系统逐步编写过程的在线源代码版本管理环境,以及逐步递进的综合性在线实验环境等,这样就能够让学生很方便地通过实践来加深对操作系统原理和概念的理解,并能让操作系统原理和概念落地。</p>
<p>为应对“缺少历史发展的脉络”的问题,我们重新设计操作系统实验和教学内容,按照操作系统的历史发展过程来设立每一章的内容,每一章会围绕操作系统支持应用的某个核心目标来展开,形成相应的软硬件基本知识点和具体实践内容。同时建立与每章配套的多个逐步递进且相对独立的小实验,每个实验会形成一个独立的操作系统,体现了操作系统的一个微缩的发展历史,并可从中归纳总结出操作系统相关的概念与原理。这样可以在教学中引导学生理解操作系统的这些概念和原理是如何一步一步演进的。表面上看,这样会要求同学了解多个不同的操作系统,增加了同学的学习负担。但其实每个实验中的操作系统都是在前一个实验的操作系统上的渐进式扩展,同学只需理解差异的部分即可。而且学生通过分析不同操作系统对应用支持能力和对应实现上的差异,可以更加深入地理解相关操作系统概念与原理出现的前因后果。也许有同学认为讲解历史上的操作系统太过时了。但我们认为:技术可以过时,思想值得传承。</p>
<p>为应对“忽视硬件细节或用复杂硬件”的问题,我们在硬件(x86, ARM, MIPS, RISC-V 等)和编程语言(C, C++, Go, Rust 等)选择方面进行了多年尝试。在 2017 年把 复杂的 x86 架构换为 简洁的 RISC-V 架构,作为操作系统实验的硬件环境,降低了学生学习硬件细节的负担。在 2018 年引入 Rust 编程语言作为操作系统实验的可选编程语言之一,通过Rust语言特有的编译时内存/并发安全检查、强类型静态分析、高级数据结构支持、抽象封装支持、内嵌汇编和丰富的第三方库,来提高编程效率、降低调试成本,从而减少了用C语言编程和对硬件操作出现较多运行时缺陷的情况。使得学生以相对较小的开发和调试代价进行操作系统实验。同时,我们把操作系统的概念和原理直接对应到程序代码、硬件规范和操作系统的实际执行中,加强学生对操作系统内涵的实际体验和感受</p>
<p>为应对“忽视硬件细节或用复杂硬件”的问题,我们在硬件(x86, ARM, MIPS, RISC-V 等)和编程语言(C, C++, Go, Rust 等)选择方面进行了多年尝试。在 2017 年把 复杂 x86 架构换为 简洁 RISC-V 架构,作为操作系统实验的硬件环境,降低了学生学习硬件细节的负担。在 2018 年引入 Rust 编程语言作为开发操作系统的可选编程语言之一,减少了用C语言编程出现较多运行时缺陷的情况。使得学生以相对较小的开发和调试代价进行操作系统实验。同时,我们把操作系统的概念和原理直接对应到程序代码、硬件规范和操作系统的实际执行中,加强学生对操作系统内核的实际体验和感受</p>
</div>
</div>
<div class="section" id="id6">
Expand Down Expand Up @@ -463,7 +463,7 @@ <h3>编程语言与硬件环境<a class="headerlink" href="#id9" title="永久
<p class="admonition-title"><strong>编程语言与指令集选择</strong></p>
<p><strong>目前常见的操作系统内核都是基于 C 语言的,为何要推荐 Rust 语言?</strong></p>
<ul class="simple">
<li><p>事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 KenThompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。</p></li>
<li><p>事实上, C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 Ken Thompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。</p></li>
<li><p>C 语言的指针既是天使又是魔鬼。它灵活且易于使用,但语言本身几乎不保证安全性,且缺少有效的并发支持。这导致内存和并发漏洞成为当前基于 C 语言的主流操作系统的噩梦。</p></li>
<li><p>Rust 语言具有与 C 一样的硬件控制能力,且大大强化了安全编程和抽象编程能力。从某种角度上看,新出现的 Rust 语言的核心目标是解决 C 的短板,取代 C 。所以用 Rust 写 OS 具有很好的开发和运行体验。</p></li>
<li><p>用 Rust 写 OS 的代价仅仅是学会用 Rust 编程。</p></li>
Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

0 comments on commit 5baae44

Please sign in to comment.