21. 什么是内核呢?内核有哪些功能?内核是怎么工作的?
(1)内核是应用与硬件设备之间连接的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。
(2)现代操作系统的内核一般具有以下4个功能:
- 管理进程、线程,决定哪个进程、线程使用CPU,也就是
进程调度
的能力; - 管理内存,决定内存的分配和回收,也就是
内存管理
的能力; - 管理硬件设备,为进程与硬件设备之间提供通信能力,也就是
硬件通信
能力; 提供系统调用
,如果应用程序要运行更高权限的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。
(3)大部分操作系统,把内存分成了两个区域:
- 内核空间,只有内核程序才能访问;
- 用户空间,专门给应用程序使用。
内核程序执行在内核态,用户程序执行在用户态。应用程序如果需要进入内核空间,就需要通过系统调用,当应用程序使用系统调用时,会产生一个中断。发生中断后,CPU会中断当前正在执行的程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核程序执行完成后,主动触发中断,把CPU执行权限交回给应用程序,回到用户态继续执行程序。
22. Linux和Windows系统的设计理念
- Linux:MultiTask 多任务、SMP 对称多处理、 ELF 可执行文件链接格式、Monolithic Kernel 宏内核;
- Windows:MultiTask多任务、SMP对称多处理、PE 可执行文件格式、混合型内核。
23. 内核的架构分为哪几种?
对于内核的架构一般分为以下三种类型:
- 宏内核,包含多个模块,整个内核像一个完整的程序;
- 微内核,有一个最小版本的内核,一些模块和服务则由用户态管理;
- 混合内核,是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序。
Linux的内核设计上采用了宏内核,Windows的内核设计上则采用了混合内核。
这两个操作系统的可执行文件格式也不一样,Linux可执行文件格式叫作ELF,Windows 可执行文件格式叫作PE。