菜鸟崛起 Chapter 1.5 大魔头:操作系统OS与应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟崛起 Chapter 1.5 大魔头:操作系统OS与应用程序相关的知识,希望对你有一定的参考价值。

如同前面提到的,在早期想要让计算机执行程序就得要参考一堆硬件功能参数,并且学习机器语言才能撰写程序。同时每次写程序时都必须要重新改写,因为硬件与软件功能不见得都一致之故。那如果我能够将所有的硬件都驱动,并且提供一个发展软件的参考接口来给工程师开发软件的话,那发展软件不就变得非常简单了?这就是操作系统的主要职责了。

1.5.1  操作系统的核心

OS其实就是一组程序,这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。我们刚刚谈到计算机如果没有软件只是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数值、让主存储器可以开始加载/读出数据与程序代码、让硬盘可以开始被存取、让网卡可以开始传输数据、让所有周边可以开始运转等等。总之,硬件的所有动作都必须要透过这个操作系统来达成就是了。

上述的功能就是操作系统的核心(Kernel了,你的计算机能不能做到某些事情,都与核心有关。只有核心有提供的功能,你的计算机系统才能帮你完成。举例来说,你的核心并不支持TCP/IP的网络协议,那么无论你购买什么样的网卡,这个核心都无法提供网络能力。

但是单有核心我们使用者也不知道能做什么,因为核心主要在管控硬件与提供相关的能力(例如网络功能),这些管理的动作是非常的重要的,如果使用者能够直接使用到核心的话,万一用户不小心将核心程序停止或破坏,将会导致整个系统的崩溃。因此核心程序所放置到内存当中的区块是受保护的。并且开机后就一直常驻在内存当中。

所以整部系统只有核心的话,那么我们就能看着一个已经准备好运作的计算机系统,但是我们无法运行他。这个时候就需要软件的帮忙了。

1.5.2  系统呼叫(System Call

既然计算机的硬件都是由OS核心管理,那么如果我想要开发软件的话,自然就得要去参考这个核心的相关功能了。如此一来不是从原来的参考硬件函数变成参考OS Kernel,还是很麻烦的,那么有没有更简单的方法呢?

为了解决这个问题,OS通常会提供一整组的开发接口给工程师开开发软件。工程师只要遵守该开发接口那就很容易开发软件了。举例来说,我们学习C程序语言只要参考C程序语言的函数即可,不需要再去考虑其他核心的相关功能,因为核心的系统呼叫接口会主动将C程序语言的相关语法转为核心可以了解的任务函数,那核心自然就能够顺利运作该程序了。

如果我们将整个计算机系统的相关软件/硬件绘制成图的话,他们的关系如下:

 技术分享图片

计算机系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的计算机系统资源分配(包括CPU资源、内存使用资源等等),因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。而由于核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供,用户才能够操作系统的。

为了保护核心,并且让程序设计师比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发接口,那就是系统呼叫层。软件开发工程师只要遵循公认的系统呼叫参数来开发软件,该软禁就能够在该核心上头运作。所以你可以发现,软件与核心有比较大的关系,与硬件关系则不大。硬件也与核心有比较大的关系,至于与用户有关的,那就是应用程序啦。

在定义上,只要能够让计算机硬件正确无误的运作,那就算是操作系统了。所以说,操作系统其实就是核心与其提供的接口工具,不过就如同上面讲的,因为内核缺乏了与用户沟通的亲和接口,因此在目前,一般我们提到的操作系统都会包含核心与相关的用户应用软件。

简单的说,上面的图示可以带给我们底下的概念:

操作系统的核心层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运作。这个硬件不仅指的是CPU,包括声卡,内存等计算机的构成。

操作系统只是在管理整个硬件资源,包括CPU、内存、IO装置及文件系统文件。如果没有其他的应用程序辅助,操作系统只能让计算机准备妥当罢了。并无法运作其他功能,所以我们想要操作计算机还要安装其他应用软件。

应用程序的开发都是参考操作系统提供的开发接口,所以该应用程序只能在该操作系统上面运作而已,不可以在其他操作系统上面运作。我们发现有时候安装软件会提示该软件只能安装在什么什么系统上,其实就是这个道理。

1.5.3  核心功能

既然核心主要是在负责整个计算机系统相关的资源与管理,那我们知道其实整部计算机系统最重要的就是CPU与主存储器,因此,核心至少也要有这些功能:

系统呼叫接口(System Call Interface),上面说过,这是为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用,于是需要有这个简易的接口来方便程序开发者。

程序管理(Process control)我们在工作过程中总会听说多任务环境,一部计算机可能同时间有很多的工作跑到CPU等待运算处理,核心这个时候就必须能够控制这些工作,让CPU的资源作有效的分配才行!另外。良好的CPU排程机制(就是CPU先运作哪个工作的排列顺序)将会有效的加快整体系统的效能。

内存管理(Memory management)控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的程序代码与数据必须要先存放在内存中。通常核心会提供虚拟内存功能,当内存不足是可以提供内存置换(swap)的功能。

文件系统管理(Filesystem management)文件系统的管理,例如数据的输入输出等等的工作了,还有不同文件格式的支持啦等等,如果你的核心不认识某个文件系统,那么您将无法使用该文件格式的档案。

装置的驱动(Device drivers)就如同上面提到的,硬件的管理是核心的主要工作之一,当然了,装置的驱动程序就是核心所需要做的事情了,好在目前都有所谓的可加载模块功能,可以将驱动程序编辑成模块,就不需要重新的编译核心了。

事实上,驱动程序的提供是硬件厂商的事情,硬件厂商要推出新硬件时,应该要参考OS的驱动程序接口,开发完毕后将驱动程序连同硬件一同销售,并且现实也是这样的。

1.5.4  操作系统与驱动程序

老实说,驱动程序可以说是操作系统里面相当重要的一环了。不过,硬件可是持续在进步当中的,包括主板、显示适配器、硬盘等等。那么比较晚推出的较新的硬件,我们的OS当然是不认识的,那OS该如何驱动这些新的硬件呢,为了克服这个问题,OS通常会提供一个开发接口给硬件开发商,让他们可以根据这个接口设计可以驱动他们硬件的驱动程序,如此一来,只要使用者安装驱动程序后,自然就可以在他们的OS上面驱动这些硬件了。

 技术分享图片

由上图我们可以得到几个小重点:

操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;

一般来说,OS会提供开发接口,让开发商制作他们的驱动程序;

要是用新硬件功能,必须要安装厂商提供的驱动程序才行;

驱动程序是由厂商提供的,与OS开发者无关。

所以,如果你想要更换硬件的话,那么就要求该供应商提供该硬件专用的驱动吧,注意不同的硬件对应不同的驱动。

1.5.5  应用程序

应用程序是参考OS提供的开发接口所开发出来的软件,这些软件可以让用户操作,以达到某些计算机的功能利用。举例来说,办公室软件office主要就是用来让使用者办公使用的;图像处理软件就是用来处理影音资料的。

需要注意的是,应用程序是与OS有关系的,如同上面的图示当中的说明。因此,如果你想要购买新软件,一定要参考软件说明,软件是否支持你的OS

以上是关于菜鸟崛起 Chapter 1.5 大魔头:操作系统OS与应用程序的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟崛起 DB Chapter 3 MySQL 5.6的基本操作

菜鸟崛起 DB Chapter 4 MySQL 5.6的数据库引擎

菜鸟崛起 DB Chapter 2 MySQL 5.6的概述与安装

菜鸟崛起 Chapter 1.4 软件程序运行

菜鸟崛起 Chapter 1.3 数据表示方式

菜鸟崛起 DB Chapter 1 数据库概述