宏内核
宏内核(英语:Monolithic kernel),也译为集成式内核、单体式内核,一种操作系统内核架构,此架构的特性是整个内核程序是一个单一二进制可执行文件,在内核态以监管者模式(Supervisor Mode)来执行。相对于其他类型的操作系统架构,如微内核架构或混合内核架构等,这些内核会定义出一个高阶的虚拟接口,由该接口来涵盖描述整个电脑硬件,这些描述会集合成一组硬件描述用词,有时还会附加一些系统调用,如此可以用一个或多个模块来实现各种操作系统服务,如进程管理、并发(Concurrency)控制、存储器管理等。
概论
宏内核被视作为运行在单一地址空间的单一的进程,内核提供的所有服务,都以特权模式,在这个大型的内核地址空间中运作,这个地址空间被称为内核态(kernel space)。它通常是以单一静态二进制文件的方式被存储在磁碟,或是缓冲存储器上,在开机之后被加载存储器中的内核态,开始运作。
它的优点是设计简单。在内核之中的通讯成本很小,内核可以直接调用内核态内的函数,跟用户态的应用程式调用函数一样,因此它的性能很好。在1980年代之前,所有的操作系统都采用这个方式实现;即使到了现在,主要的操作系统也多采用这个方式。
微内核的支持者认为,宏内核的移植性不佳,即使有的宏内核将其运作从整体性运作拆分成几个服务模块,并让各模块各自运作,其操作系统的代码依然是高度紧密的,很难修改成其他类型的操作系统架构。此外,所有的模块也都在同一块寻址空间内执行,倘若某个模块有错误、瑕疵(Bug),执行时就会损及整个操作系统运作。反过来,如果整块性架构的操作系统在开发设计时相当完善,并经测试验证后具有高度可靠性,则操作系统内的各软件组件因具有高度紧密性,如此在系统的低端运作上将格外有效率。
可加载性的模块
现在多数采行整块性架构设计的操作系统,如OpenVMS、Linux、FreeBSD、以及Solaris等,都已经能在运作执行阶段中,以动态方式来加载(Load)、卸载(Unload)可执行的模块,不过这些模块是属于二进制代码的层次,或称映像层次,而非内核架构的层次。即使宏内核进行模块化转化,也不会与微内核或混合内核架构的内核产生区分上的混淆,因为微内核、混合内核的模块是属于系统架构的层次。
就实务上,动态加载/卸载模块的作法,等于是用一种较简易的方式来弹性管控执行中的操作系统内核,若没有动态加载/卸载机制,操作系统的内核想要进行任何的调整、变换,都必须重启才能达成。因此模块化是必然且必要的,如此才能让内核功效轻松地扩展、延伸,此外也能适时减轻硬件的执行运作负担。
另外,有些整块性操作系统为了让它的内核态达到最小化,也会运用动态加载/卸载机制来达成此一目标。
部分整块性架构的操作系统举例
相关条目
参考文献
- 锺斌贤; 曾煜棋,颜春煌. 作業系統. 国立空中大学. ISBN 957-661-461-9.
- 天野 司(Tsukasa Amano). How Windows Work-視窗系統是怎麼運作的. 博硕出版社. ISBN 957-527-867-4.