深入理解Linux Kernel内核整体架构(图文详解)

嘿,如果我们谈论Linux内核,它真的很复杂。
2 02 2 年我还在某个城市,那时候学习Linux内核真是让人不知所措。
内核架构,好吧,我得画个图来解释清楚了。
首先我们来说说核心功能,就是管理硬件设备,让应用程序能够运行。

然后内核架构分为五个主要子系统:进程调度、内存管理、虚拟文件系统、网络和进程间通信。
每个子系统都有自己的小宇宙。

流程规划意味着谁先跑、谁最后跑。
这一点非常重要,而且必须公平。
一个特定的进程不可能总是占用CPU。
内存管理是指内存的划分和使用方式。
它还需要虚拟内存,因此该进程可能会占用比实际内存更多的空间。

虚拟文件系统,名字听起来很复杂,但它实际上是将各种设备作为文件进行管理。
硬盘驱动器和网络受到同等对待。

网络子系统旨在使计算机能够访问并连接到互联网。
这也是非常关键的。

进程间通信是不同进程之间进行通信的方式。
虽然它不直接管理硬件,但仍然非常重要。

每个子系统下面还有更小的模块,比如:B、进程调度与策略和架构相关的调度器、内存管理与硬件相关的管理、虚拟文件系统与设备驱动、网络子系统与协议栈。

内核源码比较复杂。
它分为几个目录。
例如,“include”是头文件,“kernel”是核心代码,“mm”是内存管理,“fs”是文件系统,“net”是网络,“arch”是架构,“drivers”是设备驱动,“lib”是库函数,“crypt”是加密,“security”是安全,“virt”是虚拟化。

嘿,说起这个我就哭了。
我当时很困惑。
我花了很长时间才明白。
也许我有偏见,但Linux内核确实很深奥。

Linux内核分析:理解Linux操作系统的核心

Linux内核,说白了就是Linux系统的老大。
注意硬盘、内存等硬件以及CPU的工作原理。

流程管理: 只需关心正在运行的程序即可。
比如你打开浏览器或者微信,这些都是流程。
内核使用调度算法来确定哪个程序将首先使用CPU。

FCFS,先到先得,就像排队一样,老老实实排队。

SJF,最短的工作先完成,最快的先完成。

轮流方式,每个人轮流,每个人都被分配一定的时间。
您还需要考虑流程如何起源、如何结束以及如何处理状态更改。

内存管理: 物理内存是计算机中的RAM。
虚拟内存使程序认为内存很大,但实际上是使用硬盘作为缓存。

物理内存管理就是划分内存,用完再归还。

虚拟内存管理将程序感知到的地址转换为实际的物理地址。
还有页面交换。
如果内存不足,则首先将不常用的数据放在硬盘上。

文件系统的事情: Linux支持多种文件系统,例如ext4 、NTFS和FAT。
请小心保存、读取和删除文件的方式。
无论您使用哪种系统,操作都是相似的。

设备驱动程序: 只需照顾好鼠标和键盘等硬件设备即可。
允许这些设备与操作系统进行通信。

代码示例:
进程调度:您可以更改进程的优先级,看看是否可以运行得更快。

创建进程意味着打开一个新程序,为其指定参数,然后将其添加到进程列表中。

内存管理:使用kmalloc申请内存,使用kfree返回内存。

文件系统:打开文件,读取一些内容,然后关闭它。

说实话,内核相当复杂。
但当你拆开它时,每个模块都完全相同。
例如,流程规划不仅仅是排队并看看谁先完成工作。
内存管理(即分块)还不够。

Linux内核就是这样,它管理硬件并使程序能够运行。
如果你理解了它,你就会知道这个系统是如何工作的。