操做系统基础篇:01-操做系统是对硬件的抽象

Gakki 镇楼~程序员

首先明确一点:你必定须要一个操做系统吗?web

答案是:不是。操做系统并非 magic,它也是一个程序,只不过是比较特殊的程序。理论上彻底可能不借助于操做系统写程序。操做系统只是给你提供了一套现成的接口,让你能够轻松高效地控制硬件。(固然,操做硬件是很是繁琐的,感谢操做系统,才能让咱们可以高效地开发应用程序。)django

操做系统有什么用

操做系统是什么这个问题太大了,牵涉到了不少不少方面,一会是确定讲不完的。先来说讲操做系统有什么用?或许这能帮助咱们更好地理解操做系统。编程

操做系统是对硬件资源的抽象

  • 首先操做系统(OS)是一个程序,一个管理硬件的程序。
  • 位于APP 和硬件之间,承担着中间人的角色。

示例图

其中硬件资源包括 CPU、内存、IO 设备等等。因此,能够把 OS 看做是对硬件的一种抽象。不一样的 OS 对硬件有不一样的抽象接口,应用程序经过调用这些接口来完成对硬件的操控,而避免了直接和硬件进行接触(这一般是很是繁琐且易出错的)。框架

那么,你可能会问:我能够跳过操做系统这一级直接开始撸代码吗?答案是:Yes!你固然能够,理论上彻底可行,上古时期的程序员就是这么作的。性能

以 word 程序为例

咱们来看看一个 word 程序牵涉到了哪些和硬件的交互。操作系统

  • 将 word 程序加载到 RAM(也是一种硬件)。
  • 把输入的文件显示在屏幕上。
  • 点击保存的时候,保存到磁盘上。
  • 须要打印的时候,直接打印机打印出来。

试想一下,若是没有操做系统,你得手动控制硬件,那会有多困难!感谢操做系统,你写程序的时候,这些功能基本均可以经过很简单的 API 调用实现。好比你要显示一个字符到屏幕上,只要调用 printf 方法就好了。3d

再好比说存储一个文件,若是要你本身实现的话,你得考虑具体把数据存在哪一个物理位置,该如何保存,为了保存文件得分配多少内存......有了操做系统,这些过程就只是一个简单的system call 调用了。cdn

我关于抽象的一些思考

能够这么说,编程技术的发展就是这么一层一层抽象叠加起来的。以 Python web 开发为例,从下到上的抽象,想到的能够有:硬件 -> 操做系统 -> C语言 -> Python 语言 -> Python HTTP, WSGI 等基础 web 实现 -> Django web框架 -> 你的业务代码。blog

通常来讲:抽象层次越多,速度也就越慢。Python 抽象层次已经算很高很高了,总所周知,Python 的性能也是比较慢的。django 在 Python 层次上又抽象了一下,性能可想而知也是比较差的。可是,抽象层次高有抽象高的优势,这意味着你能够用少许的代码完成大量的功能,快速开发业务。

我认为,随着硬件的不断发展,以后 Python 与其余语言的性能差距将只会是0.01S 和0.001S 的问题,这一点点的性能差别,彻底能够被忽略。开发者的时间才是最值钱的。

附录:

相关文章
相关标签/搜索