Linux内核主要组成部分有哪些?

Linux 内核由几大子系统构成,分别为进程调度、进程间通信(IPC) 、内存管理、虚拟 文件系统和网络接口。这几大子系统既相互独立又有非常紧密的关联。图 3-5 展示了内核的 几大子系统之间以及这些子系统和计算机系统的其他模块之间的关系。

Linux内核主要组成部分有哪些?_第1张图片

接下来依次介绍内核中的各个子系统,其中需要重点介绍的是虚拟文件系统和网络接口,

因为它们和本书的核心内容“各种高性能网络方案的实现”的关联度最强。

1.进程调度

进程调度子系统控制系统中的多个进程对处理器核的占用,使得多个进程能在处理器核 中“微观串行、宏观并行”地执行,并尽量做到核间的负载均衡,提升系统的总体运算能力。内 核的其他子系统都需要在进程的上下文中执行,接受进程调度子系统的管理。

2.内存管理

内存是计算机中的重要资源, 处理它时所用的策略对系统安全和运行性能至关重要。内 存管理子系统实现了简单的 malloc/free 以及更多复杂的功能,并通过一套函数调用向内核中 的其他子系统提供这些功能。前文提到的用户空间和内核空间、页表等机制也属于内存管理 子系统的管理范围。

3.虚拟文件系统

Linux  遵循 “一切皆文件”的设计思路, 基本上只要是用户(也可以理解为应用程序) 能感知到的功能,在 Linux  系统中就被抽象成了文件。比如下面这些应用场景或功能都会涉 及文件。

•    Linux 系统中的可执行程序属于二进制文件。

•    程序启动的时候可能需要加载一些配置文件,程序运行的时候会产生一些日志文件或 者中间文件。这些文件一般都是文本文件。

•    如果程序产生的日志需要打印到控制台上,其操作的对象也是一个文件,这个文件是 标准输出文件 stdout。类似地还有标准输入文件 stdin 和标准错误输出 stderr 。

•    各个程序之间可能会进行数据的交互,比如一个程序的输出是另一个程序的输入,这 也需要操作一个文件, 这种文件称为管道文件。

•    不同的程序(甚至跨主机) 之间通信还可以使用套接字(socket) , 套接字也是一个 文件。我们在编写这种程序的时候需要打开一个套接字文件。

•    运行中的程序可能需要访问一些硬件设备,每个硬件设备在 Linux 系统中也被映射成 了一个文件, 比如硬盘对应的文件一般是/dev/sd* 。

•    很多文件会被放在文件夹中,文件夹本身也是一种文件。

•    Linux 内核中有很多模块也生成了文件,供应用程序访问。比如读取/proc/meminfo 文 件可以获取内存信息, 写“1”到/sys/bus/pci/rescan  文件可以要求内核重新扫描 PCI 设备。这两个文件分别是由内存管理子系统和 PCI 总线模块生成的。

Linux 虚拟文件系统正是为了实现这种“一切皆文件”的设计思路而产生的。如图 3-6 所 示,虚拟文件系统独立于各个具体的文件系统,是对各种文件系统的一种抽象,使得应用程 序无须知道文件以什么样的(文件系统)格式保存在磁盘上(很多文件甚至没有保存在磁盘)。 它还隐藏了各种硬件的具体细节,为所有设备提供了统一类型的接口。在具体实现上,Linux  虚拟文件系统为上层应用程序提供了统一的 vfs_read() 、vfs_write()等接口,并调用具体底层 文件系统或者设备驱动程序中实现的 file_operations 结构体的成员函数。

Linux内核主要组成部分有哪些?_第2张图片

4.进程间通信

Linux 支持进程间的多种通信机制,包括信号量、共享内存、消息队列、管道、套接字 等。这些机制可以用来实现在进程间传递数据、协助进程互斥访问各种资源、同步进程间的 操作流程等功能。

5.网络接口

Linux  内核的网络接口子系统提供了对各种网络标准和各种网络硬件的支持,它可以分 为两个部分:Linux 网络协议栈和网络设备驱动程序。如图3-7 所示, 网络协议栈部分负责实 现各种网络传输协议,提供路由和地址解析等功能。网络设备驱动程序负责操作具体的硬件 设备(主要是网卡), 直接实现计算机和网络间的数据交换。

Linux内核主要组成部分有哪些?_第3张图片

 

 本书摘自:《Linux高性能网络详解:从DPDK、RDMA到XDP》

Linux内核主要组成部分有哪些?_第4张图片

细致剖析Linux高性能网络主流解决方案,涵盖DPDK和RDMA等当下热点技术,同时涉及前沿的XDP技术,深入理解Linux网络。

《Linux高性能网络详解:从DPDK、RDMA到XDP》主要介绍了DPDK、RDMA和XDP三种高性能网络技术的原理、使用方法和实现方案。

《Linux高性能网络详解:从DPDK、RDMA到XDP》总计26章,分为四大部分。第1部分介绍了计算机网络、计算机硬件和Linux操作系统的基础知识,以及软件和硬件之间传递信息的方式、以内核协议栈为基础的网络方案和Corundum。第2部分介绍了DPDK的入门知识、DPDK的内存管理、UIO DPDK的基本使用方法、测试和分析高性能网卡,以及如何为Corundum编写DPDK驱动程序。第3部分包括RDMA技术简介、软件架构、基本元素、基本操作类型及其配套机制、传输服务类型、应用程序执行流程、主要元素的实现、数据传输、RoCEv2网卡的配置、性能测试工具等内容。第4部分包括XDP简介、XDP教程代码分析、简单的XDP性能测试、如何让网卡驱动程序支持XDP功能等内容。

《Linux高性能网络详解:从DPDK、RDMA到XDP》适合对高性能网络技术感兴趣的软件和硬件开发工程师、系统工程师、网络性能分析人员阅读。

你可能感兴趣的:(linux,运维,服务器)