logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Linux手册】共享内存:零拷贝实现共享的优势与实操指南

本文介绍了进程间通信的一种高效方式——共享内存。与管道通信相比,共享内存直接在物理内存开辟公共空间,避免了文件IO的低效问题。文章详细讲解了共享内存的原理、实现步骤和系统调用接口,包括shmget创建、shmat挂接和shmctl释放等操作。通过Demo代码展示了两个进程如何使用共享内存进行通信,并对比分析了共享内存与管道的优缺点:共享内存无需数据拷贝,速度最快,但缺乏同步机制且需要手动管理资源。

文章图片
#linux#运维#服务器
【Linux手册】管道通信:从内核底层原理到使用方法

本文介绍了进程间通信的重要方式——管道。管道分为匿名管道和命名管道两种,前者仅用于有血缘关系的进程间通信。本文详细讲解了管道的实现原理:通过内存级文件实现高效通信,避免磁盘IO开销。同时解释了管道的特点(单向通信、字节流、进程协同等)和接口使用方法(pipe函数)。通过三个应用场景(命令行筛选、简单求和程序、进程池)展示了管道的实际应用,并提供了代码示例。父子进程通信时需要关闭不需要的文件描述符以

文章图片
#java#linux#网络 +2
【Linux手册】Unix/Linux 信号:原理、触发与响应机制实战

本文全面介绍了Linux系统中的信号机制。信号是操作系统用于进程间异步通信的软中断方式,能够打断进程执行流程以处理紧急事件。文章从8个方面展开:1)信号概念,解释其必要性和存储机制;2)操作系统通过中断机制读取键盘输入(如Ctrl+C)并转换为信号;3)信号产生方式包括键盘组合键、kill命令、系统调用、异常和软件条件;4)信号默认行为分为终止、暂停等;5)信号通过进程PCB中的位图结构保存;6)

文章图片
#linux#unix#运维
【STL源码剖析】从源码看 vector:底层扩容逻辑与内存复用机制

本文深入剖析了STL中vector容器的实现原理,主要从四个方面展开:1)数据结构采用三个指针管理动态数组;2)迭代器直接使用原生指针实现;3)构造过程通过allocate_and_fill分配初始化空间;4)元素操作如push_back采用二倍扩容策略。帮助读者理解STL底层实现的价值,vector通过封装动态数组管理细节,为用户提供高效易用的接口。分析显示,vector的核心在于动态内存管理和

文章图片
#c++#java#开发语言 +1
【Linux手册】Unix/Linux 信号:原理、触发与响应机制实战

本文全面介绍了Linux系统中的信号机制。信号是操作系统用于进程间异步通信的软中断方式,能够打断进程执行流程以处理紧急事件。文章从8个方面展开:1)信号概念,解释其必要性和存储机制;2)操作系统通过中断机制读取键盘输入(如Ctrl+C)并转换为信号;3)信号产生方式包括键盘组合键、kill命令、系统调用、异常和软件条件;4)信号默认行为分为终止、暂停等;5)信号通过进程PCB中的位图结构保存;6)

文章图片
#linux#unix#运维
【烧脑算法】Dijkstra 算法:解决最短路问题

本文系统介绍了Dijkstra算法在求解最短路径问题中的应用。Dijkstra算法是一种贪心算法,通过每次选择当前距离源点最近的顶点,逐步确定所有顶点的最短路径。文章详细讲解了两种实现方式:数组遍历法(O(n²+m))适合稠密图,优先队列法(O(mlogn))适合稀疏图。通过7道力扣例题(如网络延迟时间、最小体力消耗路径等),展示了算法在不同场景下的具体应用,包括有向图、网格图等特殊情况的处理技巧

文章图片
#算法#java#面试 +2
【Linux手册】操作系统如何管理存储在外设上的文件

本文介绍了Linux操作系统如何管理未被打开的文件,重点分析了磁盘存储结构和文件系统的工作原理。磁盘作为永久性存储介质,通过CHS寻址定位扇区,操作系统将其抽象为线性LBA地址。文件系统采用分治策略,将磁盘划分为多个Block Group进行管理,每个Block Group包含数据块、inode表、位图等结构。inode存储文件属性和数据块索引,采用直接和间接索引方式支持大文件。Super Blo

文章图片
#linux#运维#服务器 +2
【Linux手册】进程终止:进程退出和信号的响应机制

本文探讨了进程终止的三种场景:正常完成、错误完成和异常终止。重点介绍了退出码机制(通过main函数返回值判断进程状态)、errno变量(记录库函数调用失败信息)以及异常信号的产生方式。文章对比了exit()和_exit()系统调用的区别,指出exit()会在调用_exit()前刷新缓冲区,而_exit()直接终止进程。最后强调了异常终止时退出码无意义,以及父进程通过进程等待获取子进程状态的重要性。

文章图片
#linux#服务器#运维 +2
【Linux手册】进程等待:必要性剖析与wait、waitpid等多种方式实操指南

本文介绍了Linux系统中的进程等待机制,重点分析了wait()和waitpid()系统调用的使用与原理。进程等待的主要作用包括:回收僵尸进程防止内存泄漏、获取子进程的退出状态信息、确保父进程正确释放资源。文章详细解析了status参数的底层实现方式,通过32位整型的不同比特位存储进程退出状态和异常信息。waitpid()相比wait()增加了指定子进程PID和非阻塞轮询功能,使父进程可以灵活处理

文章图片
#linux#服务器#编辑器 +2
【Linux手册】进程地址空间:从虚拟到物理的内存寻址

本文深入浅出地剖析了进程地址空间的核心概念。首先通过经典布局示意图说明进程地址空间的组成区域(代码段、栈区、堆区等),并解释32位系统的4GB地址空间限制。重点阐述了进程地址空间的本质是虚拟地址空间,通过mm_struct结构体进行管理,使用页表实现虚拟地址到物理地址的映射。文章详细分析了页表的关键作用:1) 实现写时拷贝机制保证进程独立性;2) 通过权限位防止非法访问;3) 利用有效位处理缺页中

文章图片
#linux#服务器#运维 +2
到底了