OS 内核定位
使用计算机的最终目的,是充分利用计算机所提供的能力完成目标任务。计算机硬件为任务完成提供了基础设施的保障。如典型的冯.诺依曼体系结构将计算机硬件分为五大部件。
而真正驾驭、驱动这些硬件,让其充分发挥效能,完成最终目标,则是计算机软件的核心任务。而软件的架构方式,也对硬件驾驭、使用的效率产生了直接的影响。
1) 由一个一体化的软件完成所有任务
一个直观的想法是,用一个一体化的软件完成所有的工作。则,这个软件不仅要完成核心的任务逻辑,与此同时,软件还必须完成对硬件的驱动和管理。
这种方式任务软件直接操作硬件,逻辑简单,执行效率高。但涉及诸多硬件操作细节,软件开发者不仅懂业务逻辑,还要了解硬件操作方法,负担较重,成本较高。对于大型任务根本没法满足,但对于一些小型系统、尤其是嵌入式系统,还有一定的应用。
2) 将一体化软件进行拆分 — 分层、分块
一体化软件编写需要了解硬件的操作细节,耗力费时;同时,软件的业务逻辑与硬件操作交叉在一起,如果发生硬件变更,直接导致大量软件代码的重新编写。为改善这些问题,引入分层、分块(分域)的设计理念,对一体化软件进行分割,把软件业务逻辑代码与硬件驱动控制代码进行拆分,让硬件控制的代码独立成为一个个专门的小软件或软件模块,每个小软件模块只针对特定的硬件进行控制,并对外提供统一的接口。软件的业务逻辑代码也成为一个独立的部分,专注于业务逻辑控制,当需要操作硬件时,则调用硬件控制模块的接口即可。
(分层、分块是解决复杂一体化问题的有效方法,在计算机领域经常见到)
此时,原来一体化的软件被“拆分”为若干个软件,且有了明确的分层、分块。位于底层的是各个硬件控制软件,它们专注于对硬件的各种操作细节,并将这些操作进行封装,将硬件的操作对外部进行屏蔽,对外提供一个统一的调用接口,这些软件成为硬件的驱动程序软件。上层软件聚焦于业务和任务目标逻辑的处理,它们不关系底层硬件操作的细节,需要使用硬件资源时,直接通过统一调用接口即可。这些上层软件成为业务或应用程序软件。
更近一步,通过一个软件统筹管理各个硬件驱动程序软件使用生命周期,负责一个硬件驱动软件何时使用、使用优先级确定、使用前预处理、使用后善后等等工作。如此,这个软件可以彻底将上层应用软件与底层硬件及其驱动软件进行隔离。它为上层应用软件提供了一种底层抽象,就是一堆接口的调用,具体细节怎么操作,上层应用不必关心;它为底层提供了一种上层抽象,只需封装好各种硬件操作接口,至于上面怎么用、何时用,底层也不必关心。
有个这个统筹管理的软件,就实现了为上层应用软件程序,提供一个更为抽象、更为通用的”虚拟计算机“的任务,上层应用软件可以根据任务不同,随意编写,只要使用统筹管理软件的统一接口调用,就可以使用这个软件背后所管理的计算机资源。也达到了统筹管理软件作为基础设施的效果。
(分层就是封装底层细节、向上统一接口,本质上就是对上提供一种虚拟化服务)
3) 多任务处理
随着计算机的发展,多任务、多应用并行处理已成为业务应用、提升硬件效率的迫切需要。如此,需要在一套计算机硬件系统上运行多个不同的应用程序。系统上运行的每个应用程序在设计之初,都是根据自身特定任务目标编写,根据自身需要使用计算机系统资源,不会考虑其他应用程序的存在。为此,对统筹管理软件提出了更高的要求,
- 对各个应用程序进行隔离,为每个应用程序提供一台独立的“虚拟计算机”。每个应用程序意识不到其他应用程序的存在,都认为自己在独自使用计算机资源;
(典型的“隔间(compartment)”设计) - 在计算机硬件资源有限情况下,合理管理、分配计算机资源给各个应用程序使用,比如合理对各个应用程序进行运行调度、合理安排各个应用程序的存储结构、存储位置等;