【操作系统】OS难吗?好玩吗?
计算机可以看成三层关系:硬件-操作系统-应用程序,程序员可以从这三个方面对计算机进行操作。
难的第一个原因:操作系统中,内核的编程环境比较困难。当你在编写、修改,扩展内核,或者写一个新的操作系统内核时,你实际上在提供一个基础设施让别人来运行他们的程序。
难的第二个原因:想要实现一个好的操作系统,就需要在看似矛盾的要求中找到平衡点。
-
想要操作系统既高效又易用。
高效通常意味着操作系统需要在离硬件近的low-level进行操作,而易用则要求操作系统为应用程序提供抽象的high-level可移植接口。所以,提供一个简单可移植,同时又高效的抽象接口需要一定的技巧。
-
想要提供强大的操作系统服务,又想要简单的接口。
强大的操作系统服务用来分担运行应用程序的压力,简单的接口用来简化程序员的操作,便于理解和使用。
-
安全性与灵活性
希望给与应用程序尽可能多的灵活性,不会限制应用程序,所以需要内核具备灵活的接口。但是另一方面,你的确需要在某种程度上限制应用程序,因为你会想要安全性。我们希望给程序员完全的自由,但是实际上又不能是真正的完全自由,因为我们不想要程序员能直接访问到硬件,干扰到其他的应用程序,或者干扰操作系统的行为。
好玩吗?好玩!
-
第一:操作系统提供了大量的特性和大量的服务,但是它们趋向于相互交互。交互的方式可以各式各样,需要你发挥思考和想象力。
-
第二:一个好的操作系统可以满足广泛的使用场景。
-
第三:如果你对于计算机的运行原理感兴趣,对于你打开计算机以后实际发生的事情感兴趣,那么这门课程你就选对了。
-
第四:如果你喜欢基础架构,比如你喜欢构建一些其他程序可以使用的服务,那么这门课程都是有关基础架构的内容,因为操作系统就是基础架构。
-
第五:如果你曾经花费了大量的时间来定位应用程序的Bug,或者定位安全的问题,那么你会发现这些经历通常需要理解操作系统是如何运作的。比如从根本上来说,操作系统涉及了很多安全相关的策略。当程序运行出错时,操作系统需要来收拾残局,而这一步也通常包括在定位问题中。