Gakki 镇楼~
首先明确一点:你一定需要一个操作系统吗?
答案是:不是。操作系统并不是 magic,它也是一个程序,只不过是比较特殊的程序。理论上完全可能不借助于操作系统写程序。操作系统只是给你提供了一套现成的接口,让你可以轻松高效地控制硬件。(当然,操作硬件是非常繁琐的,感谢操作系统,才能让我们能够高效地开发应用程序。)
操作系统有什么用
操作系统是什么这个问题太大了,牵涉到了很多很多方面,一会是肯定讲不完的。先来讲讲操作系统有什么用?或许这能帮助我们更好地理解操作系统。
操作系统是对硬件资源的抽象
- 首先操作系统(OS)是一个程序,一个管理硬件的程序。
- 位于APP 和硬件之间,承担着中间人的角色。
示例图
其中硬件资源包括 CPU、内存、IO 设备等等。所以,可以把 OS 看作是对硬件的一种抽象。不同的 OS 对硬件有不同的抽象接口,应用程序通过调用这些接口来完成对硬件的操控,而避免了直接和硬件进行接触(这通常是非常繁琐且易出错的)。
那么,你可能会问:我可以跳过操作系统这一级直接开始撸代码吗?答案是:Yes!你当然可以,理论上完全可行,上古时期的程序员就是这么做的。
以 word 程序为例
我们来看看一个 word 程序牵涉到了哪些和硬件的交互。
- 将 word 程序加载到 RAM(也是一种硬件)。
- 把输入的文件显示在屏幕上。
- 点击保存的时候,保存到磁盘上。
- 需要打印的时候,直接打印机打印出来。
试想一下,如果没有操作系统,你得手动控制硬件,那会有多困难!感谢操作系统,你写程序的时候,这些功能基本都可以通过很简单的 API 调用实现。比如你要显示一个字符到屏幕上,只要调用 printf 方法就行了。
再比如说存储一个文件,如果要你自己实现的话,你得考虑具体把数据存在哪个物理位置,该如何保存,为了保存文件得分配多少内存......有了操作系统,这些过程就只是一个简单的system call 调用了。
我关于抽象的一些思考
可以这么说,编程技术的发展就是这么一层一层抽象叠加起来的。以 Python web 开发为例,从下到上的抽象,想到的可以有:硬件 -> 操作系统 -> C语言 -> Python 语言 -> Python HTTP, WSGI 等基础 web 实现 -> Django web框架 -> 你的业务代码。
一般来说:抽象层次越多,速度也就越慢。Python 抽象层次已经算很高很高了,总所周知,Python 的性能也是比较慢的。django 在 Python 层次上又抽象了一下,性能可想而知也是比较差的。但是,抽象层次高有抽象高的优点,这意味着你可以用少量的代码完成大量的功能,快速开发业务。
我认为,随着硬件的不断发展,之后 Python 与其他语言的性能差距将只会是0.01S 和0.001S 的问题,这一点点的性能差异,完全可以被忽略。开发者的时间才是最值钱的。
附录:
- 本文截图来源于:www.youtube.com/watch?v=vBU…