A09 — Memory Barriers and Cache Coherence: Out-of-Order Access on Multi-Core

dean
A09 — Memory Barriers and Cache Coherence: Out-of-Order Access on Multi-Core Key Insight: In a multi-core CPU, the memory order you observe is not necessarily the true order. Out-of-Order Memory Access on Multi-Core CPUs Modern CPUs reorder memory access instructions for performance optimization. In multi-core programs, this reordering can cause serious problems. 内存访问乱序的例子: 线程 A:... » read more

Writing an OS Kernel from Scratch | Clocksource Framework — How Linux Picks the Best Clock Source Among TSC, HPET, and LAPIC

dean
Writing an OS Kernel from Scratch | Clocksource Framework — How Linux Picks the Best Clock Source Among TSC, HPET, and LAPIC Have you ever encountered this strange phenomenon: On a multi-core machine, calling clock_gettime(CLOCK_MONOTONIC) twice in succession actually returns time that went backwards? Or in a virtual machine, the system time suddenly “jumps” and... » read more

B11 — Modern Computer Memory Layout: Complete Virtual to Physical Address Mapping

dean
B11 — Modern Computer Memory Layout: Complete Virtual to Physical Address Mapping Key Insight: Understanding memory layout is the key to understanding system design. Evolution from Physical to Virtual Addressing Early computers (before the 80286) had no MMU. They directly used physical addresses. Later, segmentation was introduced, then paging, making memory layouts increasingly complex. 内存布局的演进:... » read more

A02 — Internal Structure of the Heap: Arena, Bin, and Chunk

dean
A02 — Internal Structure of the Heap: Arena, Bin, and Chunk Key Insight: The heap managed by malloc is a precision system of bins and chunks. Structure of malloc_chunk malloc 把内存分成 chunk(块)来管理: struct malloc_chunk { INTERNAL_SIZE_T prev_size; // 前一个 chunk 的大小(如果前一个空闲) INTERNAL_SIZE_T size; // 本 chunk 大小 + 标志位 malloc_chunk *fd; // 同 bin 的下一个... » read more

Understanding Low-Level Principles – Memory Series | S06 | How DDR5 Doubles Memory Bandwidth Compared to DDR4

dean
Understanding Low-Level Principles – Memory Series | S06 | How DDR5 Doubles Memory Bandwidth Compared to DDR4 Key Insight: Every new generation of memory standard is essentially bargaining with the laws of physics — when bandwidth is insufficient, find a new way to “squeeze” more data through. 1. The Bandwidth Improvement Formula Memory bandwidth calculation... » read more

A06 — new/delete vs malloc/free: Differences in C++ Memory Management

dean
# A06 — new/delete 和 malloc/free: C++ memory management的Difference **金句**: new 不是 malloc, delete 不是 free — 它们不只是allocate, 还有构造和析构. — ## new 和 malloc 的Essential Difference “` new 和 malloc 的区别: malloc: – C 库函数 – 只分配内存,不初始化 – 返回 void* – 失败返回 NULL new: – C++ 关键字 – 分配内存 + 调用构造函数 – 返回具体类型的指针(不需要类型转换) – 失败抛出... » read more

K11 — The Full Path of Physical Page Allocation: alloc_pages and the Buddy System

dean
K11 — The Full Path of Physical Page Allocation: alloc_pages and the Buddy System Key Insight: Every call to alloc_pages embarks on a complete journey from request to physical page frame. The alloc_pages Function Signature alloc_pages is the core function for allocating physical pages in Linux: struct page *alloc_pages(gfp_t gfp_mask, unsigned int order); Parameters: -... » read more

[Writing an OS Kernel from Scratch] 335 – ARM Architecture Boot: From Power-On to Kernel

dean
title: [Writing an OS Kernel from Scratch] 335 – ARM Architecture Boot: From Power-On to Kernel category: os tag: [arm, boot, embedded, u-boot] source: https://github.com/golang12306/os-kernel-from-scratch [Writing an OS Kernel from Scratch] 335 – ARM Architecture Boot: From Power-On to Kernel 1. ARM Boot Sequence Overview Embedded device boot is a layered relay race. To understand... » read more

Writing an OS Kernel from Scratch | 347: Display — From Framebuffer to GPU

dean
Writing an OS Kernel from Scratch | 347: Display — From Framebuffer to GPU Abstract: The display is the most intuitive output device of a computer, but the timing, resolution, framebuffer, and GPU rendering pipeline behind it are rarely studied in depth. This article starts from CRT timing principles, explains the DRM/KMS architecture, modetest/xrandr commands,... » read more

B10 — Why fork is Fast: The Copy-On-Write Mechanism

dean
B10 — Why fork is Fast: The Copy-On-Write Mechanism Key Insight: Don’t copy, just share. Until it’s actually needed. The Traditional Problem with fork: Massive Memory Copying The fork system call creates a new process. The traditional implementation copies the entire memory space of the parent process: 传统 fork 的问题: 父进程内存:假设 1GB fork() 执行时: -... » read more

Writing an OS Kernel from Scratch – Part 4: Entering Protected Mode (Detailed Segmented Memory Management)

dean
# Writing an OS Kernel from Scratch – Part 4: Entering Protected Mode (Detailed Segmented Memory Management) “Protected mode ≠ Paging! Its first line of defense is the segmentation mechanism that modern OSes ‘quietly bypass.'” In the previous few articles, we used GRUB to easily boot the kernel, output “Hello World,” and understood the Multiboot... » read more

H08 — DDR5 On-Die ECC and Sideband ECC: On-Chip Error Correction vs System ECC

dean
H08 — DDR5 On-Die ECC and Sideband ECC: On-Chip Error Correction vs System ECC Key Insight: ECC is not just a technology. It is a commitment to data reliability. ECC Types Introduced in DDR5 DDR5 has three types of ECC, working at different levels: DDR5 ECC 的三层架构: Layer 1:On-Die ECC(片内 ECC) → DRAM 颗粒内部,每颗颗粒自己纠错 →... » read more

Writing an OS Kernel from Scratch – Part 5: Enabling Paging — Building the Foundation of Virtual Memory

dean
# Writing an OS Kernel from Scratch – Part 5: Enabling Paging — Building the Foundation of Virtual Memory “Segmentation is just a transition; paging is the true moat of modern operating systems. Today, we manually enable x86 paging, giving the kernel virtual memory!” In the previous article, we deeply understood protected mode and segmented... » read more