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

内核内存布局和堆管理

多核调度分析

相关推荐
-VE-1 小时前
myshell
linux·c++
明 庭2 小时前
通过 Docker 部署 pSQL 服务器的教程
服务器·docker·容器
破-风5 小时前
linux的用法
linux·运维·服务器
涛ing8 小时前
32. C 语言 安全函数( _s 尾缀)
linux·c语言·c++·vscode·算法·安全·vim
__雨夜星辰__8 小时前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
大耳朵土土垚8 小时前
【Linux】日志设计模式与实现
linux·运维·设计模式
学问小小谢9 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
yaoxin52112310 小时前
第十二章 I 开头的术语
运维·服务器
ProgramHan10 小时前
1992-2025年中国计算机发展状况:服务器、电脑端与移动端的演进
运维·服务器·电脑