YGC的主页

malloc底层两种堆内存申请方式 brk + mmap 匿名映射

前置 进程堆区位于 BSS 段之后,自低地址向高地址增长。 内核通过 mm_struct 中的 program break 标记堆的上边界。 用户态动态内存扩容,内核只提供两种底层方式:brk 主堆扩容、mmap 匿名映射扩容。 1. brk /sbrk(小块内存) 函数原型与返回值 // brk

蔚淦丞 蔚淦丞 发布于 2026-09-13

SWAP交换分区、页面置换算法

1. 核心整体关系 页面置换算法 和 Swap 是配套机制: 页面置换算法:负责内存紧张时,挑选哪一页淘汰 Swap:负责把淘汰下来、无磁盘原生副本的页面,落地到磁盘保存 缺页异常 + 无空闲物理页 → 置换算法选冷页淘汰 → 根据页面类型决定是否写 Swap。

蔚淦丞 蔚淦丞 发布于 2026-09-13

写时复制

核心思想 fork 创建子进程时,不拷贝物理内存,父子进程虚拟页映射到同一份物理页;仅当任意进程尝试写入页面时,才复制对应的物理页。 页面分类与 fork 处理 .text、.rodata:本身 PTE 标记只读,不参与 COW。父子共享物理页;尝试写直接触发段错误 SIGSEGV。 .data、.

蔚淦丞 蔚淦丞 发布于 2026-09-13

虚拟内存、物理内存、MMU、分页、多级页表

一、物理内存 主板上真实的内存条,硬件实体,使用物理地址寻址。CPU 最终访问内存芯片时,发送的一定是物理地址。物理内存是系统全局资源,所有进程共享。 物理内存可寻址的最大上限,由CPU 芯片内部物理地址总线的硬件位宽决定。同一种架构下,不同型号 CPU 物理地址位宽可以不一样。 二、虚拟内存与虚拟

蔚淦丞 蔚淦丞 发布于 2026-09-11

左值、右值、左值引用、右值引用、move语义

一、定义 左值(Lvalue):有名字、可被取地址、生命周期稳定的值 右值(Rvalue):没有名字、临时产生、用完即销毁的值 所有C++表达式结果,只有两种身份:左值 或 右值。 二、左值 & 右值 详细区分 1. 左值 Lvalu

蔚淦丞 蔚淦丞 发布于 2026-09-11

ELF 文件与常用 ELF 节详解

操作系统学习笔记:ELF 文件与常用 ELF 节详解 一、基础前置认知 1. 什么是 ELF 文件 Windows 系统的可执行程序是 .exe 格式,Linux 系统下可执行程序、动态库、编译中间目标文件,统一遵循ELF 格式。

蔚淦丞 蔚淦丞 发布于 2026-09-10

线程间通信、进程间通信方式

一、线程间通信方式(同一进程内,地址空间共享) 线程天然共享进程虚拟地址空间,通信核心是共享内存 + 同步机制。 1. 共享全局变量 / 堆内存 所有线程可直接读写

蔚淦丞 蔚淦丞 发布于 2026-09-08

Linux 线程等待 / 唤醒相关函数整理

线程间 一、pthread 条件变量族(pthread_cond_*) 头文件:#include <pthread.h> 表格

蔚淦丞 蔚淦丞 发布于 2026-09-08

epoll单线程最简模型 + 多线程多Reactor工业模型

一、epoll 核心概念 epoll 是 Linux 专属的高性能 IO 多路复用机制,核心作用是监听海量文件描述符的读写事件,是 C/C++ 高并发 TCP 服务的底层基石。 相较于 select/poll:epoll 采用事件通知机制,仅返回就绪的文件描述符,海量空闲连接不会产生性能损耗,高并发

蔚淦丞 蔚淦丞 发布于 2026-09-07

Select/Poll使用总结

一、核心总览 select / poll 是 Linux 经典水平触发(LT) IO多路复用模型。 核心作用:单线程监听多个文件描述符,阻塞等待IO事件,避免忙轮询,大幅提升并发能力。 两者事件触发机制、内核调度、快照逻辑、唤醒机制完全一致,唯一区别是数据结构与限制。 二、Select 完整原理与特

蔚淦丞 蔚淦丞 发布于 2026-09-04

C++多态与虚函数

一、什么是多态 多态是 C++ 面向对象三大特性之一(封装、继承、多态)。 多态含义:父类指针 / 引用指向子类对象,调用函数时,执行的是子类的版本。 简单一句话: 同样的父类接口,不同的子类表现出不同行为。 多态分为两种: 静态多态(编译期):函数重载、模板 动态多态(运行期):虚函数(本文重点)

蔚淦丞 蔚淦丞 发布于 2026-09-03

C++虚继承核心机制

一、虚继承的诞生原因 普通多重菱形继承存在两个严重问题: 公共基类会被拷贝多份存放在最终子类对象中,造成数据冗余。 访问公共基类成员时存在二义性,编译器不知道使用哪一份父类副本。 虚继承的唯一作用: 让多个父类,共享同一份公共基类子对象,保证最终子类中公共基类唯一。

蔚淦丞 蔚淦丞 发布于 2026-09-03

C++构造、析构函数访问权限 特殊场景

默认 public 构造 / 析构是常规用法,本文不记录。 只记录工程特殊用法 + 精准限制 + 真实作用。 基础核心规则(5 条) 构造权限:控制能不能 new / 栈实例化 析构权限:控制能不能 delete / 栈自动析构 protected:子类可见,外部不可见 构造、析构 和拷贝无关,禁止

蔚淦丞 蔚淦丞 发布于 2026-09-03

从网线到加密:交换机、路由器、TCP与加密体系全链路理解

物理层、数据链路层、网络层 物理地址(MAC) 每个物理地址都是全球唯一的,出厂时就预设定好的唯一标识。 集线器 想想最初两台设备之间要互联,怎么做?在两台设备之间连上一根网线。三台设备之间互联呢?两两之间连上一根网线。问题来了:设备稍微一多,每台设备都需要接出去N个网线,怎么解决?

蔚淦丞 蔚淦丞 发布于 2026-09-02

行为型设计模式(共11种)

1、观察者模式(Observer) 原理:实现一对多的依赖关系。被观察者(发布者)维护一份观察者订阅列表;当自身状态发生改变,主动遍历列表发送通知,所有订阅的观察者自动收到回调。发布方和订阅方解耦。 使用场景:网络事件通知、配置热更新、消息订阅‑发布、事件驱动系统。 #include <iostre

蔚淦丞 蔚淦丞 发布于 2026-09-01