Linux总结篇

本文详细介绍了Linux内核的四大核心组成部分:进程管理、内存管理、虚拟文件系统和网络子系统。进程管理涉及调度策略和系统调用接口;内存管理关注虚拟内存机制和物理内存的抽象;虚拟文件系统实现了设备的统一文件访问;网络子系统则涵盖了网络协议、设备驱动和系统调用接口。这些模块共同构成了Linux的强大基石。

inux内核是一个非常庞杂的系统,主要的组成部分有虚拟文件系统、进程管理、内存管理、network网络、设备驱动。虚拟文件系统主要是将所有的设备都抽象为文件,通过统一的接口访问;进程管理就是通过一定的方式进行进程调度,使CPU资源得到最合理的利用;内存管理主要是管理内存的资源,提供虚拟内存的机制,将使用的内存比本身拥有的更多,将不用的资源映射到磁盘上,真正的内存只存储近期访问的数据;设备驱动,管理各种第三方设备的适配和接入;network主要负责网络设备的管理。(网络相关的源码:tcp.c tcp_ipv4.c tcp_output.c tcp_input.c tcp_ipv6.c)

P1-1: linux内核组成概览

下面,我们就来逐一分析一下每一个模块。

  1. 进程管理

进程管理主要是对于进程管理及进程调度,控制进程合理的访问CPU。下图是linux内核中,进程管理的模块划分图,主要有4个部分组成:

P1-2: 进程管理模块图

上图中看出用户层通过system call Interface调用到内核中,Architecture-independent Scheduler这个模块会和调度策略(“Scheduling Policy)合作来决定接下来哪个进程获取到CPU,然后Architecture-specific Schedulers 这个模块主要是用于将CPU的控制抽象为接口,这些控制主要是在suspend和resume的时候使用,牵涉到CPU的寄存器以及汇编指令的操作等。总结下来就是由Schedule Policy,System Call Interface,Architechture-Independent Scheduler以及Architecture-specific Schedulers这四个模块组成。

2. 内存管理

内存管理的主要工作是对于机器内存的资源访问的控制,多个进程可以安全的共享内存空间。同时还提供出虚拟内存的机制,可以让进程使用多余机器物理内存的空间。虚拟内存的机制实际就是进程先将未使用的那部分资源存到非易失内存中,需要使用的时候再加载到内存中进行调用。虚拟内存的机制实际上是物理内存和进程所使用的内存形成一种映射关系。这种映射以进程为单位,因此不同的进程可以使用相同的虚拟内存,而这些相同的的虚拟内存可以映射到不同的物理内存上面。

下图是内存管理的组成部分:

P1-3: 内存管理模块图

同样也是有统一的系统调用接口来分割内核空间和用户空间。而对于最下层的物理内存来说,则需要 Architecture Specific Managers来提供抽象的接口进行操作。中间的 Architecture Independent Manager这个就是提供内存管理的机制,包括进程的memory mapping以及虚拟内存的映射。

3. 虚拟文件系统

虚拟文件系统,简称VFS。主要是将不同功能的设备通过统一的文件接口来访问,这也就是一切皆为文件的由来。但linux上面并没有做到真正的一切皆为文件,比如网络,内存等访问还不是文件。 VFS的功能是管理各种各样的文件系统,屏蔽他们之间的差异,以统一的方式为用户提供文件操作的接口。

linux内核除了传统的文件磁盘系统抽象为虚拟文件系统外,设备文件系统、内存文件系统等也都是抽象出的子系统。下图是文件系统模块图:

P1-4: 文件系统模块图

图上可以看出:系统调用接口和设备驱动这两个分别是用来抽象用户的操作以及硬件设备的。然后就是设别独立接口,这个模块定义了描述硬件设备的统一方式所有的设备驱动都遵循这个定义,可以降低开发的维度。对应的上层也会有类似的接口来向上封装出接口,来屏蔽下层的硬件形态,用户只需要获取硬件设备和逻辑文件接口。Logic System这个表示的就是逻辑文件系统,每一个系统都会有一个对应的逻辑文件系统,实现具体的文件逻辑。

4. 网络子系统

P1-5:网络模块图

从图中可以看出,上层的网络数据首先通过系统调用到内核中,然后根据不同的网络协议进行传输,然后经过网卡驱动的转发,最终到达硬件设备。相关的名词解释如下:Network Device Drivers,网络设备的驱动,和 VFS 子系统中的设备驱动是一样的;Device Independent Interface,和 VFS 子系统中的是一样的;Network Protocols,实现各种网络传输协议,例如 IP, TCP, UDP 等等;Protocol Independent Interface,屏蔽不同的硬件设备和网络协议,以相同的格式提供接口(socket); System Call interface,系统调用接口,向用户空间提供访问网络设备的统一的接口。

总结:

今天只是总体的认识了linux内核的实现。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被大佬糊弄的只会点灯的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值