- 博客(109)
- 收藏
- 关注
原创 Re:Linux系统篇(四十七)信号篇·五:详解用户态与内核态划分、sigction接口、可重入函数、voltiaer关键字、SIGCHLD信号
用户态与内核态的本质区别:CPU通过CS段寄存器的CPL位区分。sigaction接口:比signal更健壮的信号处理接口。可重入函数:避免在信号处理函数中使用不可重入函数。volatile关键字:防止编译器优化,确保每次从内存读取变量。SIGCHLD信号:异步回收子进程资源。
2026-07-27 07:57:16
207
8
原创 Re:Linux系统篇(四十六)信号篇·四:一文串联操作系统底层:时钟中断、内核态切换、系统调用与 Linux 信号处理全解析
本文主要讲解了Linux信号处理的核心机制,重点分析了信号捕捉的全流程和内核态与用户态的切换原理。文章首先介绍了信号处理的三种方式(忽略、默认和捕捉),并详细描述了用户自定义信号处理函数的执行过程,通过"∞"形流程图形象展示了信号捕捉中内核态与用户态的多次切换。随后深入探讨了信号处理函数执行完毕后如何通过sigreturn系统调用安全返回主程序,以及内核如何修改用户栈实现这一机制。文章还解释了为什么执行用户代码必须切换回用户态的安全考量,并讨论了死循环进程对系统性能的影响。最后,从硬件中断角度简要说明了操作
2026-07-24 10:55:52
1340
28
原创 Re:Linux系统篇(四十五)信号篇·三:一文讲透 Linux 信号保存机制:block,pending,handler三张表到底在做什么
本文深入探讨了Linux信号保存的机制,重点解析了三张核心数据结构:pending表(记录未决信号)、block表(管理阻塞信号)和handler表(定义信号处理方式)。通过代码实验验证了信号的阻塞、递达和未决状态的关系,并详细介绍了信号集操作函数(如sigprocmask、sigpending)的使用方法,帮助读者全面理解信号从产生到处理的完整生命周期。
2026-07-20 08:24:22
1604
80
原创 Re:Linux系统篇(四十四)信号篇·二:Linux 信号的产生原理:硬件异常、软件条件与内核处理机制
重点介绍硬件异常和软件条件两类信号产生方式: 硬件异常产生信号 CPU通过中断机制捕获硬件异常(如除0错误、野指针访问)并通知操作系统 常见信号包括SIGFPE(8)浮点异常和SIGSEGV(11)段错误 MMU内存管理单元通过页表项权限位检测非法访问 操作系统通过CR2寄存器等获取错误上下文并决定是否终止进程 软件条件产生信号 管道读端关闭时写端会收到SIGPIPE信号 alarm()系统调用设置定时器,到期发送SIGALRM(14)信号 演示
2026-07-17 08:20:17
1137
73
原创 Re:Linux系统篇(四十三)信号篇·一:谁在敲进程的门?一篇带你了解信号概念与产生机制
本文从感性认识出发,系统梳理Linux信号的基本概念、查看方式及核心结论,并围绕信号的产生展开详细探讨。内容涵盖键盘操作触发信号、进程前后台切换对信号响应的影响、信号发送的本质与前台进程组机制,以及kill、raise、abort等系统调用与命令生成信号的具体方式,帮助读者全面理解信号在进程管理与通信中的关键作用。
2026-07-14 11:03:55
800
76
原创 Re:Linux系统篇(四十二)通信篇·七:SystemV标准三部曲其之三:信号量与并发编程初步认识
本文介绍了Linux SystemV标准中的信号量机制,重点探讨了其在并发编程中的作用及实现原理。主要内容包括: 并发编程基本概念:解释了临界资源、临界区的定义,以及保护共享资源的两种方式——互斥和同步,通过医院就诊的类比帮助理解。 保护机制详解: 原子性概念:操作要么完全执行,要么完全不执行 互斥锁原理:通过加锁-执行临界区代码-解锁三步确保"写之中"的原子性 信号量本质: 作为计数器管理临界资源子资源数量 分为二元信号量(互斥)和多元信号量 PV操作实现资源预定机制 信号量与通信的关系: 扩展了进程间通
2026-07-06 07:57:45
1076
91
原创 C++程序员转型Java ,3天打破惯性思维的硬核速成指南
本文为C++程序员快速上手Java提供了三天的学习指南。文章首先强调Java并非简化版C++,而是具有不同的设计哲学:Java通过虚拟机、垃圾回收和强类型约束来限制危险操作。接着对比了两者在编译方式、内存管理、跨平台等方面的差异,并给出了第一个Java程序示例。 第二部分重点讲解数据类型,包括基本类型与包装类的区别,以及自动装箱拆箱的注意事项。第三部分介绍类与对象,展示Java类定义与C++的相似之处,同时说明构造函数和访问修饰符的特殊用法。 最后讨论继承与多态,指出Java只支持单继承但可通过接口实现类似
2026-07-04 16:56:47
412
30
原创 Re:Linux系统篇(四十一)通信篇·六:SystemV标准三部曲其之二:消息队列
文章摘要:本文介绍了Linux SystemV IPC中的消息队列机制。消息队列提供了一种有类型的数据块传输方式,允许进程通过约定数据类型进行通信。与共享内存类似,消息队列通过唯一的key标识,使用msgget创建/获取队列,msgctl控制生命周期。核心操作包括msgsnd发送和msgrcv接收消息,需遵循特定的数据结构规范(首个字段必须为long类型)。文章还提供了工程实践建议(公共头文件定义通信规范)和命令行管理工具(ipcs/ipcrm)的使用方法,帮助开发者实现进程间高效通信。
2026-06-30 10:38:19
526
33
原创 Re:Linux系统篇(四十)通信篇·五:SystemV标准三部曲其之一:共享内存
本文介绍了System V标准下的共享内存通信机制。主要内容包括:1)共享内存原理,通过映射到进程虚拟地址空间实现多进程共享同一物理内存;2)系统调用接口,重点讲解shmget创建函数及其key参数构建、shmat/shmat关联与去关联操作;3)生命周期管理机制,采用引用计数决定共享内存的销毁时机。文章通过图解和代码示例详细说明了共享内存的实现细节,并指出该技术虽已过时但在原理学习上仍有价值。
2026-06-29 15:09:12
1454
73
原创 Re:Linux系统篇(三十九)通信篇·四:掌握池化技术进阶:从匿名管道唤醒到进程池的高效实现(附完整源码与踩坑指南)
在先后探讨了匿名管道(单向、血缘进程通信)与命名管道(跨血缘、基于文件系统通信)的原理后,本文将实现跨越与升华。我们将引入池化技术,融合管道的控制细节与负载均衡,从零构建一个高性能进程池,并深度攻克多进程编程中隐蔽的“写端继承”退出 Bug。
2026-06-26 07:35:40
296
37
原创 Re:Linux系统篇(三十八)通信篇·三:深入浅出 Linux 命名管道:如何用 FIFO 实现跨进程通话与文件传输
本文介绍了命名管道(FIFO)的基本概念、创建方法及其在实际应用中的两个案例。命名管道解决了匿名管道只能用于有血缘关系进程间通信的局限性,通过文件路径实现无关联进程间的通信。 摘要要点: 命名管道通过文件路径实现进程间通信,允许无关进程共享同一资源 使用mkfifo命令或系统调用创建命名管道 演示了两个实际案例: 模拟通话场景(张三说、李四听) 文件内容传输(面向对象实现) 包含完整的代码示例和测试结果展示 解释了关键系统调用和编程注意事项 命名管道是Linux进程间通信的重要机制,适用于需要持久化通信通道
2026-06-25 10:06:11
504
29
原创 Re:Linux系统篇(三十七)通信篇·二:深入理解匿名管道:父子进程是如何“看到同一个文件”
本文介绍了Linux匿名管道的原理与实现,主要内容包括: 匿名管道原理:匿名管道是最古老的进程间通信方式,本质是让不同进程共享操作系统提供的文件资源。通过pipe()系统调用创建内存级管道文件,父子进程通过继承文件描述符表共享同一管道。 单向信道构建: 父进程创建管道后fork子进程 父子进程分别关闭不需要的读写端(父关写/子关读) 形成父读子写的单向通信信道 实现示例: 子进程每秒向管道写入计数器数据 父进程循环读取并打印管道数据 当写端关闭时读端会收到EOF(0) 特性与注意事项: 管道是半双工通信 需
2026-06-24 09:50:23
1143
76
原创 Claude Code上手指南:安装、部署、接入大模型
《从零部署Claude Code:安装配置与实战指南》摘要 本文详细介绍了Claude Code的完整部署流程。首先需要安装Node.js、Git、VPN和CCSwitch等前置工具,随后通过npm或官方文档安装Claude Code并进行配置优化。文章特别演示了如何接入DeepSeek国产大模型,包括API Key获取和CCSwitch配置。最后通过实战案例,展示如何用Claude快速开发Web项目,包括工作空间创建、自然语言交互开发及自动代码生成过程。该教程适合想要快速上手Claude Code的开发者
2026-06-22 21:49:24
2277
24
原创 Re:Linux系统篇(三十六)通信篇·一:进程间通信概念与环境切换
本文介绍了进程间通信(IPC)的概念及其重要性,指出由于进程的独立性,需要通过特定机制实现数据交换。IPC主要用于数据传输、资源共享、事件通知和进程控制。文章详细讲解了如何通过VSCode连接云服务器进行远程开发,包括安装Remote-SSH插件、配置连接参数等步骤,并推荐了相关辅助插件。最后解释了VSCode远程开发时自动在服务器端安装的vscode-server组件的作用,为远程开发提供支持。
2026-06-22 18:55:21
373
9
原创 Re:Linux系统篇(三十四)文件篇·七:Linux环境下的动静态库制作、打包交付与运行加载全方案指南
【摘要】本文系统讲解Linux环境下动静态库的制作与使用流程。静态库通过ar命令打包.o文件生成.a库,交付时需组织头文件与库文件的目录结构,用户通过-I、-L、-l选项链接;动态库需用-fPIC编译位置无关码并用-shared生成.so文件。针对动态库运行时加载问题,提出四种解决方案:拷贝至系统路径、创建软链接、临时LD_LIBRARY_PATH变量或永久写入/etc/ld.so.conf.d/配置。文章通过开发者与使用者双视角案例,对比静态链接(生成独立可执行文件)与动态链接(依赖运行时加载)的特性差异
2026-06-21 09:03:36
490
19
原创 Re:Linux系统篇(三十三)文件篇·六:一文讲透 Linux 文件系统:从 EXT2 物理布局到 VFS 源码级全景解析
本文介绍了EXT2文件系统的核心设计原理,重点阐述了其在硬盘上的布局与管理机制。主要内容包括:1)从物理磁盘到逻辑分区的演进,解释分区的基本单位(柱面)和分区的构成;2)块组(Block Group)的划分,说明块设备的概念和文件系统对数据块的管理方式;3)深入分析块组内部结构,包括数据块、inode表、块位图、inode位图、块组描述符表(GDT)和超级块(Super Block)的作用及相互关系。文章强调格式化的本质是写入文件系统管理信息,并指出内存页与磁盘块对齐对效率的重要性。
2026-06-19 09:43:08
3489
69
原创 Re:Linux系统篇(三十二)文件篇·五:Ext文件系统前奏 - 存储底层从物理拆解到 LBA 地址转换
本文聚焦磁盘存储技术,从物理构造到寻址算法,为后续存储系统构建核心认知模型。物理基础:解析磁盘片、磁头、扇区与柱面的组织结构;数据定位:剖析 CHS 寻址方式及其局限性;线性映射:详解 LBA 逻辑地址转换及与 CHS 的映射公式。直接进入正题。
2026-06-18 15:56:24
1123
42
原创 Re:Linux系统篇(三十一)文件篇·四:从 FILE 结构体到系统调用:全景拆解 Linux 缓冲区流转机制
hello write hello printf hello fprintf hello fwrite hello printf hello fprintf hello fwrite **现象分析**:此时 `stdout` 不再对应显示器,而是对应一个磁盘文件,刷新策略自动切换为**全缓冲**。此时 `\n` 不再具备刷新功能,只有等缓冲区满或者进程退出时才会刷新。因此,三个 C 库函数的输出(`printf`, `fprintf`, `fwrite`)都还停留在用户级缓冲区中。当
2026-06-17 08:18:36
1621
74
原创 Re:Mysql数据库基础篇(三):全面掌握数据库与数据表操作:深度剖析底层文件差异与核心管理机制
本文深入讲解MySQL中数据库与数据表的核心操作与底层原理,主要内容包括: 数据库创建 详解语法要素,对比utf8_general_ci与utf8_bin校验规则对查询和排序的影响 通过实验展示不同校验规则下查询结果和排序方式的差异 数据库维护操作 演示数据库修改、安全删除方法 重点讲解mysqldump工具进行备份与恢复的工程实践 说明备份时-B参数的重要性及多数据库备份技巧 数据表操作 剖析MyISAM与InnoDB存储引擎的磁盘文件结构差异 演示ALTER TABLE在字段增删改及表重命名中的应用 强
2026-06-11 09:19:04
519
43
原创 【别传:Web前端开发(三)】重塑动态视界:JS底层逻辑、数据类型流转与WebAPI交互全景草稿
# 摘要> **本文全面且深入地构建了 JavaScript(JS)基础语法与 WebAPI 开发的技术草稿全景图。** >>技术脉络核心涵盖:>- **运行机理与标准生态**:解构 JS 作为动态解释型语言的执行数据流,梳理 HTML/CSS/JS 网页三剑客的协同关系,并明确 ECMAScript、DOM、BOM 的标准职责划分。>- **变量系统与数据类型流转**:深度剖析动态类型系统在运行期的类型确定与流转特征;详解 `number`(含 `NaN` 边界)、`str
2026-06-10 08:48:48
888
27
原创 【别传:Web前端开发(二)】重塑视觉视界:CSS核心机理与弹性排版全景草稿
本文系统讲解CSS核心技术,涵盖样式分离本质、选择器精准定位、盒模型原理及Flex布局精髓。主要内容包括:CSS基础语法与三种引入方式(内部/行内/外部样式表)的优缺点;四大基础选择器(标签/类/ID/通配符)的使用场景;复合选择器的层级调用逻辑;重点剖析em单位、RGB颜色模型、box-sizing属性等核心概念,并深入解析Flex布局的双轴坐标系与空间分配机制。通过结构化知识图谱,帮助开发者掌握像素级排版技巧,实现网页从"素颜"到"精密美化"的进阶。
2026-06-10 08:48:24
455
8
原创 【别传:Web前端开发(一)】快速构筑项目外壳:HTML 核心标签复习指南
本文介绍了HTML的基础知识与DOM树结构,重点讲解了HTML标签的语法规则、属性设置以及文件基本骨架。文章从实用角度出发,详细解析了<html>、<head>、<body>等核心标签的层级关系,并演示了如何通过Emmet快捷键快速生成工业级HTML5代码框架。此外,还介绍了注释标签、标题标签、段落标签等基础排版元素的用法,帮助后端开发者快速掌握前端页面构建的基本技能。全文强调HTML作为结构化文本的本质,旨在为项目开发提供高效的"显示器"解决方案。
2026-06-10 08:47:58
323
6
原创 Re:Linux系统篇(三十)文件篇·三:以简驭繁的终极秩序:Linux 虚拟文件系统(VFS)与“一切皆文件”的破局哲学
Linux VFS虚拟文件系统与设备模型架构解析 摘要 本文深入探讨了Linux系统中的文件重定向机制与虚拟文件系统(VFS)架构。首先分析了标准错误(stderr)存在的必要性,通过实验演示如何分离标准输出和错误输出。其次详细解析了文件描述符和struct file结构体的底层原理,揭示了进程与文件的解耦设计。最后深度剖析了Linux"一切皆文件"哲学背后的VFS实现机制,包括设备驱动模型与文件操作的动态绑定过程,展示了操作系统如何通过多态思想统一管理各类异构设备。文章通过分层递进的讲解,帮助读者建立起对
2026-06-10 08:29:05
880
12
原创 Re:Linux系统篇(二十九)文件篇·二:深度解析Linux文件描述符、dup2指针覆盖与内建命令重定向完全解析
本文深入探讨了Linux文件描述符的底层机制与重定向原理,主要内容包括: 文件描述符本质:整型值,本质是内核文件描述符表中的数组下标,指向struct file结构体,包含文件属性和缓冲区信息。程序启动默认打开0(stdin)、1(stdout)、2(stderr)三个标准流。 内核数据结构:通过task_struct→files_struct→fd_array[]→struct file的层级映射实现文件访问,struct file包含文件属性、操作方法和引用计数等关键信息。 重定向机制:基于最小分配原则
2026-06-09 09:24:22
960
87
原创 Re:Linux系统篇(二十八)文件篇·一:理解 Linux 文件基础I/O、Linux 文件操作与系统调用机制
本篇博客以 **Linux 操作系统视角**为核心,深度破译了文件操作从“应用层高级语言”到“内核系统调用”的完整演进链路。文章首先带读者重温了 C 语言的文件操作与流的本质,通过图形化视角拆解了**重定向的底层原理**与进程默认打开的三大标准流;随后遵循**“先描述,再组织”**的内核设计哲学,深入剖析了操作系统如何通过文件描述符(fd)和 `struct file` 结构体高效管理打开的文件,并厘清了高级语言库与系统调用接口的层级封装关系。在实战演练部分,文章详细解读了核心系统调用 `open`
2026-06-07 14:12:52
477
24
原创 Re:Linux系统篇(二十七)进程篇·十二:从零构建属于你的自定义 Shell 解释器
# 【Linux】进程篇终极实战:从零构建属于你的自定义 Shell 解释器## 摘要(Abstract)本文是 Linux 进程控制模块的终极实战篇。文章围绕 **“父进程等待,子进程替换”** 的核心协同模型,带你从零开始用 C++ 动手构建一个功能完备的自定义命令行解释器(Shell)。全篇采用**阶段递进式**的开发思路:1. **第一阶段**:搭建 Shell 宏观架构的主循环流程,打通命令行提示符打印、字符串切分以及普通外部命令(如 `ls`、`pwd`)的进程替换逻辑。2. *
2026-06-06 08:35:25
573
18
原创 Re:Mysql数据库基础篇(二):MySQL 基础指南,架构分层、SQL 分类与引擎解析
本文从程序员视角剖析MySQL数据库的核心架构与服务本质,主要包含以下要点: MySQL本质是一套网络数据存取服务,由客户端(mysql)和服务端(mysqld)组成,基于TCP协议通过3306端口通信。 数据库概念分为狭义(数据文件集合)和广义(完整DBMS系统)。MySQL采用C/S架构,客户端发送SQL请求,服务端操作底层数据文件并返回结果。 数据库相比文件系统的优势:提供高效的数据管理能力,解决安全性、查询效率、海量数据存储和并发控制等问题。在Linux底层,数据库和表分别对应目录和物理文件。 My
2026-06-05 10:31:12
1097
27
原创 Re:Mysql数据库基础篇(一):CentOS/Linux 环境下的完整安装/运行/登录Mysql流程与首次登录异常处理
摘要 本文详细记录了在OpenCloudOS 9.4系统上全新安装MySQL数据库的完整流程,主要包含以下关键步骤: 环境检查与清理: 通过ps命令检查并确认系统无MySQL/MariaDB进程运行 使用rpm检查并清理残留的MySQL相关安装包 验证/etc/my.cnf和/var/lib/mysql/目录无历史配置文件和数据 准备MySQL官方YUM源: 从MySQL官网下载匹配系统版本的mysql80-community-release-el9-1.noarch.rpm源文件 通过rz命令将源文件上传
2026-06-04 09:50:41
985
22
原创 Re:Linux系统篇(二十六)进程篇·十一:从底层原理到 exec* 家族:彻底搞懂 Linux 进程程序替换
Linux进程程序替换机制深度解析 本文系统剖析Linux进程程序替换的核心原理与实现细节: 底层机制:程序替换通过重映射页表实现物理内存更新,利用写时拷贝保障进程独立性,且不创建新进程(PID不变) exec*函数族: 基础接口:execl需完整路径,execlp自动搜索PATH 参数传递:execv采用数组传参,execle/execvpe支持自定义环境变量表 特殊机制:所有函数仅在失败时返回,成功则直接跳转新程序入口 环境变量处理: 带e接口会完全覆盖原有环境变量 可通过putenv追加环境变量再传递
2026-06-02 09:38:29
2580
106
原创 Re:Linux系统篇(二十五)进程篇·十:深度硬核!Linux 进程等待,从 task_struct 源码到位图状态解构
本文探讨了Linux进程等待机制的核心概念与实现方法。主要内容包括: 进程等待的必要性:解决僵尸进程问题、回收系统资源、获取子进程退出状态。 系统调用详解: wait()函数:阻塞等待任意子进程退出 waitpid()函数:提供更精细的控制,支持指定特定子进程和等待方式 状态参数解析: status参数的16位位图结构 使用宏函数解析退出状态 等待方式对比: 阻塞等待:父进程挂起直到子进程退出 非阻塞轮询:父进程可执行其他任务,定期检查子进程状态 内核交互原理:通过task_struct结构实现进程状态管理
2026-06-01 15:54:20
505
26
原创 Re:Linux系统篇(二十四)进程篇·九:进程从创建到退出的底层机制与写时拷贝全解
本文介绍了Linux进程创建与终止的核心机制。在进程创建方面,重点解析了fork函数的双返回值特性、写时拷贝(COW)的内存优化原理及其实现细节,包括权限设置、缺页中断触发等底层机制。在进程终止方面,详细阐述了三种退出场景(正常正确、正常错误、异常终止),并对比分析了return、exit和_exit三种退出方式的底层差异,特别是缓冲区处理的不同。文章还探讨了进程退出码的编码原理及其在父子进程间的传递机制,揭示了函数返回值通过寄存器传递的汇编级实现。通过技术原理与实战应用的结合,全面呈现了Linux进程管理
2026-05-29 10:03:35
2171
126
原创 Re:Linux系统篇(二十三)进程篇·八:打破物理内存的枷锁:起底 Linux 进程虚拟地址空间的深层结构
本文深入剖析了Linux进程虚拟地址空间的底层架构,揭示了操作系统如何通过虚拟地址空间为每个进程营造"独占内存"的假象。文章从宏观布局和微观细节两个维度,详细解析了代码段、数据段、堆栈区等内存区域的划分与管理机制,并指出常见的"程序地址空间"概念实为"进程虚拟地址空间"。 通过父子进程共享同一虚拟地址却映射不同物理地址的现象,作者论证了虚拟地址空间并非物理内存的本质。文章进一步以"大富翁与私生子"的生动比喻,阐释了操作系统如何通过虚拟地址空间管理物理内存资源,确保进程间的独立性。最后介绍了Linux内核通过
2026-05-26 08:20:26
2225
71
原创 Re:Linux系统篇(二十二)进程篇·七:环境变量的底层溯源、核心获取机制与安全应用
本文主要介绍了Linux系统编程中的环境变量相关内容,包括命令行参数解析、main函数参数传递机制、环境变量的基本概念与操作等。文章从main函数的底层实现切入,详细讲解了命令行参数的存储结构和使用方法,并通过代码示例演示了如何通过参数实现不同功能。同时,文章还对比了本地变量和环境变量的区别,介绍了常见环境变量的查看与设置方式,为Linux系统编程学习提供了实用参考。
2026-05-25 09:22:43
907
40
原创 Re:Linux系统篇(二十一)进程篇·六:穿过底层看本质,深入理解底层进程切换与 O(1) 调度算法
本文深入剖析Linux内核进程切换机制与调度原理。首先通过死循环进程示例阐明时间片轮转调度如何保障系统公平性,随后详解CPU寄存器作为临时存储空间的核心作用,强调区分寄存器硬件与存储数据的重要性。文章通过"当兵留籍"的生动类比,阐释进程上下文切换中硬件状态保存与恢复的完整流程,包括用户级、寄存器级和系统级上下文的组成。最后从内核源码角度分析早期Linux使用TSS结构保存寄存器数据的实现方式,揭示了进程切换时硬件上下文保护与恢复的底层机制。全文以硬核技术解析结合形象比喻,深入浅出地展现了操作系统进程调度的核
2026-05-24 15:47:17
1348
92
原创 Re:Linux系统篇(二十)进程篇·五:深入理解 Linux 进程优先级:从底层逻辑到实战修改
本文深入探讨了Linux系统中的进程优先级机制。首先从竞争性、独立性、并行与并发等基础概念入手,通过咖啡店排队场景生动解释了并发与并行的区别。随后详细分析了进程优先级存在的必要性,区分了优先级与权限的概念,并介绍了UID在权限控制中的作用。 文章重点讲解了Linux下进程优先级的查看方法(ps -l命令)、核心计算公式(PRI = 80 + NI),以及Nice值对优先级的动态影响机制。通过数学公式和实例说明了Nice值如何调整进程优先级,并探讨了Nice值取值范围(-20到19)的限制原因。最后还介绍了基
2026-05-22 12:26:07
873
43
原创 Re:Linux系统篇(十九)进程篇·四:内核托底与生死交错 ,深度硬核剖析“僵尸”与“孤儿”进程
本文深入探讨了 Linux 系统中两类特殊的进程状态——“僵尸进程”与“孤儿进程”。文章首先解析了僵尸进程的成因,指出子进程退出后其 PCB 结构体仍滞留内核以供父进程读取退出信息,若父进程长期不回收则会导致内核内存泄漏,并结合内核 SLAB 机制详细拓展了结构体对象的缓存与复用原理;随后文章探讨了父进程先退出的情况,引出由 1 号进程 systemd 强制领养的孤儿进程机制,并通过代码实测与命令行监控,清晰揭示了孤儿进程在转为后台运行后其状态、PPID 的动态变化以及前后台进程的交互细节差异。
2026-05-21 08:54:32
1210
37
原创 Re: Linux系统篇(十八)进程篇·三:深度硬核!全面起底 Linux 进程状态变化与内核链表动态解绑
本文深入探讨了Linux进程状态及其管理机制。首先介绍了操作系统理论中的进程状态概念,随后详细解析了Linux内核中定义的7种进程状态(运行、睡眠、磁盘休眠、停止、追踪停止、死亡和僵尸状态)。文章重点阐述了进程调度队列的FIFO算法、设备树与阻塞状态的关系,以及内存不足时通过交换分区实现的进程挂起机制。最后揭示了Linux内核链表的独特设计原理,包括通过offset宏计算结构体偏移量和链表动态重组机制。这些内容为理解Linux进程管理提供了深入的技术视角。
2026-05-20 19:03:37
3456
88
原创 Re:Linux系统篇(十七)进程篇·二:深入浅出 [进程概念与进程父子关系]:从底层原理到实战应用
本文深入探讨了进程的概念及其在操作系统中的管理机制。文章首先介绍了进程的课本定义,指出进程是程序执行实例和系统资源分配的实体。随后详细解析了进程控制块(PCB/task_struct)的作用,将其比作进程的"户口本",包含标识符、状态、优先级等上百个属性信息。通过"先描述,再组织"的管理逻辑,操作系统将PCB组织成链表,实现对进程的增删查改操作。文章还介绍了查看进程的系统调用(getpid/getppid)和命令(ps axj),并揭示了命令行解释器bash本质上也是
2026-05-20 10:22:18
788
20
原创 Re:Linux系统篇(十六) 进程篇 · 一:深入理解操作系统:从软硬件架构到“先描述,再组织”的管理哲学
本文介绍了Linux操作系统的基础知识,重点探讨了冯诺依曼体系结构和操作系统的核心概念。文章首先阐述了冯诺依曼体系的硬件组成(输入单元、CPU、输出单元和存储器)及其数据流动机制,解释了程序必须加载到内存才能运行的原因。随后分析了操作系统的定义与目的,指出其核心在于管理硬件资源并为应用程序提供执行环境。通过软硬件层状结构的案例(如printf函数的执行流程),详细说明了系统调用和驱动程序的作用机制。文章还讨论了Linux内核与安卓系统的层级关系,以及计算机存储设备的读写速度差异对系统设计的影响。全文以深入浅
2026-05-18 19:15:28
1221
34
原创 Re:Linux系统篇(十五)工具篇 ·六:GDB 调试从底层逻辑到高阶实战
GDB调试极简指南:从入门到实战 本文提供了一份高效的GDB调试行动指南,重点介绍Linux环境下使用GDB进行程序调试的核心技巧。首先讲解了Debug与Release模式的区别,强调使用-g编译选项生成可调试程序。随后详细介绍了GDB的核心功能:包括源码查看(list)、断点管理(breakpoint)、执行流程控制(run/next/step/continue)、变量监视(print/display)等实用命令。特别针对调试中的常见场景,如循环处理、函数跳转等,提供了until、finish等高效指令的
2026-05-17 11:08:10
1888
43
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅