

<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://www.symh.org/</id>
  <title>Symbol Who</title>
  <subtitle>Symbol Who</subtitle>
  <updated>2026-02-05T13:44:07+08:00</updated>
  <author>
    <name>Symbol Who</name>
    <uri>https://www.symh.org/</uri>
  </author>
  <link rel="self" type="application/atom+xml" href="https://www.symh.org/feed.xml"/>
  <link rel="alternate" type="text/html" hreflang="zh-CN"
    href="https://www.symh.org/"/>
  <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator>
  <rights> © 2026 Symbol Who </rights>
  <icon>/assets/img/favicons/favicon.ico</icon>
  <logo>/assets/img/favicons/favicon-96x96.png</logo>


  
  <entry>
    <title>【译】黑客CEO的金融世界观 Calling All Hackers</title>
    <link href="https://www.symh.org/posts/translate-hacker/" rel="alternate" type="text/html" title="【译】黑客CEO的金融世界观 Calling All Hackers" />
    <published>2026-01-07T14:34:00+08:00</published>
  
    <updated>2026-01-07T14:34:00+08:00</updated>
  
    <id>https://www.symh.org/posts/translate-hacker/</id>
    <content type="text/html" src="https://www.symh.org/posts/translate-hacker/" />
    <author>
      <name>cts</name>
    </author>

  
    
    <category term="想法" />
    
  

  <summary>原文：Calling All Hackers    原作者： cts   前言  嗨，  我是 cts，也被称为 gf_256、ephemeral 或其他一些代号。 我曾是一名黑客，而现在是一家小公司的老板兼 CEO 。在这篇文章中，我想分享我在走这两条截然不同的道路时的经验。  黑客，是洞悉世界运行规律的人。 这种洞察力体现在当你输入 google.com 并按下回车时，你清楚背后发生了什么；体现在你了解电脑是如何启动的，了解内存训练（Memory Training）、A20 总线等等一切细节。它关乎现代处理器、缓存及其侧信道（side channels）；关乎 DSi 引导加载程序，以及如何利用精准的电磁故障注入（fault injection）来对其进行越狱。它还关乎 Spotify、Widevine、AES 和 SGX 的运作原理，从而让你能将音乐从数字版权管理（DRM）的枷...</summary>

  </entry>

  
  <entry>
    <title>linux内核笔记【译】RCU（二）使用</title>
    <link href="https://www.symh.org/posts/translate-kernel-rcu2/" rel="alternate" type="text/html" title="linux内核笔记【译】RCU（二）使用" />
    <published>2025-12-20T14:34:00+08:00</published>
  
    <updated>2025-12-20T14:34:00+08:00</updated>
  
    <id>https://www.symh.org/posts/translate-kernel-rcu2/</id>
    <content type="text/html" src="https://www.symh.org/posts/translate-kernel-rcu2/" />
    <author>
      <name>Symbol Who</name>
    </author>

  
    
    <category term="Linux" />
    
  

  <summary>原文：What is RCU? Part 2: Usage   引言  Read-Copy Update（RCU）是一种同步机制，2002年10月添加到Linux内核中。RCU 最常被描述为读写锁的替代品，但它也被以多种其他方式使用。RCU 的显著特点是 RCU reader 不直接与 RCU updater 同步，这使得 RCU 读路径非常快，并且允许 RCU reader 在与 RCU updater 并发运行时仍能完成有用的工作。  这引出了一个问题：“RCU 究竟是什么？” 本文从使用的角度回答了这个问题。由于 RCU 最常用于替换某些现有机制，我们主要从它与这些机制的关系角度来看待它，具体如下：     RCU 是读写锁的替代品   RCU 是一种受限的引用计数机制   RCU 是一种批量引用计数机制   RCU 是一种简易的垃圾回收器   RCU 是一种提供存在性保证的方...</summary>

  </entry>

  
  <entry>
    <title>linux内核笔记【译】RCU（一）从根本上讲,什么是RCU</title>
    <link href="https://www.symh.org/posts/translate-kernel-rcu1/" rel="alternate" type="text/html" title="linux内核笔记【译】RCU（一）从根本上讲,什么是RCU" />
    <published>2025-12-19T14:34:00+08:00</published>
  
    <updated>2025-12-19T14:34:00+08:00</updated>
  
    <id>https://www.symh.org/posts/translate-kernel-rcu1/</id>
    <content type="text/html" src="https://www.symh.org/posts/translate-kernel-rcu1/" />
    <author>
      <name>Symbol Who</name>
    </author>

  
    
    <category term="Linux" />
    
  

  <summary>原文：What is RCU, Fundamentally?   引言  Read-Copy Update（RCU）是一种同步机制，2002年10月添加到 Linu 内核中。RCU 通过允许读取与更新同时发生来实现可扩展性的提高。相比于传统的锁函数(传统锁函数使并发线程之间互斥，无论它们是 reader 还是 updater ),或读写锁(允许并发读但不能更新)，RCU 支持单个 updater 和多个 reader 之间的并发。 RCU 通过维护多个版本的对象并确保在所有 reader 端的读取临界区完成之前都不会释放对应版本的对象来确保读取是连贯的。 RCU 定义并使用高效且可扩展的机制来发布和读取对象的新版本，并用于推迟旧版本的内存回收。这些机制在 read 和 update 的方式之间工作使 read 的性能非常高。在某些情况下（不可抢占内核），RCU 的读取函数的开销为零。...</summary>

  </entry>

  
  <entry>
    <title>linux内核笔记 自旋锁（spinlock）</title>
    <link href="https://www.symh.org/posts/kernel-spinlock/" rel="alternate" type="text/html" title="linux内核笔记 自旋锁（spinlock）" />
    <published>2025-12-14T12:11:03+08:00</published>
  
    <updated>2025-12-14T12:11:03+08:00</updated>
  
    <id>https://www.symh.org/posts/kernel-spinlock/</id>
    <content type="text/html" src="https://www.symh.org/posts/kernel-spinlock/" />
    <author>
      <name>Symbol Who</name>
    </author>

  
    
    <category term="Linux" />
    
    <category term="lock" />
    
  

  <summary>自旋锁 spin_lock  spin_lock 是一种 忙等（busy waiting）锁。 当一个 CPU 想要进入临界区，但锁已被其他 CPU 持有时，它不会睡眠，而是反复循环检查锁状态，直到锁被释放。 它适合：临界区很短、不可睡眠 的场景（比如中断上下文）。  锁的结构  typedef struct spinlock {     union {         struct raw_spinlock rlock; #ifdef CONFIG_DEBUG_LOCK_ALLOC # define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map))         struct {             u8 __padding[LOCK_PADSIZE];             struct lockdep_map d...</summary>

  </entry>

  
  <entry>
    <title>linux内核笔记（八）vmalloc、持久映射、固定映射</title>
    <link href="https://www.symh.org/posts/kernel-8-high-mem-alloc/" rel="alternate" type="text/html" title="linux内核笔记（八）vmalloc、持久映射、固定映射" />
    <published>2024-08-03T19:33:03+08:00</published>
  
    <updated>2024-08-03T19:33:03+08:00</updated>
  
    <id>https://www.symh.org/posts/kernel-8-high-mem-alloc/</id>
    <content type="text/html" src="https://www.symh.org/posts/kernel-8-high-mem-alloc/" />
    <author>
      <name>Symbol Who</name>
    </author>

  
    
    <category term="Linux" />
    
    <category term="mm" />
    
  

  <summary>vmalloc、持久映射、固定映射  回顾一下第五、六章的内容：在32位的内核虚拟地址空间中， 只有$1G$的可用空间 (总共$2^{32} = 4G$ - 用户空间$3G$)，如果物理内存超出$1G$, 那么kernel将无法寻址超出的那部分物理内存 (即高端内存 HIGH_MEMORY)， 为了解决这个问题，kernel将内核空间分了两部分：可直接线性映射物理内存的$896MiB$普通内存区域和剩余的高端内存区域。    为了适配不同的内存需求，内核又将高端内存区域划分了三种不同的用途，分别是vmalloc、持久映射、固定映射。    vmalloc 不连续的物理内存映射  虚拟内存地址空间与物理内存的连续线性映射性能是最好的，但由于各种原因（32位中的高端内存、物理内存中的空洞、bios等默认占用的内存空间），这种线性映射并不能总是顺利使用。如果在进程要求分配连续的地址空间时，...</summary>

  </entry>

</feed>


