【Linux内幕】一张图看懂linux内核架构

1.前言

Linux内核可以划分为5个组件部分,每个部分的功能定义都非常明确,各组件又为内核的其他组件提供相应的服务。这种划分可以从内核的源码树形结构中看到,在内核源码根目录下每个组件都有自己的目录和子树。
在这里插入图片描述
从代码角度来看Linux内核的架构,更为详实。本博客的“协议森林”系列也来源于此,主要是围绕“networking”展开的。
在这里插入图片描述

2.进程管理

负责创建、结束进程,管理内核的活动,如软件中断、tasklet等,管理进程间通信,如消息(message)、管道(pipe)等,实现进程调度(schedule)。进程调度是进程管理的重要任务,它处理所有活动的、等待被执行的和被阻塞(blocking)的进程调度,使所有应用和进程合理地共享处理器的运行时间。
什么是进程?进程(process)是一个正在执行的程序实例,各进程拥有自己独立的地址空间。进程通常在执行某个应用程序时启动,应用执行完成后结束。创建、控制和结束进程是操作系统内核的一项重要任务。在用户地址空间执行的进程是互斥的,它们只能访问系统分配给它们的存储空间。用户地址空间的进程也不能直接访问内核功能。
当用户进程需要访问设备或使用操作系统内核的功能时,必须通过系统调用(system call)来完成。系统调用将处理器切换到保护模式,随后访问内核的地址空间,在保护模式下,所有的设备和内存资源通过内核实现API访问。
除了常规的进程和系统调用外,在内核中还包含了几种其他活动,这几种活动对网络子系统而言尤其重要,因为网络功能就是在内核中处理的。
● 内核线程(kernel thread)。
● 中断(硬件中断)。
● 软件中断。
● tasklet。
● bottom half。

3.内存管理

内存是系统最主要的资源之一,计算机的性能在很大程度上与其所配备的内存有关。Linux内核内存管理的主要功能就是给进程分配地址空间,该地址空间只允许本进程自己访问。

4.文件系统

在Linux操作系统中,文件系统是整个系统的中枢。Linux与其他操作系统不同,几乎所有的操作都基于文件系统接口的处理,如设备驱动程序可以按文件方式访问设备,通过/proc文件系统可以访问Linux内核的数据和参数,这两个功能在调试时非常有效。

5.设备驱动程序

在所有的操作系统中,设备驱动程序都是硬件的抽象,通过它可以访问硬件。Linux可以用模块(模块)的方式实现设备驱动程序,提供了在系统运行时动态加载和卸载设备驱动程序的途径。

6.网络子系统

在Linux中所有的网络操作是由操作系统管理的。这是因为网络操作不能分配给某个进程完成。在处理收到的网络数据包时,数据包的接收是异步事件。接收数据包任务必须在进程处理这些数据包前先收集齐所有的网络包、标识数据,然后向上层传送,这就是为什么由内核的网络子系统负责处理数据包,而不是由某个进程和网络接口来处理。
在内核中还定义了大量的接口,目的是为了更方便地扩展内核功能,如虚拟文件系统接口(Virtual Filesystem Interface),可用于增加新的文件系统,现在Linux中能支持十多种不同的文件系统;可见Linux的开发人员定义这种接口所带来的优势。在Linux的网络体系结构中也定义了很多接口,用以支持动态增加网络协议和网络设备驱动程序。

加入讨论

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章