logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux信号机制(三):中断、调度与系统调用

综上所述,从硬件中断到时钟中断,再到系统调用与软中断机制,我们逐步理解了操作系统是如何真正“运行起来”的:外设通过中断打断 CPU,CPU 借助 IDT 跳转到对应的中断处理例程,内核再通过调度器重新分配执行资源,最终完成从用户态到内核态、再返回用户态的整个闭环。与此同时,无论是 int 0x80、sys_call_table,还是时钟中断触发的 schedule,本质上都说明了一件事:操作系统并

文章图片
#linux#运维#服务器
Linux库制作与使用(三):ELF加载与动态链接机制

综上所述,从 ELF 文件中的虚拟地址,到进程创建时 mm_struct 与 vm_area_struct 的构建,再到动态链接器对共享库的加载与 GOT / PLT 的地址修正,我们逐步串联起了程序从磁盘文件到运行进程的完整链路。程序之所以能够被正确执行,本质上依赖于操作系统对地址空间、页表映射以及动态链接机制的统一管理与此同时,我们也进一步理解了:代码区之所以能够保持只读,是因为动态链接并不会

文章图片
#linux#运维#服务器
Linux库制作与使用(二):ELF文件与链接过程

ELF的全称是(可执行与可链接格式)它是 Linux 以及大多数类 Unix 系统中二进制文件的标准格式。我们可以把它想象成一个极其精密的多层集装箱:它不仅装载着机器指令(代码)和原始数据它还携带了大量的元数据(Metadata),告诉链接器如何合并不同的代码段,或者告诉操作系统如何将这些指令映射到内存中运行为什么统一格式很重要?因为有了统一的 ELF 标准,编译器、链接器和操作系统加载器就能使用

文章图片
#linux#运维#服务器
Linux文件系统(一):从磁盘结构到文件系统基础

速度 vs 容量 vs 价格磁盘(这里主要指HDD,机械硬盘)在整个存储体系中占据着极其关键的地位。它是计算机的持久化存储设备核心特征:持久性内存:往往具有易失性,一旦断电,所有电信号瞬间消失,数据归零磁盘:永久存储。它通过改变盘片上磁粉的极性来记录数据。无论你关机一个月还是搬运服务器,只要磁头不物理损坏,数据就会安然无损地保留其中为什么它是主力虽然现在 SSD(固态硬盘)风头正盛,但在企业级存储

文章图片
#linux#运维#网络
Linux文件系统(三):VFS 结构与软硬链接详解

在 VFS 的数据结构中,文件名的存在感其实很低——它只存在于 dentry(目录项)中链接的宏观定义:本质上是建立多个不同的 dentry映射到同一个 inode 的机制。这意味着可以通过不同的路径找到同一个文件,从而实现数据的共享与快速访问内核在创建链接时的底层行为A. dentry 的实例化对于每一个链接,操作系统都会在内存中创建一个新的 dentry 实例d_name 填充:内核将链接的文

文章图片
#linux#服务器#运维
Linux文件系统(二):ext2 结构与路径解析

文件名 → dentry → inode → data block用户通过路径访问文件,系统则通过目录逐级解析,借助 dentry 加速查找,最终通过 inode 定位到具体的数据块但这些结构是如何在不同文件系统之间被统一管理的?操作系统又如何对外提供一致的文件接口?在下一篇中,我们将引入 VFS(虚拟文件系统),进一步理解 Linux 文件系统的整体架构。

文章图片
#linux#运维#服务器
Linux入门(一):起源、生态与基础使用

Linux 是自由软件和开源软件发展中最成功的典范。在GNU GPL(通用公共许可证)使用自由:无论商业还是个人,都可以无限制地运行程序研究自由:你可以阅读每一行底层源代码,理解系统是如何工作的修改自由:你可以自由定制所需功能,这在闭源的 Windows,macOS 中是绝对禁止的分发自由:你可以自由地传播原始版本或你修改后的衍生版本理查德·斯托曼撰写的GPL 协议是 Linux 能够长盛不衰的根

文章图片
#linux#运维#服务器
C++智能指针:从 RAII 到 shared_ptr 源码实现

int _data;// 形成循环引用// 函数结束前,n1 和 n2 的引用计数均为 2当函数结束,局部变量 n1 和 n2 析构后,堆上的两个节点的引用计数减到了 1。右边节点(n2)何时释放?它由左边节点中的成员 _next 管着,只有当 _next 析构时,右边节点才会释放_next 何时析构?它是左边节点的成员,只有当左边节点释放时,它的成员 _next 才会析构左边节点(n1)何时释放

文章图片
#c++#开发语言
C++ 数据结构进阶:unordered_map 与 unordered_set源码分析与实现

本次封装的核心在于通过 KeyOfValue 仿函数 实现了底层 HashTable 与上层 set/map 的解耦。这种一套引擎,两套外壳的设计,不仅利用模板策略完成了 O(1) 平均时间复杂度的极致性能,更通过 pair<const K, V> 从编译器层面锁死了 Key 的修改权限特性map / set底层结构红黑树(平衡搜索树)哈希表(开链法)查找效率O(log N)(稳定)O(1)(平均

文章图片
#哈希算法#算法#c++ +1
C++模板进阶:非类型参数、特化与分离编译全解析

非类型模板参数指的是不是一个类型,而是编译期就可以确定的常量值private:T _data[N];T是类型参数N是非类型模板参数使用时不同的N,会生成完全不同的模板实例// test.hint main()func();每个 .cpp 单独编译, 生成目标文件 .o链接阶段把所有目标文件合并链接器根据符号表找到 func() 的实现普通函数在编译阶段就已经确定了具体的函数实体模板不是函数,不会提

#c++#开发语言
到底了