Unix Systems For Modern Architectures.pdf Site
rcu_read_lock(); obj = rcu_dereference(shared_ptr); // use obj – no blocking rcu_read_unlock(); Writers make a copy, update, then remap pointer – old memory freed after grace period. The book’s classic problem: On one CPU, you change a page table entry. All other CPUs might have that mapping cached in their TLB.
struct per_cpu_stats uint64_t rx_packets; char pad[56]; ____cacheline_aligned; Modern UNIX kernels (Linux, FreeBSD) use ____cacheline_aligned and __cacheline_aligned extensively for struct zone , struct per_cpu . The book discusses moving from a single giant lock to fine-grained locking. Unix Systems For Modern Architectures.pdf
SMT (hyperthread) → Core → L3 cache → Socket → NUMA node → System The book explains the old buddy allocator and the original slab allocator (Solaris). obj = rcu_dereference(shared_ptr)