From df375cdefed865842fa8635d2a549925e49286b4 Mon Sep 17 00:00:00 2001 From: XuQing Chai <41991639+chaixuqing@users.noreply.github.com> Date: Sun, 27 Feb 2022 11:39:48 +0800 Subject: [PATCH] Update 1.3-why-hard-and-interesting.md modify a typo error --- lec01-introduction-and-examples/1.3-why-hard-and-interesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lec01-introduction-and-examples/1.3-why-hard-and-interesting.md b/lec01-introduction-and-examples/1.3-why-hard-and-interesting.md index e195e3e..82e7ab4 100644 --- a/lec01-introduction-and-examples/1.3-why-hard-and-interesting.md +++ b/lec01-introduction-and-examples/1.3-why-hard-and-interesting.md @@ -4,7 +4,7 @@ 学习操作系统比较难的一个原因是,内核的编程环境比较困难。当你在编写、修改,扩展内核,或者写一个新的操作系统内核时,你实际上在提供一个基础设施让别人来运行他们的程序。当程序员在写普通的应用程序时,应用程序下面都是操作系统。而当我们在构建操作系统时,在操作系统下面就是硬件了,这些硬件通常会更难处理。在这门课程中,我们会使用一个叫做QEMU的硬件模拟器,来模拟CPU和计算机。这会简单一些,但即使这样,编程环境还是比较恶劣。 -学习操作系统比较难的另一个原因是,当你在设计一个操作系统时,你需要满足一些列矛盾的需求。 +学习操作系统比较难的另一个原因是,当你在设计一个操作系统时,你需要满足一系列矛盾的需求。 * 其中一个是,你想要你的操作系统既高效又易用。高效通常意味着操作系统需要在离硬件近的low-level进行操作,而易用则要求操作系统为应用程序提供抽象的high-level可移植接口。所以,提供一个简单可移植,同时又高效的抽象接口需要一定的技巧。 * 另一个矛盾的点是,我们想要提供一个非常强大的操作系统服务,这样操作系统才能分担运行应用程序的负担,所以我们需要强大的操作系统服务。但同时,我们也想要有简单的接口。我们不想程序员看到数量巨多,复杂且难以理解的的内核接口。因为,如果他们不理解这些接口,他们就会很难使用这些接口。所以,我们也想要简单的API。实际上是有可能提供既简单,同时又包含强大功能的接口。所以,这里要提供一个简单的接口,同时又包含了强大的功能。