Linux内核设计与实现(一)一一Linux内核简介

单(宏)内核与微内核

微内核

微内核通过进程间通信来协调各个系统进程间的合作,这就需要系统调用,而系统调用需要切换堆栈以及保护进程现场,比较耗费时间

目前像Windows、macOS都是采用的微内核

宏内核

而宏内核都是通过简单的函数调用来完成各个部门之间的合作的,所以理论上宏内核效率要比微内核高

Linux的设计者大名鼎鼎的Linus就是用的宏内核辣,为什么呢,最合理的解释就是人家厉害啊,全部写完都没BUG啊

对比

它们之间的关系可以用维基百科这张图来表示

比喻一下就是微内核相当于民主共和制,宏内核相当于君主专制。

Linux内核特点

Linux支持动态加载内核模块

这就意味着我们可以尽情地编译内核

Linux支持对称多处理(SMP)机制

相比于传统的Unix,Linux能够支持SMP,虽然目前的Unix变体也能支持

Linux内核可以抢占

大多数Unix内核都不支持抢占

Linux内核对线程的独特定义

对内核来说,所有进程都一样,线程只不过是轻量的进程,只是一些共享资源的进程而已

Linux紧跟时代,自由奔放

Linux内核版本号

kernel 的命名规则

主版本号+从版本号+修订版本号+稳定版本号

编译内核

就是等辣

内核开发的特点

  • 内核编程时既不能访问C库也不能访问标准C头文件

  • 内核编程时必须使用 GNU C

  • 内核缺乏像用户空间那样的内存保护机制

  • 内核编程时难以执行浮点数运算

  • 内核给每个进程只有一个很小的定长堆栈

  • 因为内核支持异步中断、抢占和SMP,所以要注意同步和并发

  • 考虑可移植性

新世界的大门