
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
深入探讨了进程地址空间的概念及其在操作系统中的重要作用。首先回顾了C/C++内存区域划分,通过实验验证了栈区向下增长、堆区向上增长的特性。重点阐述了进程地址空间的本质是内核数据结构,包含页表、CR3寄存器等关键组件,以及写时拷贝机制的工作原理。通过分析mm_struct结构体,详细说明了操作系统如何管理进程地址空间。文章还解释了进程地址空间存在的意义:保护物理内存、实现进程隔离,并指出进程地址空间

介绍磁盘存储和文件系统的基本原理。首先将文件分为打开和未打开两类,指出存储文件需要保存文件内容和属性。然后详细讲解了磁盘的物理结构,包括盘片、磁头等组件,并解释了磁盘利用磁性存储数据的原理。在抽象层面介绍了CHS/LBA两种寻址方式,说明扇区是磁盘访问的基本单位。最后初步探讨了文件系统的概念,指出操作系统通过分区管理硬盘空间,每个分区可以用结构体描述其地址范围,而文件系统的核心任务就是管理分区中的

实验演示浮点异常(SIGFPE)的处理机制。当程序执行除零操作时,CPU会产生除法异常(#DE),操作系统捕获后向进程发送SIGFPE信号。若仅捕获信号而不终止进程,会导致无限循环:异常处理返回后会重新执行故障指令,再次触发异常。这是因为CPU将返回地址设置为故障指令而非下一条指令,以便在异常修复后重试。文章还分析了异常分类机制,指出操作系统通过异常向量号区分不同异常,并解释了为何不直接杀死异常进

介绍了操作系统中的进程状态分类,包括运行状态、阻塞状态、挂起状态和就绪状态,并对比了不同操作系统教材中的定义差异。重点分析了Linux内核中的进程状态实现(R/S/D/T/t/X等),通过实验演示了进程在不同状态下的表现。特别解释了D状态(不可中断睡眠)的特性及其与S状态的区别,并提供了模拟高IO场景的代码示例。文章还涉及进程调度算法、前台/后台进程、虚拟内存管理等核心概念,最后介绍了交换分区及其

C++11线程库与Linux pthread库的关系及其实现原理。主要内容包括:1)通过实验证明C++11 thread库底层调用pthread原生线程库;2)分析线程属性维护机制,指出pthread库通过线程控制块(TCB)管理线程属性;3)验证Linux线程由用户级线程和内核LWP组成的一对一模型;4)通过寄存器值和系统调用证明线程拥有独立栈结构,相邻线程栈间存在保护页。研究结果表明,C++1

1.知识回顾 fork()的使用 2.使用fork()创建多个进程 情景引入:fork()炸弹 示例代码讲解 3.进程终止 进程退出的几种情况 退出码 strerror函数 全局变量errno ★退出码和错误码不是一回事 代码是否异常终止 exit函数 对比return和exit 对比exit和_exit _exit系统调用 _Exit函数 4.总结本文退出进程的几种方法

可以类比模具,优点:将数据类型作为参数传递,这样就不需要为不同的数据类型编写相同的代码模版其实是有泛型编程的思想: 编写与类型无关的通用代码,是代码复用的一种手段改造CD14.【C++ Dev】类和对象(5) 析构函数和拷贝构造函数文章的代码public:return;top = 0;~MyStack()//需要手动释放资源free(a);int top;T* a;int top。

介绍了Git的基本概念和使用方法。Git是一个免费开源的分布式版本控制系统,由Linus Torvalds开发。文章讲解了如何创建Git仓库,安装Git,使用git clone克隆仓库,配置用户信息。重点介绍了常用命令:git add提交文件变更到暂存区,git commit记录本地修改,git push推送更改到远端仓库,以及git log查看提交历史和git status检查仓库状态。最后解释

本文探讨了Linux系统中信号的产生机制。首先解释了Ctrl+C如何通过硬件中断转化为信号:键盘输入触发中断,操作系统解释为信号发送给前台进程。信号产生是异步的,进程随时可能被中断。文章详细介绍了三种产生信号的系统调用:kill(向指定进程发送信号)、raise(向自身发送信号)和abort(发送SIGABRT信号并终止进程)。通过代码示例展示了这些调用的使用方法和效果,包括自定义信号处理函数的实

本文分析了Linux进程池项目中子进程继承父进程管道写端导致的问题及改进方法。测试发现后创建的子进程会继承更多文件描述符,包括之前创建的管道写端,导致clean_process_pool时waitpid阻塞。提出了两种解决方案:1)倒序关闭子进程管道写端,使read不再阻塞;2)在子进程中主动关闭继承的所有写端。这两种方法都有效解决了进程池中子进程无法正常退出的问题,为进程间通信的管道管理提供了优








