通过以下四点可以概括操作系统到底是什么:
- 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。
- 操作系统本质上是一个运行在计算机上的软件程序 ,主要用于管理计算机硬件和软件资源。 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
- 操作系统存在屏蔽了硬件层的复杂性。 操作系统就像是硬件使用的负责人,统筹着各种相关事项。
- 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。
很多人容易把操作系统的内核(Kernel)和中央处理器(CPU,Central Processing Unit)弄混。你可以简单从下面两点来区别:
- 操作系统的内核(Kernel)属于操作系统层面,而 CPU 属于硬件。
- CPU 主要提供运算,处理各种指令的能力。内核(Kernel)主要负责系统管理比如内存管理,它屏蔽了对硬件的操作。
下图清晰说明了应用程序、内核、CPU 这三者的关系。
首先让我们从对操作系统的需求开始讲起。
最早的计算机是没有操作系统的,一切的一切都需要工程师们手动操作,手动调整。大概是种什么感觉呢?Charles Petzold所著的《编码》中有一幅这样的图:
这是作者假想出来的一个对64KB随机存储器的控制面板,第一排的16个开关用来控制地址位,下面一排左边的8个开关用来控制要输入的八比特数据,右边的两个开关分别控制读写操作的执行与否。
看起来很头疼对不对,如果计算机没有操作系统,可能每一个使用计算机的人都要直接面对这种反人类的控制面板。而且这还只是一个假想的简单的原型,实际上以前的计算机是什么样子呢?请看下图:
图中遍布整个房间的大机器就是著名的埃尼阿克(ENIAC),通常被认为是世界上第一台通用计算机。从照片中我们可以看到一名工程师正在手动调整一个旋钮,像这样的旋钮,在他的身前有几百个,在照片中没有拍到的地方,可能还有几千几万个,更不要说还有那么多密密麻麻的线路和插口。
计算机没有操作系统的后果就是,人们要想使用计算机,必须直接面向硬件进行操作。而要想完成这样的操作,什么数字电路、计算机组成原理请您学好先。: )
这就引出了操作系统最主要的功能之一:
对硬件资源进行管理、分配、调度。
有了操作系统之后,这个程序需要占多少内存,今天具体把哪一块内存空间分给它,使用者无需关心,操作系统帮你打理;这个文件存在硬盘的哪个磁道哪个扇区,使用者无需关心,操作系统帮你打理;电脑里只有一个CPU,为什么可以同时运行多个程序,使用者无需关心,操作系统帮你打理。
有了操作系统,普通的使用者就不需要去学习那些艰深晦涩的专业知识,因为相关的工作已经交由操作系统来做了。
接下来我们再来思考一个问题,同样是操作系统,为什么DOS逐渐被淘汰了,而Windows成为了主流呢?
因为大部分人都更愿意使用图形界面(GUI),而不愿意使用命令行界面(CLI),以前的DOS大概长这样:
注意,是整个屏幕都是这样,而不是说某一个对话框里面是这样。
诚然,通过键盘输入命令这样的操作方式已经比我们手动去调整旋钮、连接线路要方便得多,但是对于普通人来说门槛还是有点高,这也是为什么在DOS时代计算机很难大面积地流行开来的一个原因。
相比之下,主要通过鼠标点击进行操作的图形操作系统显然要受欢迎得多。
Windows XP
由此可见,一个操作系统的操作方式、操作界面的好坏在对整个操作系统的评价中要占到很大的比重。
这就引出了操作系统的第二个主要功能:
向用户提供操作界面(专业的叫法是shell。)
这样的界面可能是命令行式的,也可能是图形化的,但是不管怎么说,这个shell需要给用户提供一种可能,使得用户可以通过shell执行所有该操作系统所提供的功能。对于命令行来说,需要提供足够多数量的命令;对于图形界面来说,需要提供足够多数量的按钮。
打个比方,对于一家银行来说,业务窗口以及窗口里的业务员就共同组成了一个shell,顾客通过走到窗口前,与业务员进行交流,进行业务的办理。至于业务员在电脑上进行了什么操作,业务员从哪里取钱给用户,业务员将用户存进去的钱放到哪里,这就不是用户应该关心的了。如果这个银行今天所有的业务员都请假了,那么进去的顾客就无法办理任何业务。
所以,最后总结一下,操作系统的所有功能大致可以分为两部分,一部分是管理其下层的硬件资源,一部分是向其上层的用户提供操作接口,即
操作系统是一种介于硬件和用户之间的特殊的软件。