小林图解操作系统结构
二、操作系统结构
2.1 Linux内核 vs Windows内核
计算机是各种外部硬件设备组成的,比如内存、CPU、硬盘等,内核作为应用连接硬件设备的桥梁。应用程序只需关心与内核交互,不关心硬件的细节。
内核一般提供四个基本能力:
- 管理进程、线程,决定哪个进程、线程使用CPU,也就是进程调度的能力;
- 管理内存,决定内存的分配和回收,也就是内存管理的能力;
- 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是硬件通信能力;
- 提供系统调用,如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。
内核的工作原理:
内核具有很高的权限,而应用程序的权限很小,因此大多数操作系统,把内存分成了内核空间(只有内核程序可以访问,内核态)和用户空间(专门给应用程序使用,用户态)两种。
系统调用的过程:
- 对于单核CPU,可以每个任务执行一小段时间就切换到另外一个任务,宏观角度看一段时间执行了多个任务,这被称为并发。
- 对于多核CPU,多个任务可以同时被不同核心的PU同时执行,这就称为并行
Linux内核设计的几个特点:
- MultiTask:多任务可以同时执行;(并发或并行)
- SMP:对称多处理,每个CPU的地位是相等的,对资源的使用权限也是相同的;
- ELF:可执行文件链接格式;
- Monolithic Kernel:宏内核,Linux的内核架构是一个完整的可执行程序,且拥有最高权限;系统内核的所有模块,比如进程调度,内存管理,文件系统,设备驱动等都运行在内核态;
对于内核的架构一般有这三种类型:
- 宏内核,包含多个模块,整个内核像一个完整的程序;
- 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
- 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序;
Linux 的内核设计是采用了宏内核, Window 的内核设计则是采用了混合内核。
这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF, Windows 可执行文件格式叫作 PE。