什么是操作系统?

可能昨天很多读者被我们昨天的推送信息,弄得一头雾水,我概括了一下,主要问题有以下几个:

  1. 到底什么是操作系统?

  2. 是不是我们即将开始讲的操作系统也和Window 7一样,有着非常炫酷的界面?

还有一些,关于看不懂我们的推送信息的读者,我也爱莫能助了,只能希望大家通过搜索引擎,去恶补一下需要补充的知识了。

  1. 到底什么是操作系统?

这是一个非常笼统的问题,根据以往的经验来说,越笼统的东西,越是难以用简短的篇幅来讲清楚。我第一眼看到这个问题之后,想了一下,然后顿时心中的写作思路如泉水般地涌出。要解释什么是操作系统,我想从最初操作系统发明的动机之类的去解释它,完全可以著作一个书架的书。然而,这样精细,但毫无形象概括性的论述,不适合放到微信公众号上面来作为随手信息的推送。

那我们来通过举一个最接近与操作系统概念,并且日常中常见的例子来解释它吧,来让绝大多数有理解力的读者理解。虽然以下解释,没有任何符合强有力的科学逻辑方法论。但是可以帮助大家理解。

操作系统最核心的东西,就是它的调度算法。举个例子,罗列出你早上需要去做一系列的事情——烧水,煮牛奶,烤面包等等。一般正常人的思考流程就是,起床之后先烧水,烧水同时烤面包,如果你家里面有两个锅子,还可以同时煮牛奶。假设3者时间相同,我们发现,这三件事情被你同时去做了,但是时间却只是用了同一段时间。因此,我们说,这三件事情同时在被处理。我们也称这样的情况为“并行”。那这整个过程中,你人的作用,仅仅是去调度这三件事情开始,并且在结束的时候,根据具体事情发出的信号,进行相应的关火操作就对了。而操作系统在宏观上表现出的现象,就是让多个任务进行“并行”处理。

但是,对于单处理器而言,资源只有一个,如何让这三件事情同时发生?这里就要做一个非常脱离实际的假设了。假设你此时只有一个火苗,但是要让三只锅里的东西看上去同时在加热,该怎么办?我先让牛奶加热1分钟,面包加热1分钟,水加热1分钟,你现在的动作就是每隔1分钟去更换这三个锅子就好了。让我们把这1分钟加快,假设你的手速脱离实际地快,以至于把这1分钟变成了10毫秒,那在宏观上看到的就是这三个锅子同时在加热了。没错,如果我们将这三件事情看作是3个任务的话,那这三个任务看上去就是在同时被执行了。以上的类比,你人本身换锅子这个行为,就是任务的调度算法。火苗就是CPU资源。

再将上述的例子“妖魔化”,假设那你现在只有一只锅子,但是有三只不可加热的杯子,假设你手速足够快,那你有什么办法可以让这三个东西看上去是同时被加热的?很简单,只要先将牛奶倒入锅里面,加热10ms,倒回杯子;将热水从杯子倒入锅子,加热10ms,倒回杯子;再将面包放入锅子,加热10ms,放回杯子,以此类推,只要你手速足够快,是不是也从宏观上面看到这三件事情同时被执行了呢?而内存,在这整个过程中就是起到锅子的作用,杯子就是硬盘的作用。

说到这里,我们可以得出结论,操作系统的存在,就是可以让你原本的程序,更加高效地使用硬件资源。举个例子,如果你自己写单片机程序,使用延时的时候,你会做的事情就是用空语句进行等待,那这样的话,CPU就无缘无故地停止了。而操作系统不同,每次任务需要延迟了,就让改任务进入“阻塞”状态,转而去执行其他的任务。

以上的任务调度,是Linux 0.1版本内核的功能,仅仅是让系统同时显示A和B两个数值而已。我们所要讲述的实时操作系统,大致上是这样,不过它引入了抢占的概念,这个概念,等我们更新课程时候来详细说。

现代的操作系统内核,不管多大,它们提供的功能主要有:任务调度,内存管理,这两个东西是不变的。

2. 是不是我们即将开始讲的操作系统也和Window 7一样,有着非常炫酷的界面?

正如我们上文中提到的,操作系统严格的定义,并不是必须要包含图形化界面,辉煌如Unix/Linux这样的操作系统,其原生也没有操作界面。你可能会说,我用的RedHat,CentOS,Ubantu等操作系统,有类似于MAC一样炫酷的界面。然而事实真是这样吗?当然不是,这些界面在Linux底下只是一些外挂的软件,你可以任意地去更换KDE还是Genom桌面。另外,如果使用过Linux的读者可能会发现,即使Linux的桌面死机了,但是整个系统依旧可以正常运行。因为它的桌面只不过是一个外挂应用程序,具有比较低的优先级,死机对系统没有任何影响。相比于图形界面,终端确实每个操作系统可以自由添加的,终端的实现原理,就是C库的printf()函数,你可以修改串口发送程序进行任意发送。

另外再说一点,你在Windows底下看到的C盘,D盘这些都是文件系统提供给你的,Linux的运行,一定要依赖文件系统(Windows的现在多为FAT32或者NTFS,Linux的叫做ET2,ET3,YAFFS,YAFFS2等等),我们的RTOS可以不依赖于文件系统,但是也可以支持FAT(一种十六位文件系统)。

(0)

相关推荐