<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>QuanZhou&apos;s Wiki</title><description/><link>https://zqwiki.cn/</link><item><title>6.s081 Lab1 Xv6 and Unix utilities 实现</title><link>https://zqwiki.cn/blog/6-s081-lab1/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab1/</guid><description>记录一下写 6.s081 Lab1 的过程，还有在这个实验中学到的新的知识。 这一次实验的内容为 Xv6 and Unix Utilities，实现一些基本 Unix 工具，通过这个过程了解 xv6 系统的结构，以及是如何运行的，建立对其的基本认识。</description><pubDate>Fri, 06 Mar 2026 03:29:25 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab2 system calls 实现</title><link>https://zqwiki.cn/blog/6-s081-lab2/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab2/</guid><description>Lab2 实现了两个系统调用层面的功能，在开始写代码之前要求先读完 xv6-book 的 Chapter 2 and Sections 4.3 and 4.4 of Chapter 4，以及相关的源文件，花了两天不到的时间。 做完这次实验可以深入理解 OS 的用户态、内核态的隔离，以及系统调用。</description><pubDate>Sat, 07 Mar 2026 13:05:22 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab3 page tables 实现</title><link>https://zqwiki.cn/blog/6-s081-lab3/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab3/</guid><description>页表是最流行的内存管理机制，操作系统通过页式管理可以为每个进程提供私有地址空间和内存，页表决定了内存地址的意义以及可访问的物理地址范围。 这样的机制使xv6能够隔离不同进程的地址空间和在简单物理内存中复用地址（虚拟地址相同物理地址不同）。 本次试验还会涉及到trampoline机制，这一部分我认为十分有趣。</description><pubDate>Sun, 08 Mar 2026 15:30:03 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab4 traps 实现</title><link>https://zqwiki.cn/blog/6-s081-lab4/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab4/</guid><description>操作系统的一个重要功能是中断，用户进程通过trap机制让操作系统进行必要的工作。本次实验将探索系统调用是如何使用trap来实现。</description><pubDate>Tue, 17 Mar 2026 09:00:00 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab5 Copy-on-Write Fork for xv6 实现</title><link>https://zqwiki.cn/blog/6-s081-lab5/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab5/</guid><description>在前几个lab中提到过COW（写时复制），比如fork一个进程后，子进程与父进程使用同样的指令和数据。如果每次都复制一份父进程的数据，在一些情况下子进程创建后调用exec，原本被复制的数据根本没有被使用过就被直接覆盖，在这种情况下就白白浪费了这次复制，并且复制也会有很大的开销，会拖慢系统执行的速度。 为了提高系统...</description><pubDate>Fri, 20 Mar 2026 12:00:00 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab6 Multithreading 实现</title><link>https://zqwiki.cn/blog/6-s081-lab6/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab6/</guid><description>一个操作系统运行的进程可能比这个计算机的CPU数量多，因此操作系统需要规划如何在进程间共享CPU。理想状态下要让这个过程对于用户进程来说是透明的，让每个进程有一种自己单独拥有一个CPU的错觉。</description><pubDate>Fri, 27 Mar 2026 12:00:00 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab7 locks 实现</title><link>https://zqwiki.cn/blog/6-s081-lab7/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab7/</guid><description>虽然锁能够解决多进程同步问题，但是多核计算机在高度锁竞争的情况下会出现这种并行性差的现象。在这个 Lab 中，将重新设计代码来提高并行性，涉及到修改数据结构和锁策略来减少争用。 此 Lab 包含两个任务，分别是修改内存分配和缓冲区缓存代码。</description><pubDate>Fri, 03 Apr 2026 10:23:01 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab8 file system 实现</title><link>https://zqwiki.cn/blog/6-s081-lab8/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab8/</guid><description>文件系统是操作系统中最复杂的组件之一，它需要管理磁盘块的分配、维护文件层级结构、处理并发访问，最重要的是：必须能够从系统崩溃中安全恢复。在这个 Lab 中，我们将深入 xv6 的文件系统内部，完成两个扩展任务：增加文件最大容量（支持大文件）以及实现软链接（Symbolic links）。 此 Lab 包含两个任务...</description><pubDate>Wed, 15 Apr 2026 10:00:00 GMT</pubDate><category>6.s081</category></item><item><title>6.s081 Lab9 mmap 实现</title><link>https://zqwiki.cn/blog/6-s081-lab9/</link><guid isPermaLink="true">https://zqwiki.cn/blog/6-s081-lab9/</guid><description>作为 xv6 的最后一个核心大实验，Lab 9 (mmap) 标着硬核的 &quot;Hard&quot; 难度。但从本质上讲，它其实是 Lab 3（缺页中断）和 Lab 8（文件系统）的融合。 mmap 和 munmap 系统调用允许 UNIX 程序对自己的地址空间进行极其细致的控制。通过将磁盘文件直接映射到内存中，程序可以像读写...</description><pubDate>Thu, 16 Apr 2026 10:23:01 GMT</pubDate><category>6.s081</category></item><item><title>C++ 类型转换：从 C 风格强转到四种 cast</title><link>https://zqwiki.cn/blog/cast/</link><guid isPermaLink="true">https://zqwiki.cn/blog/cast/</guid><description>在 C++ 中，类型转换是一个很常见但也很容易写出隐患的知识点。对于初学者来说，最熟悉的可能是 C 风格强转： 但是在 C++ 项目中，更推荐使用 C++ 提供的四种显式类型转换： 它们分别表达不同的转换意图，比 C 风格强转更清晰，也更容易在代码审查和调试时发现问题。 本文会从 C 风格强转的问题开始，依次介绍...</description><pubDate>Fri, 22 May 2026 12:39:00 GMT</pubDate><category>C/C++</category></item><item><title>答案是如何被找到的：猜想、验证与更正</title><link>https://zqwiki.cn/blog/conjecture-verification-practice/</link><guid isPermaLink="true">https://zqwiki.cn/blog/conjecture-verification-practice/</guid><description>生活中会遇到各种各样的问题，教会我正确解法（做法）的人很多，因为他们做过，那么遇到从未遇到过的问题该怎么解答？从算法解题、投机解码、NP 问题和实践论出发，思考候选答案是如何被提出、验证并不断更正的。</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>随笔</category></item><item><title>C++ 项目构建工具学习路线：从 Make 到 CMake</title><link>https://zqwiki.cn/blog/cpp-build-tools/</link><guid isPermaLink="true">https://zqwiki.cn/blog/cpp-build-tools/</guid><description>之前做过 15445 Bustub、6.s081 xv6 这类项目，其实已经接触过构建工具了。 比如在 xv6 里经常执行： 在 Bustub 里经常执行： 但如果只是照着项目文档跑命令，很容易形成一种感觉： 我会用这些命令，但不知道它们到底在帮我做什么。 这篇文章想系统学习一下现代 C++ 项目的构建工具，重点...</description><pubDate>Thu, 23 Jul 2026 08:00:00 GMT</pubDate><category>C/C++</category></item><item><title>分布式基础：初步学习路径</title><link>https://zqwiki.cn/blog/distributed-basis/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-basis/</guid><description>背景 刚开始实习时，组内方向是训练-推理一体存储，尤其是围绕 KV Cache 做存储、调度、迁移或复用，那么“分布式”不是一个单独的理论章节，而是会贯穿在每一次请求、每一份缓存、每一次节点故障和每一个性能指标里。 我目前的目标不是一下子掌握所有分布式系统，而是先建立一张够用的地图： 这篇博客先从这些问题出发，总...</description><pubDate>Mon, 06 Jul 2026 07:59:28 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：缓存策略、迁移与淘汰</title><link>https://zqwiki.cn/blog/distributed-foundation-cache-migration-eviction/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-cache-migration-eviction/</guid><description>背景 前面已经学习了几组基础： 这些内容更偏系统正确性：对象状态要清楚，远程调用要可靠，副本要一致，故障后要能恢复。 接下来进入更贴近 KV Cache 工作内容的一组：缓存策略、迁移与淘汰。 KV Cache 系统的核心矛盾是： 所以系统必须不断做决策： 这篇文章的目标是：理解 KV Cache / Block...</description><pubDate>Tue, 14 Jul 2026 08:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：故障处理</title><link>https://zqwiki.cn/blog/distributed-foundation-failure-handling/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-failure-handling/</guid><description>背景 前面已经学习了几组基础： 这些内容让我们能理解： 接下来要学习的是故障处理。 分布式系统和单机系统最大的区别之一是：故障是常态，不是例外。 在单机程序里，一个函数失败可能直接返回错误；但在分布式系统里，故障往往是不完整、不确定、局部发生的。例如： 这篇文章的目标是：理解分布式系统里会发生哪些故障，以及 KV...</description><pubDate>Tue, 14 Jul 2026 07:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：操作系统、网络、并发与存储</title><link>https://zqwiki.cn/blog/distributed-foundation-os-network-concurrency-storage/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-os-network-concurrency-storage/</guid><description>背景 学习分布式系统时，很容易一开始就看到 Raft、Paxos、CAP、一致性、分布式事务这些概念。但如果底层基础没有建立起来，这些概念会比较悬空。 对我现在的实习方向来说，组内工作内容和训练-推理一体存储、KV Cache 相关。这个场景里，分布式问题经常不是先表现为“算法问题”，而是先表现为： 这些问题背后...</description><pubDate>Mon, 06 Jul 2026 13:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：副本和一致性</title><link>https://zqwiki.cn/blog/distributed-foundation-replication-consistency/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-replication-consistency/</guid><description>背景 前面已经学习了几组基础： 这些内容解决了几个问题： 接下来要学习的是副本和一致性。 在分布式系统里，数据通常不会只放一份。只放一份会有明显问题： 所以系统会把数据复制到多个节点，这就是副本。 但副本一旦出现，就会带来另一个问题： 对 KV Cache 和 BlockGroup 来说，这个问题尤其重要。因为...</description><pubDate>Tue, 14 Jul 2026 02:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：RPC 和远程调用</title><link>https://zqwiki.cn/blog/distributed-foundation-rpc-remote-call/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-rpc-remote-call/</guid><description>背景 学习分布式系统时，一个非常重要的转变是：不能再把函数调用理解成本地调用。 在单机程序里，调用一个函数通常是： 但在分布式系统里，调用另一个模块经常意味着通过网络访问另一台机器上的服务。这时一次“函数调用”会变成： 因此，远程调用不是本地调用。它更慢，也更容易失败。 对训练-推理一体存储和 KV Cache...</description><pubDate>Tue, 07 Jul 2026 02:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：调度和负载均衡</title><link>https://zqwiki.cn/blog/distributed-foundation-scheduling-load-balancing/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-scheduling-load-balancing/</guid><description>背景 前面已经学习了几组基础： 这些内容已经覆盖了一个 KV Cache 系统的很多核心问题： 接下来要学习的是调度和负载均衡。 调度解决的问题是： 负载均衡解决的问题是： 在普通 Web 服务里，负载均衡可能只是把请求均匀打到多台机器。但在训练-推理一体存储和 KV Cache 场景里，调度要复杂得多。 因为请...</description><pubDate>Thu, 23 Jul 2026 02:30:00 GMT</pubDate><category>分布式</category></item><item><title>分布式基础：状态机、分片、路由与元数据</title><link>https://zqwiki.cn/blog/distributed-foundation-state-machine-sharding-metadata/</link><guid isPermaLink="true">https://zqwiki.cn/blog/distributed-foundation-state-machine-sharding-metadata/</guid><description>背景 前面学习了两组基础： 这两组解决的是底层问题：系统为什么会慢、远程调用为什么会失败、为什么接口要考虑 timeout、retry 和幂等。 接下来这一组更贴近 KV Cache 系统本身： 之所以把这两组放在一起，是因为它们在真实系统里经常不能分开看。 以 BlockGroup 为例，它不仅是一组 KV C...</description><pubDate>Tue, 07 Jul 2026 08:30:00 GMT</pubDate><category>分布式</category></item><item><title>HTTPS 加密过程解读</title><link>https://zqwiki.cn/blog/https/</link><guid isPermaLink="true">https://zqwiki.cn/blog/https/</guid><description>1. HTTPS 加密过程解读 这是之前面试中遇到的问题，当时没有完全回答上来，暴露出我对 HTTPS 的理解还很不足，这篇文章记录一下我重新学习 HTTPS 协议的过程，方便复习和更好地理解。 HTTP 在传输数据的过程中，所有的数据都是明文传输，比如客户端向服务端发送了密码等信息，中间者可以很轻易地劫持。HT...</description><pubDate>Fri, 24 Apr 2026 16:19:44 GMT</pubDate><category>Network</category></item><item><title>LLM 推理系统从请求到返回的完整链路</title><link>https://zqwiki.cn/blog/llm-inference-request-lifecycle/</link><guid isPermaLink="true">https://zqwiki.cn/blog/llm-inference-request-lifecycle/</guid><description>阶段 1 的 AI Infra 学习产出：从一条看似简单的推理请求出发，理解 tokenizer、scheduler、prefill、KV Cache、decode、streaming 与 Serving 指标，并用本地实践验证这套心智模型。</description><pubDate>Tue, 11 Aug 2026 09:30:00 GMT</pubDate><category>AI Infra</category></item><item><title>本地 LLM 推理服务实验</title><link>https://zqwiki.cn/blog/llm-inference-request-lifecycle-practice/</link><guid isPermaLink="true">https://zqwiki.cn/blog/llm-inference-request-lifecycle-practice/</guid><description>在 Apple M5 Pro 上运行 Qwen3-4B，拆分 Prefill 与 Decode 延迟，排查 Prompt Cache 污染和 vLLM Metal 安装故障，并留下可复现脚本、CSV、日志与验收结果。</description><pubDate>Tue, 11 Aug 2026 10:10:00 GMT</pubDate><category>AI Infra</category></item><item><title>C++ 完美转发</title><link>https://zqwiki.cn/blog/perfect-forwarding/</link><guid isPermaLink="true">https://zqwiki.cn/blog/perfect-forwarding/</guid><description>在理解了左值、右值和移动语义之后，继续学习一下完美转发，这些概念都看过很多次，但是每隔一段时间都会有一定遗忘，现在写下这篇文章记录一下这部分内容，方便下次复习。</description><pubDate>Wed, 13 May 2026 10:48:17 GMT</pubDate><category>C/C++</category></item><item><title>给 C++ 使用者的 Python 复健：为 LLM 推理实验补齐最小基础</title><link>https://zqwiki.cn/blog/python-for-llm-inference/</link><guid isPermaLink="true">https://zqwiki.cn/blog/python-for-llm-inference/</guid><description>面向当前 AI Infra 学习任务的 Python 最小知识集：从对象绑定、类型注解和工程结构，到 NumPy Shape、view/copy、broadcasting、Benchmark 与 asyncio。</description><pubDate>Mon, 17 Aug 2026 14:30:00 GMT</pubDate><category>AI Infra</category></item><item><title>C++ 线程库</title><link>https://zqwiki.cn/blog/thread/</link><guid isPermaLink="true">https://zqwiki.cn/blog/thread/</guid><description>C++ 线程库解决什么问题？ C++11 开始，标准库正式引入多线程支持，主要提供： 它解决的问题包括： C++ 线程库不是直接操作 Linux pthread，而是在标准层面提供了一套跨平台接口。</description><pubDate>Wed, 20 May 2026 07:54:46 GMT</pubDate><category>C/C++</category></item></channel></rss>