캐시
동기화
- Atomic Operation
- BKL(Big Kernel Lock)
- Exclusive loads and store
- Lockdep
- Lock Problem(Dead-Lock)
- Priority Inversion & Priority Inheritance
- Mutex for linux kernel space
- RCU(Read Copy Update) -1- (Basic)
- RCU(Read Copy Update) -2- (Callback process)
- RCU(Read Copy Update) -3- (RCU threads)
- RCU(Read Copy Update) -4- (NOCB process)
- RCU(Read Copy Update) -5- (Callback list)
- RCU(Read Copy Update) -6- (Expedited GP)
- RCU(Read Copy Update) -7- (Preemptible RCU)
- READ_ONCE() 및 WRITE_ONCE()와 lockless 리스트
- Spinlock
메모리 관리
- Bootmem with Bitmap
- Compound 페이지
- CMA(Contiguous Memory Allocator)
- CMA(Contiguous Memory Allocator) for DMA
- Early ioremap
- Fixmap
- GFP 플래그
- IDR(integer ID 관리)
- Ioremap
- Kmalloc
- Kmalloc vs Vmalloc
- Kmap(Pkmap)
- Memblock – (1)
- Memblock – (2)
- Memory Model -1- (Basic)
- Memory Model -2- (mem_map)
- Memory Model -3- (Sparse Memory)
- Memory Model -4- (APIs)
- NUMA -1- (ARM64 초기화)
- NUMA -2- (Fallback Node)
- NUMA -3- (Memory policy)
- Per-cpu -1- (Basic)
- Per-cpu -2- (초기화)
- Per-cpu -3- (동적 할당)
- Per-cpu -4- (atomic operations)
- Radix Tree
- Rmap -1- (Reverse Mapping)
- Rmap -2- (TTU & Rmap Walk)
- Rmap -3- (PVMW)
- Slub Memory Allocator -1- (구조)
- Slub Memory Allocator -2- (캐시 초기화)
- Slub Memory Allocator -3- (캐시 생성)
- Slub Memory Allocator -4- (Order 계산)
- Slub Memory Allocator -5- (Slub 할당)
- Slub Memory Allocator -6- (Object 할당)
- Slub Memory Allocator -7- (Object 해제)
- Slub Memory Allocator -8- (Drain/Flash 캐시)
- Slub Memory Allocator -9- (캐시 Shrink)
- Slub Memory Allocator -10- (Slub 해제)
- Slub Memory Allocator -11- (캐시 삭제)
- Slub Memory Allocator -12- (Slub 디버깅)
- Slub Memory Allocator -13- (slabinfo)
- Swap -1- (Basic, 초기화)
- Swap -2- (Swapin & Swapout)
- Swap -3- (Swap 영역 할당/해제)
- Swap -4- (Swap 엔트리)
- User virtual maps (brk)
- User virtual maps (mmap)
- Vmalloc
- Vmap
- VMPressure
- Zone 타입
- Zoned Allocator -1- (물리 페이지 할당-Fastpath)
- Zoned Allocator -2- (물리 페이지 할당-Slowpath)
- Zoned Allocator -3- (Buddy 페이지 할당)
- Zoned Allocator -4- (Buddy 페이지 해지)
- Zoned Allocator -5- (Per-cpu Page Frame Cache)
- Zoned Allocator -6- (Watermark)
- Zoned Allocator -7- (Direct Compact)
- Zoned Allocator -8- (Direct Compact-Isolation)
- Zoned Allocator -9 (Direct Compact-Migration)
- Zoned Allocator -10- (LRU & pagevecs)
- Zoned Allocator -11- (Direct Reclaim)
- Zoned Allocator -12- (Direct Reclaim-Shrink-1)
- Zoned Allocator -13- (Direct Reclaim-Shrink-2)
- Zoned Allocator -14- (Kswapd & Kcompactd)
ARM & 페이지 테이블 매핑
- 32비트 ARM에서의 user space vs kernel space
- ARM32 페이지 테이블 -1- (Basic)
- ARM32 페이지 테이블 -2- (매핑)
- ARM32 페이지 테이블 -3- (API)
- ARM32 페이지 테이블 -4- (엔트리 속성)
- ARM64 페이지 테이블 -1- (Basic)
- ARM64 페이지 테이블 -2- (매핑)
- ARM64 페이지 테이블 -3- (API)
- Exception -1- (ARM32 Vector)
- Exception -2- (ARM32 Handler 1)
- Exception -3- (ARM32 Handler 2)
- Exception -4- (ARM32 VFP & FPE)
- Exception -5- (Extable)
- Exception -6- (MM Fault Handler)
- Exception -7- (ARM64 Vector)
- Exception -8- (ARM64 Handler)
- ARM 시스템 주요 레지스터
- ARM64 시스템 주요 레지스터
- Memory Access Order Type & Shareable Region
- ARMv8 & ARMv9 아키텍처 extension
클럭, 타이머, 인터럽트
- Common Clock Framework -1- (초기화)
- Common Clock Framework -2- (APIs)
- Interrupts -1- (Interrupt Controller)
- Interrupts -2- (irq chip)
- Interrupts -3- (irq domain)
- Interrupts -4- (Top-Half & Bottom-Half)
- Interrupts -5- (Softirq)
- Interrupts -6- (IPI Cross-call)
- Interrupts -7- (Workqueue 1)
- Interrupts -8- (Workqueue 2)
- Interrupts -9- (GIC v3 Driver)
- Interrupts -10- (irq partition)
- Interrupts -11- (RPI2 IC Driver)
- Interrupts -12- (irq desc)
- Timer -1- (Lowres Timer)
- Timer -2- (HRTimer)
- Timer -3- (Clock Sources Subsystem)
- Timer -4- (Clock Sources Watchdog)
- Timer -5- (Clock Events Subsystem)
- Timer -6- (Clock Source & Timer Driver)
- Timer -7- (Sched Clock & Delay Timers)
- Timer -8- (Timecounter)
- Timer -9- (Tick Device)
- Timer -10- (Timekeeping)
- Timer -11- (Posix Clock & Timers)
스케줄러
- Scheduler -1- (Basic)
- Scheduler -2- (Global Cpu Load)
- Scheduler -3- (PELT-1)
- Scheduler -3a- (PELT-2)
- Scheduler -4- (Group Scheduling)
- Scheduler -5- (Scheduler Core)
- Scheduler -6- (CFS Scheduler)
- Scheduler -7- (Preemption & Context Switch)
- Scheduler -8- (CFS Bandwidth)
- Scheduler -9- (RT Scheduler)
- Scheduler -10- (Deadline Scheduler)
- Scheduler -11- (Stop Scheduler)
- Scheduler -12- (Idle Scheduler)
- Scheduler -13- (Scheduling Domain 1)
- Scheduler -14- (Scheduling Domain 2)
- Scheduler -15- (Load Balance 1)
- Scheduler -16- (Load Balance 2)
- Scheduler -17- (Load Balance 3 NUMA)
- Scheduler -18- (Load Balance 4 EAS)
- Scheduler -19- (초기화)
- PID 관리
- do_fork()
- cpu_startup_entry() – cpuidle | 문c
- 런큐 로드 평균(cpu_load[]) – v4.0
- PELT(Per-Entity Load Tracking) – v4.0
디바이스 트리 및 드라이버
- Console & TTY Driver
- Device & Driver -1- (Basic)
- Device & Driver -2- (Bus & Class)
- Device & Driver -3- (Platform Device)
- Device Resource Management
- devtmpfs & kdevtmpfs 스레드
- DMA -1- (Basic)
- DMA -2- (DMA Coherent Memory)
- DMA -3- (DMA Pool)
- DMA -4- (DMA Mapping)
- DMA -5- (IOMMU)
- DMA -6- (DMAEngine Subsystem)
- DTB – 구조
- DTB – 라즈베리파이 2
- DTB – 라즈베리파이 4
- DTB (fdt API)
- DTB (of API)
- Earlycon & Earlyprintk
- I2C Subsystem -1- (Basic)
- I2C Subsystem -2- (Core)
- I2C Subsystem -3- (Transfer)
- I2C Subsystem -4- (I2C-Mux)
- IOMMU
- GPIO Subsystem -1-
- GPIO Subsystem -2-
- GPIO Subsystem -3- (Device Tree)
- GPIO Subsystem -4- (new Interface)
- MTD(Memory Technology Device) -1-
- MTD(Memory Technology Device) -2-
- MTD(Memory Technology Device) -3-
- PCI Subsystem -1- (Basic)
- PCI Subsystem -2- (Core)
- PCI Subsystem -3- (Host Controller)
- Pin Control Subsystem -1-
- Pin Control Subsystem -2-
- Proc interface & seq_file
- SPI Subsystem -1- (Basic)
- SPI Subsystem -2- (Driver)
- Sysfs (kobject & kset)
디버그
- FTrace
- Kernel Debugging
- Kernel Tracing
- Kprobe
- Profiling
- Sparse 정적 분석 도구
- TRACE_EVENT
- 디버그 메모리 -1- (Page Alloc)
- 디버그 메모리 -2- (Page Poisoning)
- 디버그 메모리 -3- (Page Owner 추적)
- 디버그 메모리 -4- (Idle Page 추적)
커널 관리 확장
- Control Groups
- Docker vs LXC vs Hypervisor
- Control Group for Memory
- LSM(Linux Security Module) -1-
- LIM(Linux Integrity Module) -1-
- Namespace
기타
- Addressing Mode (AArch64)
- Bit Operations
- Bitmap Operations
- CPU Capabilities – ARM64
- CPU 비트맵 (API)
- ELF Relocations (AArch64)
- Freeze (hibernation/suspend)
- Inline Assembly
- Kernel-provided User Helpers
- Likely & Unlikely
- NODE 비트맵 (API)
- QEMU 에뮬레이션(arm64)
- Static Keys -1- (Core API)
- Static Keys -2- (초기화)
- User stack vs Kernel stack
- VMSA Fault Checking
- Volatile
- 커널 코드 영역 확인(func_ptr_is_kernel_text())
- 함수 선언부 관련 매크로 (__attribute__)
- 가상화 지원 (하이퍼 모드)
- 어셈블리(head.S) – gdb 디버깅 방법