目录
可能有很多同学都有碰到下面我说的这个场景,当我们花了8888大洋买了一台16G内存的专业吃鸡电脑时,打开电脑发现自己的电脑内存只有15G不到,然后就开始了吃鸡之旅。
但是如果你对你少掉的内存关心的话,你会发现并不是厂商为了节省造价成本,而这少掉的内存被某种东西给占用了,这种东西就是我们这篇文章的主角——操作系统。
在了解操作系统之前,我们首先回顾下编程的目的,编程的目的是奴役计算机,取代人力。
现在想象一个这样的场景,如果你是奴隶主(人),你在黑市上买了一个奴隶(计算机),你想让这个奴隶干扫地的活,但是这个奴隶可能不明白扫地是什么意思,甚至可能都不知道你全程在逼逼啥。这个时候你可能会考虑买一个管家(操作系统),这个管家既能和你交流,也能和奴隶交流,然后你有任何命令都将由这个管家传达给奴隶。
现在让我们来想象我们在计算机上打开一个文件的流程:首先我们需要开机,其次我们需要打开一个文件。可能我们所有人都会认为这没啥,但是,这个时候你需要注意,文件它是什么呢?因为我们太习以为常了,所以我们忽略了这个问题:文件是什么呢?这个时候我不得不告诉你,你可以把文件理解成一个虚拟的单位,有了这个虚拟的单位,我们不再需要考虑机械手臂的运转,你只需要文件可以双击打开、可以写入数据、可以CTRL+S保存。
现在让我们来思考文件这个虚拟的单位是谁提供的呢?如果有使用过linux系统的同学应该知道,linux系统中看不到任何一个文件的图标,只有一行一行的代码?(但是Linux一切皆文件)
linux系统既然看不到文件的图标,那么windows系统的电脑上文件图标是谁提供的呢?毫无疑问。这个时候我们可以得知windows系统电脑上的文件这个虚拟单位是windows操作系统提供的。也正是在启动计算机的时候,计算机开启了操作系统这个软件(计算机除了硬件,就是软件,软件一般用来控制硬件)。但是需要注意的是,只要你想打开一个文件,归根结底都是需要你去操作硬件的,只不过是操作系统不仅给我们提供了文件这个概念,并且把对文件打开的这个复杂操作封装成了一个双击文件的接口给我们。
刚刚和同学们聊了聊计算机打开文件的流程。我们知道了文件这个虚拟概念是操作系统给我们的。这个时候我们需要回过头来看看我们的计算机,计算机创建的初心不是让我们写一个操作系统来控制硬件的。
计算机创建的目的是为了让我们人奴役他们,让它们替我们干活。那是不是说我们可以通过计算机开发一款ATM系统,让它们每天24小时不停歇的吞钱、吐钱呢?毫无疑问是可以的。有了操作系统在计算机上的一切操作都将变得很简单,那是不是说我们就需要在每台计算机上都写一套操作系统呢?通过常识来看,我们是不需要的,我们只需要复制其他人的操作系统即可,但是在计算机创建初期是需要自己手写操作系统的?但如今,如果真的让我们写一个操作系统出来,可能我们一辈子都使出吃奶的劲都无能为力。
应用程序其实很好理解,计算机只由硬件和软件组成,应用程序一定不是硬件,那么软件中除了操作系统我们都可以称之为应用程序。说了这么多,其实就像让你明白一件事:应用程序位于操作系统之上,它主要用来帮助人干各种各样的工作,它不直接与硬件交互。
通过上面从文件到应用软件的铺垫,我们在这里直接给出操作系统的定义:操作系统位于计算机硬件与应用软件之间,它是一个协调管理计算机资源和软件资源的控制程序。它把对硬件的复杂操作,封装成一个一个简单的接口,供人们使用。
为了明白为什么要有操作系统。我们在这里再给出一个计算机系统的组成:一套完整的计算机系统由计算机硬件、操作系统和应用程序组成,对这三个组件的解释如下:
由于我们以后开发都是都是应用程序,应用程序无法操作硬件,但凡需要操作硬件,都是调用操作系统的接口。
操作系统的启动:操作系统代码由硬盘读入内存(BIOS程序),CPU运行操作系统代码(CMOS存储器),运行成功后操作系统接管操作硬件的工作。
应用程序的启动:应用程序代码有硬盘读入内存,CPU运行应用程序码,运行成功即可使用应用程序。虽然应用程序的启动和操作系统的启动有着异曲同工之处,但是得明确一点:装了操作系统之后才能装应用程序,才有应用程序这个概念。因此上述应用程序对硬件控制的每一步操作,都依赖于操作系统的帮助。