logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Windows Internals学习:高级本地过程调用(ALPC)详解

任何一个现代操作系统,都要解决一个基础问题:不同进程之间怎么安全、高效地互相传递数据,包括进程和进程之间,以及内核里的服务和用户态客户端之间。这类机制统称为进程间通信(Inter-Process Communication,简称 IPC)。不同操作系统会选用不同的实现方式:ALPC 并不是凭空出现的,它是用来取代一个更老的 IPC 机制的,那个老机制叫 LPC(Local Procedure Ca

#windows
Windows Internals学习:WoW64 文件系统重定向(File System Redirection)详解

32位程序发出的调用,先被桩函数拦下来(不真正陷入内核),转交给分发器切换到64位执行环境,参数经过一层"翻译"(简单的走Turbo thunks这条快车道,复杂的交给Wow64SystemServiceEx+wh-系列函数处理),转换完成后才真正发起原生64位系统调用,返回时再把结果反向翻译回32位格式,最后悄无声息地把控制权还给32位代码继续执行——整个过程对 32 位程序而言完全透明,它从始

#学习
Windows Internals学习:Windows 工作集管理(Working Set Management)详解

事件名称含义说明提交量(commit charge)接近最大提交限制时被设置,说明内存使用非常高,物理内存和分页文件里几乎没有空间了,操作系统也无法继续增大分页文件当空闲物理内存数量超过设定阈值时被设置当非分页池数量超过设定阈值时被设置当分页池数量超过设定阈值时被设置提交量相对于当前提交限制较低时被设置,说明内存使用很低,物理内存或分页文件里还有大量空间当空闲物理内存数量低于设定阈值时被设置当空闲

#学习
Windows Internals学习:Windows 内存管理器

这一部分内容围绕两个看起来不太相关、但本质上都是"运行时资源动态管理"的机制展开:普通桌面电脑要加/换 CPU,必须关机、拆机箱、插拔硬件——因为主板和操作系统压根没设计成支持"运行时改变处理器数量"。但服务器不一样。现代服务器主板支持热插拔 CPU(运行中插入或替换处理器),原因很直接:下面用一张流程图梳理"新处理器上线"这件事从硬件层到应用层是怎么一步步传递下去的。硬件/ACPI BIOS 检

#学习
Windows Internals学习:CreateProcess 完整流程详解

前面几节讲的都是"进程相关的数据结构长什么样"(EPROCESS、PEB、TEB 之类),以及怎么用工具去查看这些结构。这一节要讲的是这些数据结构究竟是在什么时候、被谁、怎么一步步填出来的——也就是进程从"无"到"能跑起来"的完整生命周期。所有对外公开文档的进程创建函数,最终都会走到同一个内部函数:,所以这就是分析的起点。创建一个 Windows 进程,实际上要经过操作系统里三个不同的部分分工协作

#学习
Windows Internals学习:《Windows Internals》第1章:概念与工具

这里讨论的是写作当时最新的 Windows 客户端和服务器操作系统Windows 10:包含 32 位版本(运行于 x86 和 ARM 架构)和 64 位版本(运行于 x64 架构):只有 64 位版本除非特别说明,否则所讲内容对以上所有版本均适用。产品名称(Product Name)内部版本号(Internal Version Number)——这是操作系统在底层报告给程序的版本号,和市场上的产

#学习
CppCon 2025 学习:std:optional<T&> Optional Over References

Optional 对引用的标准化从 2005 到 2025,经历了多轮提案C++17 中不支持引用2025 年 Sofia 会议通过设计难点引用的生命周期状态依赖赋值行为提案文档Range 支持Optional 变成长度为 0 或 1 的范围统一接口,便于组合和泛型算法实际效果Optional 引用 + Range 接口提高标准库一致性为 Beman 库提供了可测试的实现和反馈核心难点引用不是值类

#学习#开发语言#c++
C++草案N5032学习:C++ Lambda 闭包类型与捕获机制详解

每一个 lambda 表达式都对应一个独一无二的、匿名的、非联合体的类类型,叫做闭包类型(closure type)。关键性质:闭包类型被声明在包含该 lambda 的最小块作用域、类作用域或命名空间作用域中。1.3 闭包类型的特殊性质性质说明非聚合类型不能用聚合初始化结构化类型当且仅当无 lambda-capture 时,是结构化类型(可做模板非类型参数)实现可调整编译器可以改变大小/对齐、是否

#学习
C++草案N5032学习: C++ 通用工具库详解(N5032 第22章)C++26 标准库:`optional<T&>` 引用特化详解

是 C++17 引入的"可选值"容器,表示"可能有值,也可能没有值"的状态。普通的内部存储了一份 T 的拷贝(或原地构造的对象)。但有时候我们希望存储的不是值本身,而是对某个已有对象的引用——这就是的用途。核心实现思路由于 C++ 的引用本身不可为 null、不可重新绑定,标准库用一个裸指针来模拟可选引用:2. 类结构总览3. 构造函数详解(22.5.4.2)3.1 默认构造与 nullopt 构

#c++#学习
The Linux Programming interface学习:第一章:UNIX 与 Linux 的历史及标准

"UNIX"这个词有两种用法:定义一(官方认证): 通过了 The Open Group 官方一致性测试、拥有 UNIX 商标授权的操作系统。目前 Linux 和 FreeBSD 没有获得这个官方认证(原因是时间和费用成本太高)。定义二(习惯用法): 行为和风格像经典 UNIX 系统的操作系统。按这个定义,Linux 就是 UNIX 系统。本书采用这个定义。2.2 UNIX 名字的由来UNIX 是

#linux#学习#unix
    共 347 条
  • 1
  • 2
  • 3
  • 35
  • 请选择