计算机是由一堆硬件所组成的,为了有效率的控制这些硬件资源,于是就有操作系统的产生了。操作系统能够有效率的控制硬件资源的分配,并提供计算机运作所需要的功能。为了要给程序开发人员提供更容易开发软件的环境,操作系统提供一整组系统呼叫接口来给软件开发人员使用。
操作系统本质是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。操作系统的功能就是让CPU可以开始判断逻辑与运算数值、 让主内存可以开始载入/读出数据与程序码、让硬盘可以开始被存取、让网络卡可以开始传输数据、 让所有周边可以开始运转等等。总之,硬件的所有动作必须要通过操作系统来达成。
核心(Kernel)主要在管控硬件与提供相关的能力。核心程序所放置到内存当中的区块是受保护的, 并且开机后就一直常驻在内存当中。
计算机系统主要由硬件构成,然后核心程序主要在管理硬件,提供合理的计算机系统资源分配(包括CPU资源、内存使用资源等等), 因此只要硬件不同(如x86架构与RISC架构的CPU),核心就得要进行修改才行。而由于核心只会进行计算机系统的资源分配,所以在上头还需要有应用程序的提供,使用者才能够操作系统的。
为了保护核心,并且让程序开发人员比较容易开发软件,因此操作系统除了核心程序之外,通常还会提供一整组开发介面, 那就是系统呼叫层。软件开发工程师只要遵循公认的系统呼叫参数来开发软件,该软件就能够在该核心上运作。 所以你可以发现,软件与核心有比较大的关系,与硬件关系则不大!硬件也与核心有比较大的关系! 至于与使用者有关的,那就是应用程序。
计算机硬件在持续的升级中,例如主机板、显示卡、硬盘等。为了能够驱动新的硬件,操作系统提供了一个开发界面给硬件开发商,在这个界面上,开发商可以设计驱动他们硬件的【驱动程序】。使用者安装驱动程序后,就可以在操作系统上驱动相关硬件了。
应用程序是参考操作系统提供的开发介面所开发出来软件,这些软件可以让使用者操作,以达到某些计算机的功能利用。 举例来说,办公室软件(Office)主要是用来让使用者办公用的;影像处理软件主要是让使用者用来处理影音数据的; 浏览器软件主要是让使用者用来上网浏览用的等等。