Linux内核

内核分类

内核在整个Linux系统的重要性不言而喻。

|----------------------|
| USER Applications |
| O/S Services |
| Linux Kernel |
| Hardware Controllers |

系统属于软件的范畴,负责管理系统硬件资源,同时为应用程序开发和执行提供配套环境。那么OS必须具备:

  • 为应用程序提供执行环境;
  • 为多用户和应用程序管理计算机上的硬件资源;
  • 虚拟性
  • 并发性

内核分为宏内核和微内核,其中

1、宏内核:所有的内核代码都编译成一个二进制,所有的内核代码都运行在一个大内核地址空间里,内核代码可以直接访问和调用,效率高并且性能好。具体框架是:

2、微内核:把操作系统分成多个独立的功能模块,每个功能模块之间的访问都需要通过消息来完成,因此效率没有那么高。具体架构如下:

宏内核结构设计简洁性能较好,而微内核架构稳定性和实时性更好。

Linux内核体系架构如下:

Linux内核

1、Linux内核特性

  • Linux内核的组织形式为整体式结构;
  • Linux内核调度方式简单而高效;
  • Linux支持内核线程(守护进程);
  • Linux支持多种平台的虚拟内存管理;
  • Linux内核支持虚拟文件系统(VFS,Virtual File System);
  • Linux的模块机制使得内核保持独立而又非常容易扩充;
  • 增加系统调用主要是满足特殊需求;
  • Linux内核网络模块面向对象的设计思想架构(支持多种协议、多种网卡驱动程序等);

2、系统调用本身也是由若干指令构成的过程,实现一些特定的服务,但与一般过程不同区别在于:系统调用是运行内核态(系统态),而一般过程运行在用户态。内核实际是抽象的资源操作到具体硬件操作细节之间的接口。

3、Linux内核子系统之间的关系

进程调度 控制着进程对CPU的访问操作。

内存管理(MM):允许多个进程安全地共享主存空间。

虚拟文件系统(VFS):分为设备驱动程序和逻辑文件系统。

网络管理:提供对各种网络标准协议的存取和网络硬件的支持。

进程间通信:支持进程间各种通信机制。

Linux内核代码目录

arch:不同平台体系结构的相关代码;

block:设备驱动;

certs:与认证和签名相关代码;

cryto:内核常用压缩算法,常用加密算法等等源代码;

documentation:描述模块功能和协议规范代码;

drivers:驱动程序(USB总线,PCI总线,显示,网卡等);

fs:虚拟文件系统VFS代码;

include:内核源码依赖的绝大部分头文件;

init:内核初始化代码,直接关联到内存各个组件入口;

ipc:进程间通信实现,比如信号量,共享内存等;

kernel:内核核心代码,包括进程管理、IRQ等;

lib:c标准库的子集;

licenses:Linux内核根据Licenses/preferred/GPL-2.0中提供GNU通用公共许可证版本2等;

mm:内存管理实现;

net:网络协议代码,TCO,wifi,ipv6等等;

samples:内核实例代码;

scripts:编译和配置内核所需脚本;

security:内核安全模型相关代码;

sound:声卡驱动源码;

tools:与内核交互

usr:用户打包和压缩内核的实现的源码;

virt::kvm虚拟化目录相关;

Linux内核目录文件如下:

readme:编译内核信息;

.clang-format:平时开发团队进程合作的时候要注意代码格式化;

COPYING:许可和授权信息;

CREDITS:贡献者列表;

Kbuild:内核设定脚本;

Kconfig:开发人员配置内核的时候所用到参数等;

MAINTAINERS:目前维护开发人员列表;

Makefile:编译内核主要文件;

README:编译内核信息;

内核代码主要以.c和.h为扩展名的文件;

进程原理及系统调用

1、进程有两种特殊的形式:没有用户虚拟地址空间的进程叫内核线程,共享用户虚拟地址空间的进程叫用户线程。共享同一个用户虚拟地址空间的所有用户线程叫线程组。

c语言标准库进程 Linux内核进程

包括多个线程的进程 线程组

只有一个线程的进程 任务或进程

线程 共享用户虚拟地址空间的进程

2、Linux内核提供API函数来设置进程的状态:

TASK_RUNNING(可运行状态或者可就绪状态);

TASK_INTERRUPTIBLE(可中断睡眠状态,又叫浅睡眠状态);

TASK_UNINTERRUPTIBLE(不可中断状态),深度睡眠状态;我们可以通过ps命令查看被标记为D状态的进程;

__TASK_STOPPED(终止状态);

EXIT_ZOMBIE(僵尸状态);

调度器及CFS调度器

实时调度类及SMP和NUMA

进程优先级与调度策略

RCU机制及内存优化屏障

内核内存布局和堆管理

多核调度分析

相关推荐
Johny_Zhao18 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao1 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash3 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行4 天前
Linux和window共享文件夹
linux
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器