<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hyxdg的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hyxdg</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hyxdg]]></copyright><item><title><![CDATA[Linux线程概念和控制]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/148675623</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/148675623</guid><author>hyxdg</author><pubDate>Thu, 10 Jul 2025 15:32:59 +0800</pubDate><description><![CDATA[线程是进程内部的执行分支，共享进程资源但拥有独立执行流。在Linux中，线程通过轻量级进程(LWP)实现，复用进程控制块(task_struct)结构，多个线程共享同一进程地址空间(mm_struct)。线程作为CPU调度的基本单位，相比进程具有创建代价小、切换效率高等优势。 关键实现机制： 虚拟内存管理：采用多级页表将连续虚拟地址映射到离散物理页框，通过页目录(CR3寄存器)和TLB快表加速地址转换 ]]></description><category></category></item><item><title><![CDATA[Linux信号详解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/148402170</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/148402170</guid><author>hyxdg</author><pubDate>Wed, 11 Jun 2025 12:23:18 +0800</pubDate><description><![CDATA[本文以快递场景类比，生动讲解了操作系统信号机制的核心概念：信号产生（如键盘输入、硬件异常、软件条件）、识别与处理（默认/自定义/忽略动作）、保存（通过位图记录Pending状态）、阻塞与递达的差异。信号处理涉及用户态与内核态切换，硬件中断（如时钟、外设）和软件中断（如系统调用）是其底层基础。文章还介绍了信号集操作函数（sigprocmask、sigpending）、信号捕捉流程、volatile关键字防优化，以及sigaction函数的扩展功能。最后通过SIGCHLD信号示例，说明如何避免僵尸进程。]]></description><category></category></item><item><title><![CDATA[Linux进程间通信]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/148150119</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/148150119</guid><author>hyxdg</author><pubDate>Thu, 29 May 2025 19:36:14 +0800</pubDate><description><![CDATA[本文介绍了进程间通信(IPC)的主要方法和实现原理。主要内容包括：1. IPC的分类和发展历程，包括管道、SystemV IPC和POSIX IPC；2. 匿名管道和命名管道的创建、使用及区别，重点分析了管道的读写规则和特性；3. SystemV共享内存的原理与实现，详细说明了shmget、shmat等关键函数的使用方法；4. SystemV信号量的作用机制，阐述了其对临界资源的保护原理。文章从内核角度深入解析了各种IPC方式的本质，特别强调了共享内存的高效性和信号量的同步保护功能，]]></description><category></category></item><item><title><![CDATA[Linux—进程池实现]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/148189190</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/148189190</guid><author>hyxdg</author><pubDate>Sat, 24 May 2025 14:14:06 +0800</pubDate><description><![CDATA[进程池实现方案通过预创建和管理子进程提高并发效率。核心组件包括：1)Channel类封装进程通信管道，包含文件描述符、进程ID等属性，提供发送消息和关闭功能；2)ChannelManager采用轮询机制管理多个Channel，确保负载均衡；3)ProcessPool主类负责创建子进程池，通过管道进行任务分发。实现时需注意父子进程的管道文件描述符继承问题，解决方案包括反向关闭管道或统一关闭所有写端。该系统支持注册多种任务类型（如日志打印、文件上传下载），通过随机选择任务码实现任务分配，避免频繁创建销毁进程的开]]></description><category></category></item><item><title><![CDATA[Linux动静态库制作与原理]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/148032972</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/148032972</guid><author>hyxdg</author><pubDate>Mon, 19 May 2025 20:25:58 +0800</pubDate><description><![CDATA[库是预先编写好的、成熟的、可复用的代码集合，分为静态库和动态库。静态库在编译时链接到可执行文件中，程序运行时不再需要静态库；动态库则在程序运行时才链接，多个程序可以共享使用。静态库通过将目标文件（.o）打包生成，动态库则需要编译为位置无关代码（PIC）并通过共享选项生成。动态库的核心特性是可以被加载到内存的任意地址，并被多个程序共享，节省内存和磁盘空间。动态链接通过全局偏移表（GOT）和过程连接表（PLT）实现，延迟绑定进一步优化了性能。库的存在使得程序开发更加高效，避免了从零开始编写代码的繁琐。]]></description><category></category></item><item><title><![CDATA[Linux的Ext系列文件系统]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147904768</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147904768</guid><author>hyxdg</author><pubDate>Tue, 13 May 2025 11:11:15 +0800</pubDate><description><![CDATA[文章详细介绍了磁盘的物理和逻辑结构，包括扇区、磁头、磁道、柱面等基本概念，并解释了CHS和LBA两种寻址方式。磁盘的存储单位是扇区，通常大小为512字节，而操作系统读取数据时以“块”为单位，通常为4KB。文章还讨论了磁盘的分区、文件系统的组织方式，特别是ext2文件系统的结构，包括超级块、块位图、inode位图、inode节点表和数据区。此外，文章还介绍了inode的概念，它是存储文件属性的区域，每个文件都有对应的inode。最后，文章探讨了软硬链接的区别及其用途]]></description><category></category></item><item><title><![CDATA[Linux基础io知识]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147805923</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147805923</guid><author>hyxdg</author><pubDate>Sun, 11 May 2025 15:59:42 +0800</pubDate><description><![CDATA[文件在计算机系统中扮演着重要角色，狭义上指存储在磁盘上的数据，磁盘作为永久性存储介质，文件在其上的存储是永久性的。广义上，Linux系统中“一切皆文件”，包括键盘、显示器等设备。文件操作本质是对外设的输入输出（IO），涉及文件内容和属性的管理。操作系统通过系统调用接口管理文件，而非直接通过C语言等库函数。文件描述符（fd）是操作系统识别文件的关键，通过它进行文件的读写操作。重定向技术如dup2函数，可以改变标准输入输出的目标，实现数据的灵活处理。理解文件操作和系统调用对于深入掌握计算机系统至关重要。]]></description><category></category></item><item><title><![CDATA[自定义实现shell命令解释器]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147686654</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147686654</guid><author>hyxdg</author><pubDate>Wed, 07 May 2025 16:47:37 +0800</pubDate><description><![CDATA[由于命令行不会打印出整条路径，只会输出最后一个所在文件，所以可以用string来实现这个功能使用rfind来查找最后一个路径。最后提取子串即可。]]></description><category></category></item><item><title><![CDATA[Linux进程控制与替换详解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147653462</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147653462</guid><author>hyxdg</author><pubDate>Sat, 03 May 2025 17:27:20 +0800</pubDate><description><![CDATA[在linux中fork函数是非常重要的函数，它从已存在进程中创建⼀个新进程。新进程为子进程，而原进程为父进程。
进程调用fork，当控制转移到内核中的fork代码后，内核做：分配新的内存块和内核数据结构给子进程
将父进程部分数据结构内容拷贝至子进程
添加子进程到系统进程列表当中
 fork返回，开始调度器调度]]></description><category></category></item><item><title><![CDATA[进程地址空间]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147621505</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147621505</guid><author>hyxdg</author><pubDate>Thu, 01 May 2025 00:10:30 +0800</pubDate><description><![CDATA[这种形式的程序地址空间根本不可能在内存中存在，这是因为在cpu中需要同时运行很多个进程。无法将每个进程都按照这个形式排列，这样进程将会没有空间运行。可以通过这段代码来帮助我们了解地址结构，运行结果如图所示我们可以发现全局变量的地址与static变量的地址相邻，说明static变量也是全局变量的一种。]]></description><category></category></item><item><title><![CDATA[Linux环境变量]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147597307</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147597307</guid><author>hyxdg</author><pubDate>Tue, 29 Apr 2025 09:38:41 +0800</pubDate><description><![CDATA[环境变量(environment variables)⼀般是指在操作系统中用来指定操作系统运行环境的⼀些参数
如：我们在编写C/C++代码的时候，在链接的时候，从来不知道我们的所链接的动态静态库在哪 ⾥，但是照样可以链接成功，生成可执行程序，原因就是有相关环境变量帮助编译器进行查找。
环境变量通常具有某些特殊用途，还有在系统当中通常具有全局特性]]></description><category></category></item><item><title><![CDATA[Linux进程详细解析]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147542594</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147542594</guid><author>hyxdg</author><pubDate>Sun, 27 Apr 2025 23:34:26 +0800</pubDate><description><![CDATA[基本概念与基本操作
课本概念：程序的⼀个执行实例，正在执行的程序等
内核观点：担当分配系统资源（CPU时间，内存）的实体。
描述进程-PCB
进程信息被放在⼀个叫做进程控制块的数据结构中，可以理解为进程属性的集合。
课本上称之为PCB（process control block），Linux操作系统下的PCB是:task_struct 。task_struct-PCB的⼀种
在Linux中描述进程的结构体叫做task_struct。 ]]></description><category></category></item><item><title><![CDATA[cgdb的基础使用教程]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147463565</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147463565</guid><author>hyxdg</author><pubDate>Wed, 23 Apr 2025 22:01:29 +0800</pubDate><description><![CDATA[ubuntu的下载方式centos的下载方式。]]></description><category></category></item><item><title><![CDATA[蓝桥杯十一届C++B组真题题解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/147013070</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/147013070</guid><author>hyxdg</author><pubDate>Wed, 09 Apr 2025 08:57:19 +0800</pubDate><description><![CDATA[【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户，门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符，最后根据需要将字符粘贴到门牌上，例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7，即需要 1 个字符 0， 2 个字符 1， 1 个字符 7。请问要制作所有的 1 到 2020 号门牌，总共需要多少个字符 2？【答案提交】这是一道结果填空的题，你只需要算出结果后提交即可。]]></description><category></category></item><item><title><![CDATA[蓝桥杯十三届C++B组真题题解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/146381264</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/146381264</guid><author>hyxdg</author><pubDate>Mon, 24 Mar 2025 21:22:37 +0800</pubDate><description><![CDATA[九进制正整数 (2022), 转换成十进制等于多少?这是一道结果填空的题，你只需要算出结果后提交即可。本题的结果为一个整数，在提交答案时只填写这个整数，填写多余的内容将无法得分。]]></description><category></category></item><item><title><![CDATA[蓝桥杯十四届C++B组真题题解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/146340561</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/146340561</guid><author>hyxdg</author><pubDate>Thu, 20 Mar 2025 20:22:08 +0800</pubDate><description><![CDATA[【问题描述】小蓝现在有一个长度为100的数组，数组中的每个元素的值都在0到9的范围之内。数组中的元素从左至右如下所示：现在他想要从这个数组中寻找一些满足以下条件的子序列:1.子序列的长度为 8:2.这个子序列可以按照下标顺序组成一个 yyy,ymmdd 格式的日期，并且要求这个日期是 2023 年中的某一天的日期，例如 20230902，20231223。yyyy 表示年份，mm 表示月份，dd 表示天数，当月份或者天数的长度只有一位时需要一个前导零补充。]]></description><category></category></item><item><title><![CDATA[蓝桥杯十五届c++B组真题题解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/146316063</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/146316063</guid><author>hyxdg</author><pubDate>Tue, 18 Mar 2025 14:14:22 +0800</pubDate><description><![CDATA[先将50个人之间握手的次数求出，再减去7个人之间相互握手的次数即可。]]></description><category></category></item><item><title><![CDATA[Linux项目自动化构建工具-make/Makeﬁle]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/146300911</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/146300911</guid><author>hyxdg</author><pubDate>Sun, 16 Mar 2025 21:57:50 +0800</pubDate><description><![CDATA[会不会写makeﬁle，从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数，其按类型、功能、模块分别放在若干个目录中，makeﬁle定义了一系列的 规则来指定，哪些文件需要先编译，哪些文件需要后编译，哪些文件需要重新编译，甚至于进行更复杂的功能操作makeﬁle带来的好处就是——“自动化编译”，一旦写好，只需要一个make命令，整个工程完全自动编译，极大的提高了软件开发的效率。]]></description><category></category></item><item><title><![CDATA[Linux环境安装基础工具使用]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/145305538</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/145305538</guid><author>hyxdg</author><pubDate>Sat, 15 Mar 2025 14:04:10 +0800</pubDate><description><![CDATA[gcc code.c -o code -DM：会在源文件命令行中动态添加宏Mgcc code.c -0 code -DM=100 将M的值设置为100这是因为。]]></description><category></category></item><item><title><![CDATA[C++并查集的功能以及实现详解]]></title><link>https://blog.youkuaiyun.com/hyxdg/article/details/146232492</link><guid>https://blog.youkuaiyun.com/hyxdg/article/details/146232492</guid><author>hyxdg</author><pubDate>Sat, 15 Mar 2025 12:06:26 +0800</pubDate><description><![CDATA[在此过程中要反复用到查询某一 个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为比如：某公司今年校招全国总共招生10人，西安招4人，成都招3人，武汉招3人，10个人来自不 同的学校，起先互不相识，每个学生都是一个独立的小团体，给以下数组用来存储该小集体，数组中的数字代表：该小集体中具有成员的个 数。(负号下文解释)]]></description><category></category></item></channel></rss>