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机制及内存优化屏障

内核内存布局和堆管理

多核调度分析

相关推荐
树℡独1 天前
ns-3仿真之应用层(五)
服务器·网络·tcp/ip·ns3
嵩山小老虎1 天前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模1 天前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a41324471 天前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Configure-Handler1 天前
buildroot System configuration
java·服务器·数据库
津津有味道1 天前
易语言TCP服务端接收刷卡数据并向客户端读卡器发送指令
服务器·网络协议·tcp·易语言
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
Genie cloud1 天前
1Panel SSL证书申请完整教程
服务器·网络协议·云计算·ssl
一只自律的鸡1 天前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)1 天前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考