自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 第23天:实时进程调度:SCHED_FIFO/SCHED_RR 的嵌入式实时应用

今天,我们将深入探索Linux实时调度的两大核心武器:SCHED_FIFO 和 SCHED_RR,看看它们是如何在嵌入式实时系统中发挥关键作用的。别眨眼,因为这可能是你理解Linux实时调度最重要的一课。

2026-06-30 16:02:12 377

原创 第22天:CFS 调度:完全公平调度的核心原理

摘要:Linux进程调度器从O(1)到CFS(完全公平调度器)的进化,解决了高优先级进程"饿死"低优先级的问题。CFS通过虚拟运行时间(加权实际CPU时间)和红黑树管理进程,确保公平性。其核心机制包括动态计算虚拟时间、高效选择下一个进程(红黑树最左节点),并在时间片耗尽或进程主动放弃CPU时触发调度。CFS优势在于公平性、低延迟和代码简洁,但面临红黑树操作开销和实时性不足的局限。实践中可通过ps、chrt等工具观察调度行为,其中I/O密集型进程因频繁休眠会获得更多实际CPU时间。

2026-06-30 15:59:53 606

原创 第21天:信号高级机制:信号掩码、实时信号与信号队列

Linux信号机制深度解析:从基础到高级应用 本文深入剖析了Linux信号机制中的三大核心技术: 信号掩码(Signal Mask) 进程/线程级别的信号过滤机制 通过sigprocmask和pthread_sigmask实现精确控制 典型应用:多线程信号隔离处理 实时信号(Real-Time Signals) SIGRTMIN到SIGRTMAX范围(34-64) 支持信号排队和数据携带(siginfo_t) 通过sigqueue发送带附加信息的信号 信号队列管理 使用sigwaitinfo/sigtime

2026-06-30 15:57:53 324

原创 第20天:信号内核基础:信号的本质与内核信号处理流程

本文深入剖析了Linux信号机制的内核实现原理,从信号产生、传递到处理的全过程。信号作为进程间通信和事件通知的核心机制,其本质是一种软件中断,能够异步中断进程执行流程。文章详细解析了内核中信号管理的关键数据结构(sigpending、sighand_struct等)和核心函数(send_signal、do_signal等),并通过流程图展示了信号处理的完整生命周期。特别分析了SIGKILL/SIGSTOP不可阻挡的设计考量,以及常见信号场景(如Ctrl+C终止、子进程通知等)。最后提出实战挑战:实现支持优雅

2026-06-30 15:56:39 175

原创 续第18天:Linux 内核 Makefile 编译指南

本文档详细介绍了Linux内核编译的基本流程和常用make命令。主要内容包括:1. Makefile基本结构解析;2. 常用编译命令分类(配置/编译/清理/安装);3. 详细编译流程说明(配置→准备→编译→链接→安装);4. 核心构建变量和高级编译技巧(增量编译/外部模块/交叉编译);5. 常见问题解决方案及性能优化建议。文档提供了从基础配置到高级定制的完整指导,并列出了常用命令速查表,帮助开发者高效完成内核编译工作。通过该指南,读者可以掌握定制化编译Linux内核的核心方法。

2026-06-29 12:09:35 158

原创 第19天:pthread库映射:用户态线程与内核线程的关系

文章摘要: Linux中用户态线程(如pthread)通过NPTL库与内核线程建立一对一映射,核心机制依赖clone()系统调用。线程创建时,内核生成独立的task_struct结构体,共享进程资源但拥有唯一TID。关键点包括: 线程模型:Linux采用1:1模型,每个pthread对应一个内核调度实体; 内核映射:通过CLONE_VM等标志实现资源共享,task_struct记录线程状态; 调度机制:CFS调度器统一管理线程/进程,支持多种调度策略; 同步优化:futex实现高效用户态同步,减少内核切换开

2026-06-29 12:08:14 794

原创 第18天:Linux 内核项目组织结构文档

本文档概述了Linux内核6.6.30版本的项目组织结构,旨在帮助开发者快速理解内核架构。主要内容包括:1)项目目录结构详解(arch/架构相关、block/块设备、fs/文件系统等核心目录);2)关键文件说明(如init/main.c启动入口、kernel/sched/core.c调度器核心);3)模块依赖关系(初始化流程、调度器/文件系统/内存管理等子系统交互);4)系统分层架构图;5)Kbuild构建系统说明。文档强调Linux内核采用模块化设计,各子系统通过统一接口协作,新开发者可通过此文档快速掌握

2026-06-29 10:59:18 180

原创 第17天:线程与 LWP:轻量级进程的内核实现【基础概念】【通用】

摘要:本文深入解析Linux如何通过轻量级进程(LWP)实现线程机制。Linux将线程视为共享地址空间的独立调度单元(task_struct),使用clone()系统调用创建,通过CLONE_*标志控制资源共享。线程组内共享PID(tgid)但拥有独立TID,POSIX线程库(pthread)正是基于此实现。文中包含内核数据结构解析、线程创建代码示例及/proc、ps等线程观察方法,揭示了Linux将进程资源与执行流分离的并发设计艺术。(149字)

2026-06-29 10:56:54 189

原创 第16天:内核态 sys_fork:进程创建的内核完整流程

本文深入解析了Linux内核中进程创建的完整流程,从fork()系统调用到新进程开始执行的全过程。文章通过分析关键内核函数(sys_fork、kernel_clone、copy_process等)的源代码,揭示了进程创建的10个核心步骤:参数验证→task_struct创建→凭证复制→资源检查→状态初始化→内存复制(COW)→文件描述符复制→信号处理设置→线程上下文复制→进程唤醒。特别强调了写时复制(COW)机制如何高效实现内存共享,并比较了fork、vfork和clone的区别。文章还提供了跟踪fork调

2026-06-29 10:54:08 305

原创 第15天:Copy-on-Write 机制:写时复制的核心原理与性能优化

Linux内存管理中的Copy-on-Write(写时复制)机制是一种高效资源管理技术。其核心思想是:当进程通过fork()创建子进程时,并不立即复制内存页,而是共享父进程的页表,并将页面标记为只读。只有当任一进程尝试写入共享页面时,才会触发页错误并执行真正的复制操作。这种机制通过延迟内存复制,显著提升了fork()性能(耗时从毫秒级降至微秒级),同时减少了内存占用(子进程创建时内存分配量为零)。该技术广泛应用于进程创建、内存映射文件和容器技术(如Docker的overlay2文件系统)等场景,但需注意可能

2026-06-28 21:21:21 295

原创 第14天:进程创建系统调用:fork/vfork/clone 的差异

Linux进程创建的三重门:fork()、vfork()与clone()对比分析 本文深入解析了Linux系统中三种进程创建方式的原理与特点。传统的fork()通过写时复制技术创建独立进程;vfork()优化了fork-exec模式,共享地址空间并阻塞父进程;clone()则提供高度灵活性,可配置资源共享选项,适用于线程创建等场景。文章通过代码示例展示了三种方法的具体实现,并对比了它们在性能、安全性和适用场景上的差异。最后提供了pstree和strace等工具的使用示例,帮助读者直观理解进程创建过程。这三种

2026-06-28 21:20:04 144

原创 第13天:上下文切换:进程切换的底层原理与开销分析

摘要: Linux进程上下文切换是实现多任务并发的关键机制,涉及保存/恢复CPU寄存器、切换页表和内核栈等操作。核心数据结构包括task_struct(存储进程状态)和pt_regs(保存寄存器快照)。切换流程分为调度准备、页表切换(TLB刷新)和寄存器恢复三阶段,耗时约1-10微秒,主要开销来自寄存器保存、TLB失效和缓存污染。优化策略包括调整调度参数(如增大时间片)、使用线程池/协程(减少内核切换)、无锁编程及异步I/O。实测工具推荐perf、vmstat,线程切换(共享地址空间)比进程切换快10倍。高

2026-06-28 21:18:24 335

原创 第12天:进程状态详解:TASK_RUNNING等状态的内核定义

摘要: Linux进程状态是理解系统运行机制的关键,内核通过TASK_RUNNING(运行/就绪)、TASK_INTERRUPTIBLE(可中断睡眠)、TASK_UNINTERRUPTIBLE(不可中断睡眠)、__TASK_STOPPED(暂停)、__TASK_TRACED(调试追踪)和EXIT_ZOMBIE(僵尸进程)等状态标记进程行为。TASK_RUNNING表示进程正在或等待CPU调度;可中断睡眠允许信号唤醒,常用于I/O等待;不可中断睡眠则用于关键操作(如磁盘I/O),拒绝任何中断。僵尸进程是已终止

2026-06-28 21:06:16 179

原创 第11天:进程基础内核认知:PCB与task_struct结构体解析

本文深入解析了Linux内核中的进程控制块(PCB)核心数据结构task_struct。文章首先介绍了进程的基本概念和PCB的作用,随后详细剖析了task_struct的结构,包括进程状态、标识、内存管理和文件描述符等关键字段。文章还阐述了Linux如何通过全局任务链表和PID哈希表组织管理进程,以及进程创建(fork/exec)和退出的机制。最后提供了通过proc文件系统查看进程状态的实践方法,并探讨了进程与线程的区别及僵尸进程问题。全文以技术文档风格系统性地讲解了Linux进程管理的核心技术实现。

2026-06-28 21:03:28 350

原创 第10天:根文件系统挂载:揭秘init进程如何开启Linux的完整世界

本文深入解析了Linux系统从内核启动到用户空间的关键过程。首先介绍了根文件系统(Root Filesystem)的结构与重要性,包括常见的ext4、btrfs等类型。其次阐述了内核通过启动参数定位根文件系统的机制,以及initrd临时文件系统的作用。详细分析了根文件系统挂载流程,包括switch_root切换操作,并讲解了init进程作为第一个用户空间进程(PID 1)的核心职责。文章对比了SysVinit和Systemd的差异,说明了Systemd的并行启动优势。针对嵌入式系统特殊情况,探讨了initr

2026-06-24 11:11:54 488

原创 第9天:Bootloader与内核启动:揭秘U-Boot如何唤醒Linux

Bootloader是系统加电后运行的第一段程序,它承担着初始化硬件和加载操作系统的重任

2026-06-24 11:10:13 563

原创 第8天:Linux启动流程入门:探索操作系统的诞生之旅

《Linux启动流程深度解析》摘要:本文详细剖析了从按下电源键到系统登录的完整Linux启动过程。启动流程分为五个关键阶段:1)BIOS/UEFI硬件自检与引导设备选择;2)GRUB引导加载器加载内核和initrd;3)内核初始化硬件并挂载根文件系统;4)systemd启动系统服务;5)显示管理器提供用户登录界面。文章包含实用命令如dmesg查看内核日志、systemd-analyze分析启动性能,以及救援模式进入方法。通过理解这个精密协作的启动"接力赛",读者能更好地诊断启动问题并优化

2026-06-24 11:07:25 185

原创 第7天Linux设备驱动开发详解-通用处理器

本文系统介绍了通用处理器的核心架构与关键组件。首先对比了冯·诺依曼与哈佛架构的存储特性及适用场景,重点解析了RISC架构的优化设计。详细阐述了CPU核心的组成结构,包括指令处理流程、寄存器组(通用/状态/特殊功能寄存器)、ALU运算单元以及控制单元的工作原理。特别分析了ARM架构的寄存器组织和状态管理机制(CPSR/SPSR),并对比了ARMv7与ARMv8的寄存器变化。此外,还深入讲解了内存管理单元(MMU)的地址转换机制、中断控制器的处理流程、流水线技术及缓存系统(包括一致性协议)。

2026-06-24 11:04:45 125

原创 第6天:文件类型认知:探索Linux文件系统的四大基石

Linux文件类型全解析:从ls命令看系统设计哲学 Linux通过ls -l首字符(-/d/l/b等)精妙区分7种文件类型: 普通文件(-):文本/二进制等数据载体 目录(d):存储文件索引的特殊文件 链接文件 硬链接:共享inode的实体别名 软链接(l):含路径引用的快捷方式 设备文件:硬件交互接口 块设备(b):磁盘等块存储 字符设备(c):终端等字符流 管道(p)与套接字(s):进程通信专用 文件类型识别可通过ls、file、stat等命令,体现了Linux"一切皆文件"的设计思

2026-06-24 11:01:54 194

原创 第5天:Shell 进阶:命令参数、管道与输入输出重定向【核心原理】

Shell数据处理流水线:命令、管道与重定向实战指南 本文系统解析Shell三大核心功能: 命令参数:区分短选项(-l)、长选项(--help)和位置参数,处理含空格/特殊字符的文件名需引号保护 重定向:通过>/>>控制输出流向文件,2>&1合并错误流,</dev/null丢弃输出,<<EOF实现多行输入 管道:利用|串联命令(如grep ERROR | wc -l),结合tee保存中间结果,sort | uniq -c实现高频统计 实战场景:日志分析流水线

2026-06-24 10:56:32 188

原创 第4天:终端入门:解锁Linux命令行的第一把钥匙

这篇文章介绍了Linux命令行的基础操作与实用技巧,从Shell基本概念到常用文件操作命令(如pwd、ls、cd、mkdir、rm等)进行了系统讲解。文章通过电影《黑客帝国》的比喻引入命令行主题,详细说明了命令语法、路径类型、选项组合等核心知识,并配以具体示例。特别强调了rm命令的风险性及防护建议,最后提供了创建项目目录的完整实践案例和常用快捷键等效率工具。全文旨在帮助读者掌握Linux命令行基础,体会其高效性,同时提醒操作时需保持谨慎。

2026-06-24 10:51:46 172

原创 第3天:嵌入式Linux vs 桌面/服务器Linux:三大核心差异深度剖析

摘要: 本文探讨了嵌入式Linux与桌面/服务器Linux的核心差异,聚焦三大方面:资源约束(嵌入式系统需优化MB级内存、精简存储)、启动流程(嵌入式采用U-Boot快速引导,设备树描述硬件,启动秒级完成)以及驱动适配(定制化驱动为主,依赖BSP支持)。通过代码示例和分析,展示了嵌入式Linux如何通过裁剪工具链(如BusyBox)、压缩文件系统(如SQUASHFS)和精简服务实现高效运行。文末提出实践建议(如Buildroot构建最小系统)并引发对资源取舍与驱动兼容性的思考,为开发者提供嵌入式Linux优

2026-06-24 10:40:51 26

原创 第2天:探索Linux发行版家族:从服务器到嵌入式的多样化生态

本文系统介绍了Linux三大主流发行版分支:Debian/Ubuntu、RedHat/CentOS和嵌入式专用发行版。Debian/Ubuntu以社区驱动和易用性著称,包含丰富的软件生态;RedHat/CentOS专注企业级应用,提供长期支持服务;Buildroot/Yocto则是嵌入式开发的利器,支持高度定制。文章通过技术命令示例和特性对比,帮助读者根据使用场景(桌面/服务器/嵌入式)选择合适发行版,并提供了Docker快速体验方案。最后探讨了发行版选择标准和嵌入式Linux的发展趋势。

2026-06-24 10:37:31 174

原创 第1天:从兴趣到革命:Linux内核的诞生与开源精神的觉醒

本文回顾了Linux操作系统的诞生与发展历程。1991年,芬兰大学生林纳斯·托瓦兹出于兴趣开发的"业余项目"Linux,如今已成为全球数字基础设施的核心。文章介绍了Linux诞生的时代背景、开源协作模式及其成功因素,分析了开源软件与闭源软件的本质区别,并展示了Linux在全球各领域的广泛应用。从最初的1万行代码到支持超级计算机、移动设备和物联网,Linux的发展印证了开源模式在安全性、创新速度和成本效益方面的优势,成为改变软件行业格局的开源革命典范。

2026-06-24 09:32:31 369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除