Linux Kernel 本质上看是一种软件,实现了进程管理器、内存管理器、文件系统、设备驱动以及网络管理组件来负责对接、管理计算机硬件平台,并通过系统调用(System Calls)为上层应用程序暴露硬件资源以提供程序运行环境。
系统调用为边界将 Linux 操作系统的体系架构分为用户态和内核态(包括系统调用)
Linux 进程拥有 4GB 内存地址空间,其中 3-4G 部分是内核态的地址空间,存放了整个内核的代码,所有内核模块以及内核所维护的数据。运行在 RING3 的用户程序代码可以通过系统调用主动访问 RING0 的内核代码来实现从用户态带内核态的切换。当进程陷入内核态时,被执行的内核代码会直接使用进程的内核栈资源。
微内核架构
在 1980 年代中期,卡内基梅隆大学的研究人员开发了一种名为Mach的操作系统,该系统使用微内核方法对内核进行了模块化。这种方法通过从内核中删除所有非必要组件并将它们实现为系统和用户级程序来构建操作系统。结果是一个较小的内核。关于哪些服务应该保留在内核中以及哪些应该在用户空间中实现,几乎没有达成共识。然而,通常,除了通信设施之外,微内核还提供最少的进程和内存管理
Unix 内核系统结构:
实践
内核管理
grubby --info=ALL | grep title # 列出引导条目
grubby --set-default $kernel_path # 配置默认内核
# grubby --set-default /boot/vmlinuz-<version>.<architecture>