- 博客(51)
- 收藏
- 关注
原创 【Linux仓库】虚拟地址空间【进程·陆】
本文介绍了C/C++程序的内存空间布局,重点讲解了虚拟地址空间的概念及其作用。通过代码实验,验证了各内存区域(代码区、全局区、堆、栈)在虚拟地址空间中的分布,并通过fork实验说明父子进程虚拟地址相同但数据独立,体现了写时拷贝机制。文章还介绍了Linux内核用于管理进程虚拟内存的mm_struct和vm_area_struct结构。最后分析了虚拟地址空间的优势,包括提升安全性、简化管理和提高效率。
2025-07-12 18:10:02
792
66
原创 【Linux仓库】命令行参数与环境变量【进程·伍】
本文介绍了Linux系统中命令行参数和环境变量的相关知识。命令行参数通过main函数的argc和argv传递,允许程序根据用户输入执行不同操作,提升灵活性(如ls指令的选项实现)。环境变量是系统级全局变量,如PATH指定命令搜索路径,PWD记录当前目录。获取环境变量的方法包括main函数参数、getenv函数和environ变量。文章还解释了进程如何继承父进程环境变量,区分了环境变量和本地变量,并介绍了内建命令的概念(如echo)。
2025-07-11 12:36:17
1189
42
原创 【Linux仓库】进程优先级及进程调度【进程·肆】
本文深入探讨了Linux系统的进程优先级和调度机制。文章首先介绍了PRI(进程优先级)和NI(nice值)的概念及其关系,解释了通过调整nice值(-20到19)来改变进程优先级的原理。随后分析了Linux内核的O(1)调度算法实现,重点讲解了活动队列和过期队列的双队列设计,以及通过bitmap提高调度效率的机制。文章还讨论了分时操作系统如何避免进程饥饿问题,详细阐述了通过交换活动队列和过期队列指针来保证公平调度的巧妙设计。最后,文章简要提及了进程调度的上下文切换过程和时间片机制。
2025-07-03 13:54:11
2393
71
原创 【Linux仓库】进程概念与基本操作【进程·贰】
本文摘要:本文介绍了Linux中进程的基本概念与操作。进程由内核数据结构(PCB)和代码数据组成,操作系统通过链表管理多个进程。讲解了进程属性(PID、状态、优先级等)和进程切换机制(上下文保存与恢复)。通过/proc系统文件夹和ps工具可查看进程信息,包括父进程PPID。重点阐述了fork系统调用创建子进程的过程及其双返回值特性(父进程返回子进程PID,子进程返回0),为后续学习进程管理和虚拟地址空间奠定基础。
2025-06-21 10:59:27
1522
74
原创 【Linux仓库】进程状态【进程·叁】
本文探讨了Linux进程状态的理论设计与实际实现差异。首先阐述了进程状态的表示方法(通过数字标记)和双链表在进程管理中的应用(Linux采用封装指针而非直接链接)。然后详细分析了四种核心状态:运行状态(处于CPU调度队列)、阻塞状态(等待设备资源)、挂起状态(内存不足时置换到磁盘)以及僵尸状态(保留task_struct等待父进程读取退出信息)。特别指出D状态(不可中断磁盘休眠)的重要性,并通过职场故事说明其防杀特性。最后讨论了僵尸进程的危害(内存泄漏风险)和孤儿进程的处理机制。
2025-06-13 19:00:13
1569
77
原创 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
本文介绍了冯诺依曼体系结构的特点和计算机的数据流动原理。作者首先解析了冯诺依曼体系中CPU、内存和输入输出设备的关系,指出内存作为CPU与外设间的缓冲层,既平衡了速度和成本,又提升了整体效率。通过微信聊天和文件传输的例子,生动说明了数据在不同设备间拷贝的本质。文章还探讨了操作系统的作用和管理方式,强调操作系统通过"先描述,再组织"的方法管理软硬件资源,并解释了系统调用和库的关系。最后指出安全机制在操作系统中的重要性。
2025-06-04 15:01:57
3306
84
原创 【Linux仓库】Linux内核:深度解剖Makefile如何管理百万行代码?
本文介绍了Linux下make和Makefile的使用方法。Makefile通过定义编译规则实现自动化构建,提高开发效率。文章解析了Makefile的基本语法,包括目标文件、依赖关系和执行命令,并解释了.PHONY伪目标的作用(强制执行某些操作)。通过实例演示了从源代码到可执行文件的完整编译过程,包括预处理、编译、汇编和链接各阶段。最佳实践建议将clean标记为.PHONY,而可执行目标则根据文件修改时间决定是否需要重新编译。最后介绍了使用自动化变量$@和$^简化Makefile编写的方法。
2025-05-29 21:15:24
1299
80
原创 【Linux仓库】权限的量子纠缠:用户/组/other如何编织Linux访问控制网?
本文介绍了Linux系统中的权限管理知识,主要包括:Shell作为用户与内核交互的解释器作用Linux用户分类(root和普通用户)及sudo提权机制权限=用户+文件属性的概念,其中用户角色分为拥有者、所属组和其他人权限修改命令chown/chgrp/chmod的使用方法目录权限的特殊性(r/w/x分别对应查看/修改/进入权限)umask掩码对新建文件默认权限的影响粘滞位(t)的用途:防止目录中的文件被非所有者删除
2025-05-24 18:19:48
1925
86
原创 【C++指南】STL容器的安全革命:如何封装Vector杜绝越界访问与迭代器失效?
本章节基本介绍了vector的常见接口以及vector类的代码实现,重点在于实现vector出现的迭代器失效问题。
2025-05-10 23:37:18
1857
88
原创 【Linux仓库】Linux终端生存手册:从cd到zip的救命指令实战【上】
本章节介绍了开源与闭源,一些常用的基础指令,及LInux一切皆文件的思想。
2025-05-04 18:04:47
4108
94
原创 【C++指南】告别C字符串陷阱:如何实现封装string?
本章节剖析string中常用接口:构造、容量操作、迭代器、修改、非成员函数,模拟stl库中函数实现对应接口,并引入了两个C++11引入的新语法auto和范围for。
2025-04-25 21:16:32
2762
104
原创 【C++指南】哈希驱动的封装:如何让unordered_map/set飞得更快更稳?【上】
本章节从直接定址法进行引入,带出了哈希的概念。接着通过剖析哈希源代码来对开放定址法和链地址法进行手动造轮子。
2025-04-18 17:14:34
3578
112
原创 【c++指南】模板VS手写代码:这场效率对决你站哪边?【下】
本章节主讲非类型模版参数及特化场景,解释了为什么模版需要进行声明定义分离原因。
2025-04-06 17:12:04
1806
101
原创 【C++指南】一文总结C++二叉搜索树
本章节详解二叉搜索树的定义、性能分析,插入、查找、删除等接口和代码实现,key/value的代码实现
2025-04-01 20:24:47
1440
101
原创 【C++指南】内存管理完全手册:new/delete
本章节详解C++中内存分布,及new和delete的实现原理,定位new的简单介绍,及与C语言的malloc/free的对比
2025-03-18 18:58:47
1648
88
原创 【C++指南】一文总结C++类和对象【下】
本章节主要讲初始化列表、类型转换、静态成员变量和函数、友元、内部类、匿名对象及编译器优化的各种情况。
2025-03-12 19:09:11
3067
114
原创 第一节— —字符函数和字符串函数(没有废话,全是干货)
深度剖析各种字符串函数(strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp函数的使用和实现)。
2024-11-23 09:00:00
2068
54
原创 第二节— —字符函数和字符串函数(没有废话,全是干货)
深入剖析字符串函数(strstr,strtok,strerror,perror函数)
2024-11-23 08:15:00
1155
41
原创 第六节——从深层剖析qsort的使用(让你不再害怕指针)
详细介绍回调函数及qsort函数的使用(快速排序思想)以及如何使用冒泡排序思想模拟qsort函数的实现。
2024-10-18 18:28:53
768
18
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人