二、操作系统内核
Linux 内核 vs Windows 内核
内核
定义
- 内核作为应用连接硬件设备的桥梁,应⽤程序只需关心与内核交互,不⽤关心硬件的细节
功能
- 进程调度:管理进程线程,决定哪个进程线程使用cpu
- 内存管理:管理内存,决定内存的分配和回收
- 硬件通信:为硬件和进程之间提供通信能力
- 系统调用:如果应用程序需要运行更高权限的服务那么就要有系统调用,它是用户程序与操作系统之间的接口
如何工作
内核有很高权限可以控制cpu、内存等硬件,应用程序权限很小,大多数操作系统把内存分外两个区域:
- 内核空间:只有内核程序可以访问
- 用户空间:给应用程序使用
使用用户空间常说程序在用户态执行,使用内核空间则说程序在内核态执行。应用程序要用内核空间则要通过系统调用,产生一个中断,cpu中断当前的用户程序,跳转到中断处理程序执行内核程序。内核处理完后把cpu执行权限交还用户程序回到用户态。
Linux 的设计
Linux 内核设计的理念主要有这几个点
- MutiTask,多任务
- SMP,对称多处理
- ELF,可执行文件链接格式
- Monolithic Kernel,宏内核
MutiTask
多任务,多个任务同时执行,此处“同时”指并发或并行
- 对于单核 CPU 时,可以让每个任务执行一小段时间,时间到就切换另外⼀个任务,从宏 观⻆度看,⼀段时间内执行了多个任务,这被称为并发。
- 对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。
SMP(Symmetrical Multi-Processing)
对称多处理,代表着每个CPU 的地位是相等的,对资源的使⽤权限也是相同的,多个 CPU 共享同⼀个内存,每个CPU都可以访问完整的内存和硬件资源。因此每个程序都可以被分配到任意一个CPU上执行
ELF(Executable and Linkable Format)
ELF 的意思是可执行文件链接格式,它是 Linux 操作系统中可执行⽂件的存储格式,ELF 把⽂件分成了⼀个个分段,每⼀个段都有自己的作⽤。(P123图)
ELF ⽂件有两种索引,Program header table 中记录了「运⾏时」所需的段,⽽ Section header table 记录了⼆进制⽂件中各个「段的⾸地址」
执行ELF⽂件的时候,会通过「装载器」把 ELF ⽂件装载到内存⾥,CPU 读取内存中的指令和数据,于是程序就被执行起来了
Monolithic Kernel
宏内核,Linux 内核架构就是宏内核,意味着 Linux 的内核是⼀个完整的可执⾏程序,且拥有最高的权限。宏内核的特征是系统内核的所有模块,⽐如进程调度、内存管理、⽂件系统、设备驱动等,都运行在内核态。Linux 也实现了动态加载内核模块的功能,例如⼤部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为⽅便、灵活。
与宏内核相反的是微内核,微内核架构的内核只保留最基本的能力,把一些应用放到用户空间,提高了操作系统的稳定性和可靠性。
还有⼀种内核叫混合类型内核,它的架构有点像微内核,内核⾥⾯会有⼀个最小版本的内核,然后其他模块会在这个基础上搭建,然后实现的时候会跟宏内核类似,也就是把整个内核做成⼀个完整的程序,⼤部分服务都在内核中,这就像是宏内核的⽅式包裹着⼀个微内核。(内核嵌套的感觉)
Windows 设计
Window 的内核设计是混合型内核,内核中有⼀个 MicroKernel 模块,这个就是最⼩版本的内 核,⽽整个内核实现是⼀个完整的程序,含有⾮常多模块。
Windows可之心文件叫PE,称为可移植执行文件(.exe,.dll,.sys……)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix