Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

引言

设计目标

本项目的设计目标是从从传统宏内核与微内核出发, 改变内核功能模块的运行方式,由传统的函数调用方式转变为独立内核线程运行方式,内核线程拥有独立线程栈,发生失效时可通过微重启的方式恢复服务,不影响内核全局。

一般来说,将所有内核功能都集成在内核态的宏内核具有很好的性能,但是安全性和稳定性较差,内核中任何一个模块出现故障(一般为低质量的驱动代码)都会导致内核崩溃。微内核为了解决这个问题,将非核心的内核服务移动到用户态以独立的用户进程提供,但这也带来了频繁的进程间通信开销导致的性能问题。关于宏内核与微内核的更具体的讨论,可以参考内核架构一节。

本项目参考了以Windows-NT为代表的混合内核,综合宏内核和微内核的优点,尝试在增强内核服务可靠性的前提下尽量保证内核性能。具体来说,本项目:

  • 采用基于内核线程服务模型的混合内核架构。(在 内核架构中详细说明)

  • 基于Rust无栈异步协程机制和内核服务线程模型实现了一个多对多线程模型;

  • 为了进行对比,实现了宏内核、混合内核两种内核对象,内核可以以两种架构模式运行;

  • 直接实现Linux系统调用;

  • 初步完成了对于musl-libc的支持,支持c语言应用程序(静态链接);

  • 正在逐步完成对sqlite3, busybox等典型Linux应用程序的支持;

文档的说明

本文档主要说明内核设计中的主要思想和设计原则,以逐步揭示内核的整个架构和运行过程,必要时会讨论内核数据结构的设计,但不会对所有代码进行详细说明。

在本文档中,我们将我们实现的内核称为nCore。