linux的内核组成,Linux内核组成及功能

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

该博文只是粗略地整理Linux内核的一些基本知识结构:可以直接跳到思维导图看知识结构

有附上相关博文,可以供大家参考如果有错误,欢迎指出~Linux内核结构 内核提供的基本功能

 这些功能对应的哪些代码模块 内核功能增删-可加载模块(LKM)工作机制

 内核与用户空间通信方式

Linux内核结构

Linux内核提供的基本功能

1、进程调度(SCHED)进程调度负责控制进程对CPU的访问,当需要选择下一个进程运行时,由进程调度子系统根据某种算法选择最值得运行的进程。

如果某个进程还在等待其他资源,则该进程将不会被选择。

Linux的调度算法是基于优先级的。

2、内存管理 (Memory Management)用来管理多个进程对内存的使用

Linux支持虚拟内存,即在计算机中运行的程序,其程序代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只把当前使用的程序块保留在内存中,其余还没有运行的程序块,则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块 —— LKM支持。内存管理从逻辑上可以分为硬件无关部分:提供了进程的映射和逻辑内存的兑换

硬件有关部分:为内存管理硬件部分提供了虚拟接口。

3、虚拟文件系统 (Virtual File System)隐藏了各种硬件的具体细节,为所有设备提供了统一的接口

虚拟文件系统提供了数十种不同的文件系统:逻辑文件系统: Linux所支持的文件系统,如ext3, FAT等

设备驱动程序:为每一种硬件控制器所编写的设备驱动模块

4、网络接口 (Network Interface)

网络接口提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为:网络协议:实现每一种可能的网络传输协议

网络驱动程序:与硬件设备的通信。 每一种可能的硬件设备都有相应的设备驱动程序。

5、进程通信 (Interprocess Communication)

进程通信提供了进程之间的各种通信机制。分为三种主要的通信方式,适用于进程间;及一种内核态与用户态间的通信方式。

五种功能如下图:

83f09094c7d71e0b6566e13fd65f72b9.png

参考文档:

代码模块

源代码的主要模块可分为:

f2530192dd583f1550c04ada3d94a51b.png

因此,对应内核功能,除了头文件、通用内核库、平台兼容性(所有功能模块都会调用)外,内核功能与代码模块的对应为:

7fe76ace9c0e978b4a4720383c606b93.png

参考文档:

LKM工作机制

LKM是Linux内核为了扩展其功能所使用的可加载内核模块。它无须重新实现整个内核,而只需要动态加载,类似于局部渲染。因此,常被用作特殊设备的驱动程序。

具体机制如下图:

3b2ece8f4c2ba93a32d03b9bbb5b14d3.png

参考文档 :

内核与用户空间通信方式

通信方式依据来自的内核态不同,分为硬软中断与用户态,和进程上下文与用户态两种。分类的原因是硬软中断无法与用户态本来无关,而进程上下文则与用户的进程息息相关。硬软中断处于操作系统食物链的最顶端,本来没有进程能够中断它,它只能自行中断,这种机制就是自旋锁。一般的方法是,内核态通过向进程上下文发送消息,再由进程上下文向上级提出请求,因为它们共同维护一个临界区。而自Linux 2.4以来,netlink套接字提供了另一个通道,即用户态可以直接向软中断提出申请。这样,不经过进程上下文,减少了一个过程,就提高了实时性。

进程上下文本来就与用户态密切相关,它出于内核态的最底层,最接近民众,所以它通信的方式也比较亲民。可以用一般的进程的通信方式进行通信。

具体方式如下图:

00bc1ee2ed343a38eca81a098d1a50a3.png

参考文档:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值