- 博客(297)
- 资源 (63)
- 收藏
- 关注
原创 《UNIX环境高级编程》第三版(电子工业出版社出品)——两年磨一剑的匠心译作
- 《UNIX环境高级编程》第三版(电子工业出版社出品)终于上市了
2024-06-18 22:46:08
1335
16
原创 【译】《心悟内核:先懂设计,再读代码》—25、在组件之间搭建桥梁
- 本文揭示了操作系统内核的核心作用:在互不兼容的硬件与子系统间搭建桥梁。它不消除差异,而是通过精心管理映射关系(如文件描述符到inode、虚拟地址到物理页、数据包到套接字),实现隔离中的协同。内核以统一视角协调内存、文件、网络等独立组件,使用户空间得以使用抽象接口,而无需理解底层复杂性。正是这种中介能力,让现代系统在复杂性中保持一致、安全与可组合性。
2026-11-10 09:00:00
352
2
原创 【译】《心悟内核:先懂设计,再读代码》—24、内核模块如何互相感知:仅能通过导出符号_FINISH
- 内核模块通过显式导出的符号(EXPORT_SYMBOL)相互感知,无法访问未导出的内部符号。这种设计强制模块间隔离,确保内核内部结构的灵活性与稳定性。所有交互必须在加载时通过预定义接口完成,无自动发现或动态绑定机制。模块被视为外部代码,依赖关系需提前声明,仅限于导出接口。这一严格机制是Linux内核长期稳定的关键。
2026-11-03 09:00:00
99
4
原创 【译】《心悟内核:先懂设计,再读代码》—23、 内核如何与自己对话 —— 用于内部通信的工具
- Linux内核通过共享内存、等待队列、工作队列、原子操作、内核线程与回调等机制,在不同执行上下文间实现高效、安全的通信。这些工具根据阻塞能力与实时性需求,灵活协调中断、系统调用与后台任务,确保系统在高并发下保持响应性与一致性,构建出稳定可靠的内部协作架构。
2026-10-23 08:34:43
97
5
原创 【译】《心悟内核:先懂设计,再读代码》—22、超越代码:每条内核路径内部的过程
- 本文以内核函数为例,揭示系统编程中“过程性”思维的重要性。作者指出,内核代码不仅关注逻辑结果,更需在意图、上下文、校验、执行、对象、状态与同步等多维约束下安全运行。每条路径都交织这些维度,共同保障并发、共享环境下的可靠性与一致性。以vfs_write为例,展示了各维度如何协同工作。理解这些维度,是掌握内核设计核心的关键。
2026-10-20 09:00:00
409
3
原创 【译】《心悟内核:先懂设计,再读代码》—21、执行是逻辑层面的,放置是物理层面的
- 本文阐述了Linux内核中“执行”与“放置”的分离机制:尽管进程、内存页和中断可在不同CPU或内存节点间迁移(物理层面),但通过上下文保存、页表更新与状态同步,执行逻辑保持一致。这种隔离使系统能动态优化负载与性能,而程序感知不到底层变动,实现了稳定性与可扩展性的统一。
2026-10-13 09:00:00
218
3
原创 【译】《心悟内核:先懂设计,再读代码》—20、中断并非意外打断,而是架构设计
- 本文揭示“中断”并非意外打断,而是内核精心设计的结构性机制。它独立于任务执行流,拥有预设的处理路径与严格边界,运行在专属上下文,不归属任何线程,不可休眠。中断响应后,系统可选择重调度或恢复原任务,确保执行流清晰分离。其核心价值在于:以确定性方式及时响应关键事件,保障系统全局可控性。
2026-10-06 09:00:00
381
3
原创 【译】《心悟内核:先懂设计,再读代码》—19、执行路径追踪模板
- 本文提出“心悟内核”范式:理解内核应从执行路径切入,而非概念分类。通过追踪事件触发(如系统调用、中断)后的上下文流转,识别接口路由、子系统分发与数据结构管控,揭示内核运行的规则体系。强调跨层协作中的锁、引用计数与隔离机制,指出所有执行流均遵循一致收尾逻辑。由此构建可复用的分析框架,使内核不再是零散代码,而是一套结构化、可追溯的执行流转体系。
2026-09-22 09:00:00
133
3
原创 【译】《心悟内核:先懂设计,再读代码》—18、代码运行于何处,及其核心意义
- 本文深入解析Linux内核的多种执行上下文:进程上下文、中断上下文、软中断、Tasklet、工作队列、定时器与RCU回调。每种上下文有特定约束与用途,如中断上下文禁止休眠,工作队列支持阻塞。合理选择上下文是保障内核安全、稳定与高效的关键。理解“代码运行于何处”,方能真正读懂内核设计精髓。
2026-09-15 09:00:00
269
3
原创 【译】《心悟内核:先懂设计,再读代码》—17、内核的分层构建:逐层补足硬件能力
- Linux 内核分层并非软件抽象,而是逐层补足 CPU 硬件局限:上下文切换保存寄存器现场,独立内核栈隔离特权操作,调度与抢占由内核注入中断实现,中断处理分阶段完成,内存页表与切换由内核管理。内核所有机制都针对硬件无法自主完成的工作,其架构完全由硬件特性定义,层层补齐能力空白。
2026-09-08 09:02:18
208
4
原创 【译】《心悟内核:先懂设计,再读代码》—16、无状态 CPU 与有状态内核:执行流程如何协同调度
- 本文阐述了计算机系统中“CPU无状态、内核有状态”的关键设计关系:CPU 只负责按指令执行,不记录任务历史或上下文;而内核通过维护每个任务的完整执行状态、内核栈、寄存器现场和调度信息,确保不同任务能够被安全切换和连续运行。文章强调,内核通过上下文切换和任务管理,把单核CPU串行执行的能力,组织成有序、可控的多任务并发机制。最终,CPU保证指令执行的准确性,内核保障任务运行的连续性与系统整体调度秩序。
2026-09-01 09:00:00
407
4
原创 【译】《心悟内核:先懂设计,再读代码》—15、从 vmlinuz 到 eBPF:Linux 内核内部究竟在运行什么
- 本文揭示了Linux内核的多元化执行体系。文章指出内核并非静态二进制文件,而是由vmlinuz核心镜像(含调度器、内存管理等基础组件)、可动态加载的内核模块(.ko文件)、安全受限的eBPF程序(通过验证的字节码)、运行时热补丁等多种代码形态构成的活态系统。这些组件分别在启动加载、模块扩展、动态追踪和热修复等场景发挥作用,通过.config配置文件实现功能裁剪。
2026-08-25 09:00:00
244
5
原创 【译】《心悟内核:先懂设计,再读代码》—14、引导流程落幕:内核正式启动
- 本文剖析了Linux内核启动过程中从硬件初始化到系统就绪的完整流程。文章以start_kernel()函数为分界点,系统阐述了内核启动的三个关键阶段:引导加载程序执行硬件初始化、架构相关代码准备C语言运行环境,以及start_kernel()主导的通用内核初始化。重点解读了start_kernel()如何通过分阶段初始化机制解决依赖问题,依次构建内存管理、调度器、中断等核心子系统,最终创建用户空间初始进程。
2026-08-18 09:00:00
238
4
原创 【译】《心悟内核:先懂设计,再读代码》—13、不止代码执行:内核真正在强制执行的规则
- Linux内核不仅是代码执行器,更是系统安全的强制管控者。它通过多层机制确保系统安全:权限校验、资源隔离、特权分级、上下文约束、策略扩展、虚拟化防护,这些机制协同运作,内核凭借全局视角强制执行规则,从根本上抵御未授权访问、权限提升等威胁,成为系统安全的唯一可信基座。
2026-08-11 09:00:00
341
4
原创 【译】《心悟内核:先懂设计,再读代码》—12、内核无处不在,但你是否知晓它藏身何处
- 内核作为操作系统核心,常驻内存且隐形于用户态之外,负责所有软硬件交互的关键操作。它通过严格的权限隔离保障系统安全,其内存空间被精细划分为代码段、数据区、设备映射区等,各区域具备特定访问规则。开发者虽无需记忆底层细节,但理解内核布局对故障诊断(如崩溃、驱动异常)至关重要。内核内存是系统控制权的载体,其稳定性直接关系全局安全。建立内核认知模型能提升代码可靠性,帮助开发者从全局视角掌握系统运行本质。
2026-08-04 09:00:00
244
3
原创 【译】《心悟内核:先懂设计,再读代码》—11、内存并非空间容器,而是一套完整系统
- 本文深入剖析Linux内核内存管理机制,指出内存不是简单的存储容器,而是一套分层治理的动态系统。内核通过struct page元数据统一描述物理内存,采用缺页异常实现按需分配,结合LRU/MGLRU算法进行智能回收。系统提供ZSWAP压缩交换、THP大页优化、NUMA均衡等高级功能,通过vmemmap、SLAB等多级分配器满足不同需求。内核全程主动管理内存生命周期,从启动时物理内存注册到运行时热插拔支持,形成包含权限控制、资源隔离、动态调度的完整体系,保障各类业务在多样化硬件环境下的稳定运行。
2026-07-28 09:00:00
273
6
原创 【译】《心悟内核:先懂设计,再读代码》—10、内核如何看待内存:并非地址映射,而是权责管理
- 这篇文章探讨了Linux内核中内存管理的本质视角,指出传统静态地址映射图的局限性,强调内核是以动态权责视角管理内存。作者认为内核并非简单分配内存空间,而是根据各子系统(如调度器、网络栈、文件系统等)的具体业务需求,提供差异化的内存组织形式和使用规则。文章分析了多种内存分配接口(kmalloc、SLAB、vmalloc等)的设计逻辑,说明它们本质上是针对不同使用场景的"约束契约"。内核通过识别内存用途、生命周期和约束条件,在统一分配机制下实现静默高效的动态适配。
2026-07-21 09:00:00
254
3
原创 【译】《心悟内核:先懂设计,再读代码》—9、内核设备模型:硬件如何映射为 /dev
- 本文深入解析了Linux内核设备模型如何将物理硬件映射为用户空间可见的逻辑设备(如/dev/sda)。内核通过分层抽象体系(总线探测、驱动匹配、设备分类)屏蔽硬件差异,构建统一接口。底层由总线子系统(PCIe/USB/I²C)扫描设备并创建内部对象,驱动实现硬件控制;中层通过块/字符/网络设备类提供标准化操作接口;上层呈现为设备文件、网络接口等逻辑实体。整个过程涉及DMA、中断等精密调度机制,但对应用完全透明。内核设备模型的核心价值在于解耦硬件特性与使用方式,通过多层抽象实现稳定可用的标准化访问。
2026-07-14 09:00:00
299
4
原创 【译】《心悟内核:先懂设计,再读代码》—8、间接寻址的力量:单一内核如何服务所有进程
- 摘要:本文揭示了操作系统内核通过间接寻址技术实现单一镜像服务所有进程的核心机制。内核代码虽全局共享于各进程地址空间,但通过current指针动态绑定线程私有数据(如文件描述符表、内核栈等),确保执行上下文隔离。每个线程通过系统调用陷入内核时,CPU自动切换至专属内核栈,局部变量与运行状态严格隔离。这种间接寻址设计避免了内核数据混淆,既无需多份镜像复制,又能保障高并发安全,成为内核实现高效伸缩性与进程隔离的关键架构基石。
2026-07-07 09:00:00
261
4
原创 【译】《心悟内核:先懂设计,再读代码》—7、无冲突代码: 内核如何在并发风暴中保持安全
- 本文探讨了Linux内核如何在并发环境中保持安全运行的核心机制。内核通过三大设计原则实现无冲突并发:间接访问(通过current宏获取线程上下文)、上下文感知(函数无状态化)和细粒度同步(锁与RCU)。所有线程共享同一代码库,但通过线程私有数据实现隔离执行,使逻辑共享而数据私有。关键点包括:函数不依赖全局状态,通过线程上下文解析数据;共享资源使用精细同步;RCU实现高性能读取。设计正确性至关重要,一旦指针错误将破坏隔离性。这种架构使内核能安全处理数千并发线程,真正为并发而生。
2026-06-23 09:00:00
252
3
原创 【译】《心悟内核:先懂设计,再读代码》—6、内核对象揭示设计 —— 函数只是执行它
-《心悟内核》提出理解Linux内核应从对象视角切入,而非仅跟踪函数执行流。内核通过持久存在的对象(如task_struct、mm_struct等)管理状态与逻辑,这些对象相互关联并遵循严格的访问契约。函数仅执行操作序列,而对象定义行为规则与生命周期。例如,msg_queue控制进程通信的阻塞机制,net_device贯穿系统运行周期。理解对象的作用域、并发约束及交互关系,才能把握内核的系统性设计。跟踪展示"如何执行",对象揭示"为何可行",这是深入内核本质的关键。
2026-06-16 09:00:00
276
3
原创 【译】《心悟内核:先懂设计,再读代码》—5、一体架构,协同行为:内核的真实模型
- Linux内核采用单体式结构,各子系统编译为单一镜像共享地址空间,但运行时通过全局约束实现模块化协作。执行上下文(进程/中断等)严格限定内核行为,如中断上下文禁止阻塞。子系统交互遵循共享规则:调度器不抢占原子路径、内存分配器适配上下文、I/O操作分阶段流转。同步机制(自旋锁/RCU等)与内存访问均基于上下文选择,延迟执行机制实现任务跨阶段传递。内核虽以单体形式构建,实际运行却是由上下文、时序和并发规则驱动的协同系统,体现"形式单体、行为模块"的设计哲学。
2026-06-09 09:00:00
426
4
原创 【译】《心悟内核:先懂设计,再读代码》—4、内核作为分层系统:虚拟、映射、隔离、受控
- 本文探讨了Linux内核作为分层管控系统的设计哲学。内核通过虚拟化、映射、隔离与控制机制构建多个受控视图,而非单一系统视图。其核心架构特点包括:任务绑定执行上下文、间接寻址实现隔离、接口抽象隐藏实现细节、分层校验确保安全访问。文章指出,这种分层设计通过并发控制、资源限制和安全策略,使内核在高压环境下仍能保持可靠性与可控性。所有用户交互均受内核管控,体现了"不信任任何输入"的安全原则。这种分层架构是Linux内核高可靠性的关键所在。
2026-06-02 09:00:00
325
4
原创 【译】《心悟内核:先懂设计,再读代码》—3、代码之前:一张内核概念图
-《Linux内核设计的核心原则》揭示了内核并非功能模块的简单集合,而是围绕并发控制、硬件交互和故障恢复等核心规则构建的复杂系统。文章指出内核通过严格的执行上下文隔离(如线程绑定的内存空间和特权级别)确保安全性,并针对不同入口路径(系统调用/硬件中断等)制定差异化的约束规则。内核设计强调确定性行为(如无锁数据结构和有界执行时间)与主动容错机制(故障隔离和状态保护),其架构相关代码在保持硬件控制力的同时实现可移植性。作者强调理解内核必须超越工具函数层面,把握其维护安全、隔离与健壮性的本质设计逻辑。
2026-05-26 09:00:00
334
3
原创 【译】《心悟内核:先懂设计,再读代码》—2、服务进程:内核的核心使命
- Linux内核的本质是一套被动响应系统,其核心使命是为用户进程提供稳定可靠的服务环境。内核通过三种触发机制(系统调用、硬件中断、内核线程)被唤醒执行,所有子系统必须协同工作才能完成请求处理。从进程启动到文件读取,每个用户操作都引发跨子系统协作:权限校验、内存管理、I/O调度等环节环环相扣。内核线程虽运行在内核态,其存在价值仍是保障用户进程正常运行。这种"需求驱动-协同响应"的架构设计,使得内核始终保持高效运转,最终实现其根本价值。
2026-05-19 09:00:00
435
4
原创 【译】《心悟内核:先懂设计,再读代码》—1、内核并非进程,而是整个系统本身
- 本文深入解析了Linux内核的本质特征与运行机制。内核并非普通进程,而是操作系统的基础运行环境,具有以下核心特点:1)永久驻留内存,开机引导后即常驻;2)以最高特权级别运行,统筹管理硬件与软件的交互;3)采用响应式执行模式,通过系统调用、中断处理和内核线程三种方式触发运行。文章特别指出,内核线程由PID为2的kthreadd进程衍生,数量随系统负载动态变化(通常在100-150个),但内核本身不以独立任务形态存在。内核作为整个系统的核心本体,为所有用户任务提供运行框架和资源管理。
2026-05-12 09:00:00
466
4
原创 【译】《心悟内核:先懂设计,再读代码》—0、前言
-《心悟内核:先懂设计,再读代码》是一篇引导读者理解Linux内核设计思想的文章。作者Moon Hee Lee指出,内核学习不应局限于代码细节,而应首先构建其工作原理的心智模型。文章强调内核是一个结构化、响应式的系统,其设计核心在于上下文驱动、分离原则和明确意图。该系列旨在通过行为分析而非语法讲解,帮助读者掌握内核的运行机制,包括响应方式、约束管理、隔离实现和服务提供等核心概念。作者建议读者关注内核的整体设计思想,而非陷入具体实现细节,从而真正理解这个支撑整个系统的核心引擎。
2026-05-05 09:00:00
167
3
原创 【Linux】【开发】一个由宏导致的结构体大小不一致问题分析过程小结
- 本文通过一个实际案例,说明了一个由宏导致的结构体大小不一致问题,并对此类问题的成因做一总结。
2026-04-28 09:00:00
454
5
原创 【译】弄清Linux上fork进程的真实(和组合)内存使用情况:并非易事
- 本文探讨了Linux系统中进程内存使用的精确计算方法。作者通过分析/proc文件系统下的多个指标(RSS、PSS、USS),揭示了不同内存统计方式的差异:RSS包含共享内存,PSS按比例计算共享内存,USS仅统计私有内存。文章以Java进程和systemd-journald为例,展示了实际应用中这些指标的计算方法和权限问题,指出在评估进程真实内存占用时需考虑共享内存的影响。最终结论是USS最能反映进程的私有内存使用情况。
2026-04-21 09:00:00
872
4
原创 【译】理解Linux中的/proc/[pid]/pagemaps和/proc/[pid]/maps:如何提取虚拟和物理页信息
- Linux系统通过`/proc`文件系统提供了强大的接口来检查进程级别的详细信息。在众多文件中,`/proc/[pid]/maps`和`/proc/[pid]/pagemaps`对于理解进程的内存布局以及虚拟内存和物理内存之间的映射关系至关重要。无论您是在调试内存泄漏、优化性能,还是分析内存使用模式,这些文件都提供了无与伦比的可见性,让您了解进程如何与系统内存交互。
2026-04-14 09:00:00
577
2
原创 【译】Linux进程内存管理
- 本文介绍了Linux系统中四种关键的内存测量指标:VSZ(虚拟内存大小)、RSS(常驻集大小)、PSS(比例集大小)和USS(唯一集大小)。VSZ表示进程可能访问的总内存,而RSS显示实际分配的RAM,但会重复计算共享库。PSS通过分摊共享库解决了这个问题,USS则只计算进程独占的内存。文章还演示了如何使用ps、top和smem工具查看这些指标,帮助用户更准确地评估进程内存使用情况。理解这些指标对于优化系统性能和内存管理至关重要。
2026-04-07 09:00:00
447
2
原创 【译】理解 Linux 的 /proc/pid/maps:解码嵌入式应用程序内存使用、列说明和匿名 Inode 0 条目
- 本文解析了Linux系统中/proc/pid/maps文件的结构与功能,重点探讨了该文件在嵌入式系统内存管理中的应用。文章详细介绍了文件的六列结构(地址范围、权限、偏移量、设备号、inode和路径名),并分类解释了常见内存区域类型,包括可执行代码段、数据段、堆栈和共享库等。特别深入分析了"匿名inode 0条目"的成因和作用,指出这些由mmap或malloc创建的匿名映射区域对理解动态内存分配至关重要。通过实际示例,文章展示了如何利用该文件诊断内存问题,优化嵌入式应用的RAM使用。
2026-03-24 09:00:00
989
5
原创 【译】Linux 进程内存
- 本文介绍了如何在Linux系统中检查进程内存。作者通过/proc文件系统访问进程内存信息,重点解析了maps和mem文件的作用。文章解释了Linux内存管理机制,包括虚拟内存和mmap系统调用的工作原理,并演示了如何定位可疑用户进程的内存数据。通过/proc/${pid}/maps可以查看进程内存映射,而mem文件则提供了实际内存内容,为系统管理员提供了检查进程内存的有效方法.
2026-03-17 09:00:00
467
3
原创 【译】列出附加到 Linux共享内存段的进程
- 本文介绍了在Linux系统中查看共享内存段及其附加进程的方法。首先使用ipcs -m命令列出所有共享内存段,获取目标段的shmid标识符。然后通过ipcs -m -i [shmid]查看特定内存段的详细信息,包括连接的进程数。最后用pstree -p [shmid]以树状结构显示附加到该内存段的进程及其PID。这些命令组合使用可以帮助开发者监控和管理进程间的共享内存通信。
2026-03-10 09:00:00
275
3
原创 【译】 maps, smaps and Memory Stats!
- 本文探讨了Linux系统中进程内存统计的复杂性,重点分析了/proc/$$/maps和/proc/$$/smaps文件的差异。
2026-02-24 09:00:00
1416
3
原创 【译】理解 Linux 中的内存分配 —— malloc、brk、sbrk、mmap 之间的关系,以及可调参数 vm.overcommit_memory
- 本文探讨了Linux系统中的内存分配机制,重点分析了malloc()函数在分配不同大小内存时的底层实现方式。通过/proc/pid/maps文件展示了进程的虚拟内存布局,揭示了堆、栈和内存映射区域的结构。
2026-02-17 09:00:00
1269
4
原创 【Linux】【开发】如何判断Linux的用户态及内核态是32位还是64位?
- 本文提供了多种实用命令来帮助开发者快速确认系统的位数状态,适用于ARM等不同架构的Linux系统。
2026-02-10 09:00:00
948
4
原创 【Linux】【操作】Linux操作集锦系列之十六——Linux环境下生成一个固定大小文件的方法
- 本文介绍了在Linux系统中生成指定大小文件(填充数字1)的多种方法。
2026-02-03 09:00:00
886
3
louyueweixinsetup.zip
2021-11-21
FastDNS 彗星DNS优化器
2021-11-27
IP地址更改助手 1.3
2021-11-27
IPHelper5.2
2021-11-27
onekeycleaner5.0.zip
2021-11-27
winscp572setup.zip
2021-11-27
CrobFTPServer
2021-11-27
FTPRushv3.4.6.zip
2021-11-27
jperf 2.0.0 网络性能测试工具
2021-11-27
tcpdump4.1.1.zip
2021-11-27
EasyFZS86018.zip
2021-11-27
HomeFtpServer_1.14.0.176.zip
2021-11-27
BandwidthMonitor.7z
2021-10-01
【无线网络分析】基于Wireshark的802.11协议过滤器设计:MAC层帧类型与信号强度检测应用
2025-10-09
Bili23-Downloader
2025-02-18
WPA3 Specification v3.4
2024-12-25
mqtt的入门手册,60页
2024-08-15
8255x-10-100-mbps-ethernet-controller-software-dev-manual.pdf
2022-02-07
vlc,VLC media player,组播测试神器
2024-01-21
Hasher Lite(MD5校验工具) V3.4.0
2023-05-09
GoogleTranslateIpCheck
2023-04-12
Dual Monitor Taskbar
2023-03-03
RegisterMaster V1.2.rar
2022-08-17
ExtraPuTTY-0.30-2016-04-04-installer。 可用于串口调试。putty.
2022-08-04
Snap2HTML是一款优秀的文件夹快照创建工具,可创建您硬盘驱动器上的文件夹结构“快照”,并将其保存为一个html文件。
2022-07-22
HTTP Downloader
2022-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅