简单谈谈操作系统内核的组成和架构

本文是本人对学习操作系统的一些思考。

文章目录

  • 计算机硬件
  • 资源管理
  • 内核架构
    • 宏内核
    • 微内核
    • 混合内核
  • 后记

计算机由两部分组成: 硬件软件。软件又分为 系统软件应用软件

应用软件
系统软件
硬件

操作系统(操作系统内核)是计算机的系统软件,可以被看作是一个裸机程序,主要有两个功能:

  1. 管理计算机的资源(主要是硬件资源)
  2. 为应用程序提供访问计算机资源的入口

可以把内核划分为两层。

系统调用接口
资源管理

计算机硬件

首先了解一下计算机有哪些硬件资源。
简单谈谈操作系统内核的组成和架构_第1张图片
在如今的计算机体系中,可以把计算机硬件大致分为两部分:主机外设
主机包括CPU内存,也就是课本上说的运算器控制器存储器。它们是计算机执行程序和处理数据的核心。
剩余的计算机硬件都归为外设,这些就是课本上说到的输入设备输出设备。它们功能多样,有的用于长久保存程序和数据,有的用于和计算机外部通信,有的用于显示图形界面等等。但对于正在运行的程序来说,它们都是输入或输出的对象,可以通过句柄或其他标识进行读写

计算机硬件模块之间使用总线进行通信。

资源管理

知道了计算机硬件的构成,我们来看看该怎么管理这些硬件。
简单谈谈操作系统内核的组成和架构_第2张图片
内核的资源管理模块包括:

  1. 进程管理就是管理CPU,包括进程调度、进程切换、软硬中断等。
  2. 内存管理就是管理内存,包括内存分配、虚拟内存等。
  3. 为保证主机能识别到外设,内核中需要相应外设的驱动程序。设备驱动管理负责这个。
  4. 因为程序是以文件的方式访问硬盘的,因此文件系统就是管理硬盘。
  5. 图形系统对应着显卡。
  6. 网络组件对应着网卡。
  7. 其他I/O设备管理。

资源管理模块之间的通信方式有:函数调用消息

整个资源管理模块中存在硬件相关的代码(如进程切换时要对寄存器进行操作),为了提高内核的可移植性,可以把硬件相关的部分分离出来。
内核逻辑分层:

系统调用接口
资源管理
硬件相关

CPU在执行用户进程时,通常运行在用户态(也称用户空间),当调用到内核的系统调用接口时,会引发中断,CPU会切换到内核态(也称内核空间)执行内核代码,执行完内核代码CPU又回到用户态,执行用户代码
简单谈谈操作系统内核的组成和架构_第3张图片

内核架构

上面提到,计算机硬件包括主机和外设,资源管理也分为主机管理外设管理两部分,资源管理模块之间的通信方式有函数调用消息。这些正是区分宏内核微内核的关键所在。

没人规定宏内核该怎么实现、微内核该怎么实现、混合内核该怎么实现,能区分这些概念即可。下面的内核架构图是本人的一种理解。

宏内核

内核是一个巨大的进程,主机管理和外设管理都在内核里,管理模块之间通过函数调用进行通信。
简单谈谈操作系统内核的组成和架构_第4张图片

优点:
性能高。相比于消息,函数调用的开销更小。当用户代码通过系统调用接口请求内核的服务时,只需要陷入一次中断,内核就可以把请求结果返回给用户。
缺点:
安全性差。内核的资源管理模块之间高度耦合,一旦某个模块出问题,整个内核都会存在安全隐患。此外,代码的高度耦合会导致扩展性维护性变差。

微内核

内核是一个微小的进程,只包括最核心的资源管理功能(部分主机管理功能)。其他资源管理模块作为服务进程单独存在,管理模块之间通过进程间消息(IPC)进行通信。
简单谈谈操作系统内核的组成和架构_第5张图片

进程管理和内存管理的一部分也可能被放到内核外面,我们只需关注宏内核和微内核的异同即可。

优点:
安全性好。资源管理模块被隔离为数个独立的进程,当有一个进程出问题时,不会影响其他进程。符合代码设计的高内聚、低耦合原则,代码的扩展性和维护性都比较好。
缺点:
性能低。进程间通过消息通信,开销远远大于进程内的函数调用。当有一个用户进程请求内核的服务时,CPU先切换到内核态请求内核服务,内核又通过消息请求服务进程,服务进程把结果返回给内核,内核再把结果返回给用户进程,CPU再切回用户态。

混合内核

为了折中宏内核与微内核的优缺点,混合内核便诞生了。
混合内核是微内核的宏内核化,即在微内核的基础上,把部分服务进程安置在内核中。当用户进程请求内核服务时,如果内核自身能响应请求就直接向用户返回结果;如果不能,就通过消息向服务进程请求用户的请求,再把服务进程的响应返回给用户。综合了性能和安全性。

后记

内核的实现方式多种多样,要想知道内核的组成和架构到底是怎么回事,还是得结合具体的内核去分析,甚至自己设计和实现一种内核。

你可能感兴趣的:(操作系统,内核)