| C로 들어온 뒤 커널을 준비하는 순서 | start_kernel | 134 |
| init·kthreadd와 부트 CPU의 역할을 나눕니다 | rest_init | 19 |
| 초기화용 메모리를 돌려주기 전의 준비 | kernel_init_freeable | 27 |
| init 프로그램의 인자와 환경을 넘깁니다 | run_init_process | 11 |
| 새 태스크의 주소 공간을 공유하거나 복제합니다 | copy_mm | 24 |
| 태스크 객체를 만들기 위한 저장소와 한도를 준비합니다 | fork_init | 31 |
| 종료 태스크에서 주소 공간 연결을 해제합니다 | exit_mm | 22 |
| 시그널을 받는 쪽에서 보이는 신원을 맞춥니다 | send_signal_locked | 20 |
| 미뤄 둔 작업이 있는지 확인한 뒤 처리합니다 | do_softirq | 10 |
| 빠르게 얻지 못한 잠금은 대기 경로로 넘깁니다 | mutex_lock | 4 |
| 잠금 검사기의 한도와 메모리 사용량을 확인합니다 | lockdep_init | 32 |
| 독자가 빠져나왔는지 추적할 기반을 만듭니다 | rcu_init | 30 |
| IRQ를 기록할 소프트웨어 객체부터 만듭니다 | early_irq_init | 17 |
| ARM64의 IRQ 스택과 컨트롤러를 연결합니다 | init_IRQ | 7 |
| 부트 정보를 ARM64 커널의 주소와 장치 구조로 바꿉니다 | setup_arch | 45 |
| 시스템 호출 번호를 검증한 뒤 함수로 연결합니다 | invoke_syscall | 13 |
| 사용자 포인터를 공통 exec 경로로 넘깁니다 | do_execve | 6 |
| 파일 이름과 열린 파일을 관리할 저장소를 준비합니다 | vfs_caches_init | 10 |
| 참조 하나를 내려놓고 마지막 사용자인지 확인합니다 | __refcount_dec_and_test | 2 |
| 짧은 임계 구역의 진입을 직렬화합니다 | spin_lock | 2 |
| memblock: 사용할 RAM과 남겨 둘 RAM을 구분하기 | __memblock_reserve | 6 |
| paging_init: RAM에 접근할 가상 주소 마련하기 | paging_init | 5 |
| mm_core_init: 부팅용 메모리 관리에서 일반 할당기로 넘어가기 | mm_core_init | 30 |
| buddy allocator: 큰 빈 블록을 반씩 나누기 | expand | 14 |
| SLUB: 빈 객체 안에 다음 빈 객체를 연결하기 | get_freepointer | 7 |
| vmalloc과 vmap: 떨어진 페이지를 연속 주소로 보기 | vmap | 25 |
| page fault: 주소 변환 실패가 항상 프로그램 오류는 아닙니다 | do_translation_fault | 8 |
| reclaim: 버릴 수 있는 페이지와 먼저 써야 할 페이지 구분하기 | folio_check_dirty_writeback | 15 |
| compaction: 연속 빈 공간을 만들되 실패를 무한 반복하지 않기 | compaction_deferred | 9 |
| sched_init과 idle 준비: 실행할 일이 없을 때도 CPU 상태는 필요합니다 | init_idle | 28 |
| 공정 스케줄링: 실행한 시간으로 다음 가상 마감 시각 갱신하기 | update_deadline | 8 |
| RT scheduler: 우선순위별 대기열에서 다음 대상을 고르기 | pick_next_rt_entity | 12 |
| load balancing: 바쁜 CPU에서 옮길 수 있는 작업 찾기 | detach_one_task | 11 |
| scheduler tick: 주기적으로 실행 시간을 계상하고 재선택을 요청하기 | sched_tick | 34 |
| NOHZ: 쉬는 CPU에서 불필요한 주기 tick 줄이기 | tick_nohz_idle_enter | 9 |
| hrtimer: 늦게 처리된 주기 타이머의 다음 기한 계산하기 | hrtimer_forward | 19 |
| timekeeping: 갱신 중인 시계를 일관되게 읽기 | ktime_get | 12 |
| GIC: 하드웨어 인터럽트 번호를 커널 처리기로 넘기기 | __gic_handle_irq | 7 |
| bio: 저장장치 작업의 완료를 누가 받는가 | bio_endio | 21 |
| 요청 큐: 대기 중인 작업이 장치에서 진행 중인 작업이 될 때 | blk_mq_start_request | 17 |
| I/O 스케줄러: 다음 요청을 어떤 기준으로 고르는가 | dd_dispatch_request | 21 |
| 파티션 검색: 디스크 구간을 장치로 등록하기까지 | blk_add_partitions | 34 |
| eMMC와 UFS: 블록 요청을 장치 명령으로 바꾸는 경계 | ufshcd_queuecommand | 46 |
| ext4: 읽기 요청이 캐시·직접 I/O·DAX로 나뉘는 이유 | ext4_file_read_iter | 13 |
| F2FS: 읽기 방식 선택에도 쓰기 상태를 확인하는 이유 | f2fs_file_read_iter | 24 |
| open·read·write: 파일 번호 다음에 커널이 확인하는 것 | vfs_read | 24 |
| 경로 탐색: 이름을 찾는 동안 다른 프로세스가 이름을 바꾸면 | lookup_fast | 30 |
| 페이지 캐시: 메모리 한 묶음이 파일의 일부가 되려면 | filemap_add_folio | 28 |
| 네트워크 네임스페이스: 새 네트워크 환경의 상태를 나누는 방법 | ops_init | 24 |
| net_device: 등록한 인터페이스를 실제로 켜는 절차 | __dev_open | 30 |
| 수신 경로: 패킷을 IPv4·IPv6 처리 함수에 넘기는 순간 | __netif_receive_skb_one_core | 9 |
| 송신 경로: 드라이버가 패킷을 받지 못했을 때 목록을 지키는 방법 | dev_hard_start_xmit | 18 |
| 소켓 생성: 정수 핸들보다 먼저 필요한 프로토콜 객체 | __sock_create | 58 |
| Device Tree: compatible 목록에서 드라이버가 고르는 정보 | __of_match_node | 14 |
| 드라이버 초기화: 코드를 등록하는 것과 장치를 찾는 것 | driver_register | 27 |
| 플랫폼 드라이버: 장치와 구현이 만나는 매칭 순서 | platform_match | 14 |
| 클록·리셋·레귤레이터: 일부만 켜졌을 때 되돌리는 이유 | regulator_bulk_enable | 22 |
| Runtime PM: 장치를 쓰는 동안 잠들지 않게 하는 방법 | __pm_runtime_resume | 11 |
| Address-space switch: TTBR, CR3/PCID와 SATP/ASID | cpu_do_switch_mm | 15 |
| Atomic RMW와 spinlock: LSE/LL-SC, LOCK과 AMO | ATOMIC_FETCH_OP / ATOMIC_FETCH_OPS | 8 |
| Boot firmware handoff: DTB, ACPI, EFI와 setup_arch | setup_machine_fdt | 20 |
| Cache coherency와 memory barrier: DMB/DSB, x86 ordering, FENCE | 일반 메모리 및 DMA barrier 정의 | 6 |
| Context switch: callee-saved register와 task state | cpu_switch_to | 28 |
| DMA, cache coherency와 IOMMU translation | arch_sync_dma_for_cpu | 6 |
| Exception entry: vector table, IDT와 trap entry | el0_svc | 8 |
| FPU, SIMD, SVE/SME, XSAVE와 RISC-V Vector state | switch_fpu | 9 |
| IPI와 SMP call: SGI, APIC ICR와 SBI/IMSIC | send_ipi_mask / send_ipi_single | 4 |
| IRQ controller: GICv3, local APIC/IOAPIC와 RISC-V INTC | gic_eoi_irq | 6 |
| KVM virtualization: EL2, VMX/SVM과 RISC-V H-extension | kvm_arch_vcpu_runnable | 7 |
| Kernel module relocation과 instruction range | do_reloc | 12 |
| Page-table format: PTE bit, level과 huge mapping | pte_wrprotect / pte_mkwrite_novma / pte_mkdirty | 6 |
| PCIe MSI/MSI-X와 interrupt remapping | irq_msi_update_msg | 4 |
| CPU idle, suspend와 resume context | suspend_save_csrs | 13 |
| ptrace와 hardware debug register | riscv_gpr_get / riscv_gpr_set | 12 |
| Signal frame과 user context 복원 | init_user_layout | 8 |
| System call entry: SVC, SYSCALL과 ECALL | invoke_syscall | 13 |
| Timer와 clocksource: architected timer, TSC와 RISC-V time | riscv_clock_next_event | 14 |
| TLB shootdown: TLBI, INVLPG/INVPCID와 SFENCE.VMA | flush_tlb_all | 5 |
| Stack unwind, function tracing과 return address 보호 | kunwind_next_frame_record | 21 |
| ARMv9 아키텍처 진화와 실행 모델 | cpu_set_feature / cpu_have_feature / cpu_get_elf_hwcap | 7 |
| ARMv9 CPU 문서·Toolchain·Linux 실전 | cpu_set_feature / cpu_have_feature / cpu_get_elf_hwcap | 7 |
| ARM64 Exception과 system call 소스 분석 | el0_svc | 8 |
| ARM GICv3·vGIC·ITS interrupt 소스 분석 | gic_eoi_irq | 6 |
| ARM64 KVM vCPU와 Stage-2 fault 소스 분석 | kvm_phys_addr_ioremap | 28 |
| ARM64 MMU·page table·TLB 소스 분석 | flush_tlb_all | 5 |
| ARM MTE와 Linux fault 처리 소스 분석 | mte_update_sctlr_user | 16 |
| ARMv9 Realm과 CCA 구조 | realm_ioremap_hook | 6 |
| ARM Realm·CCA와 Linux RSI 소스 분석 | arm64_rsi_init | 14 |
| ARM SMMUv3·IOMMU·DMA 소스 분석 | arm_smmu_iotlb_sync | 8 |
| ARM SVE·SME Linux 상태 관리 소스 분석 | fpsimd_flush_task_state | 7 |
| ARMv9 Vector·AI와 메모리·제어 흐름 보안 | ptrauth_keys_init_user | 9 |
| ARMv9 가상화·플랫폼·성능 관측 | cpu_psci_cpu_boot | 6 |
| x86-64 커널의 32비트 진입과 long mode·가상 주소 전환 | reset_early_page_tables | 4 |
| x86-64 IDT·syscall 진입과 secondary CPU 기동 | entry_SYSCALL_64의 프레임 구성 구간 | 23 |
| RISC-V 64 head.S의 hart·DTB 수신과 SATP 전환 | relocate_enable_mmu | 30 |
| RISC-V trap frame과 SBI secondary hart 기동 | sbi_cpu_start | 11 |