코드의 동작을 말로 설명하는 자료입니다
기존 코드 분석을 바탕으로, 수업에서 한 줄씩 짚으며 설명할 수 있도록 별도 원고를 만들었습니다. 각 파일에서 해결하려는 문제를 먼저 살펴보고, 명령의 동작을 풀어 읽은 뒤 질문으로 확인합니다. 기준 소스는 모두 Linux v6.18.37입니다.
범위는 arch/arm64/kernel/*.S 바로 아래의 18개 파일입니다. 하위 디렉터리는 포함하지 않습니다. 주석·빈 줄을 포함한 원문은 그대로 제공하며, 명령·지시문·라벨이 있는 2316개 줄에 설명을 붙였습니다.
처음 읽는다면: 스택·분기·매크로 예제부터 보기 · 기존 코드 분석 보기
수업에서 읽는 순서
- 기초: 개념 설명 → smccc-call.S의 인자 이동 → cpu-reset.S의 분기와 주소
- 운영체제 핵심: head.S의 부팅 → entry.S의 예외와 문맥 전환 → sleep.S의 재개
- 심화: 벡터 상태·추적·펌웨어·커널 교체를 읽은 뒤 이미지 배치와 재배치를 연결합니다.
한 번에 파일 전체를 강의하기보다 한 함수나 매크로씩 읽고, 레지스터와 메모리의 변화 및 분기 목적지를 학생이 직접 설명하도록 진행할 수 있습니다.
코드 한 줄의 전후 상태
18개 파일의 각 설명 줄에 레지스터·메모리 그림을 덧붙였습니다. 각 파일에서 ‘행 그림’을 펼쳐 보실 수 있습니다. 링크 스크립트는 빌드할 때의 배치 규칙으로 구분합니다.
cpu-reset.S · 두 경로를 한 단계씩 따라가기 · entry.S · 예외 진입과 복귀 · sleep.S · 문맥 저장과 복원
파일별 설명
| 파일 | 설명 주제 | 원문 / 설명 줄 |
|---|---|---|
| head.S 그림 · GIF | 부팅 준비와 C 초기화 진입 | 523 / 321 |
| entry.S 그림 · GIF | 예외 진입·복귀와 태스크·스택 전환 | 1100 / 730 |
| cpu-reset.S 그림 · GIF | MMU를 끄고 새 진입점으로 이동하기 | 53 / 22 |
| efi-header.S 단계별 그림 | Image 안의 EFI PE/COFF 헤더 | 181 / 133 |
| efi-rt-wrapper.S 그림 · GIF | EFI 호출용 스택 전환과 예외 복구 | 87 / 48 |
| entry-fpsimd.S 그림 · GIF | FP/SIMD·SVE·SME 레지스터 저장과 복원 | 134 / 63 |
| entry-ftrace.S 그림 · GIF | 함수 진입과 반환을 추적하는 어셈블리 | 357 / 161 |
| hibernate-asm.S 그림 · GIF | 최대 절전 이미지의 메모리 복원 | 95 / 41 |
| hyp-stub.S 그림 · GIF | 초기 EL2 벡터와 VHE 전환 | 258 / 160 |
| kuser32.S 그림 · GIF | 고정 주소에 놓이는 AArch32 보조 코드 | 65 / 44 |
| reloc_test_syms.S 단계별 그림 | 절대·상대 재배치 검사용 코드 | 85 / 69 |
| relocate_kernel.S 그림 · GIF | kexec 페이지 목록을 복사하고 새 커널 시작하기 | 100 / 63 |
| sigreturn32.S 그림 · GIF | 32비트 시그널 복귀 트램펄린의 명령 바이트 | 47 / 14 |
| sleep.S 그림 · GIF | CPU 상태 저장과 절전 복귀 | 155 / 88 |
| smccc-call.S 그림 · GIF | SMC/HVC 인자 전달과 반환값 저장 | 102 / 59 |
| vdso-wrap.S 단계별 그림 | 64비트 vDSO 바이너리 포함 | 24 / 14 |
| vdso32-wrap.S 단계별 그림 | 32비트 vDSO 바이너리 포함 | 19 / 12 |
| vmlinux.lds.S 단계별 그림 | 커널의 코드·데이터·초기 테이블 배치 | 411 / 274 |
자료 구성
기존 그림에 단계별 개념 그림 18개와 GIF 13개를 추가했습니다. GIF는 재생 버튼을 누르면 움직이며, 단계 버튼으로 한 장면씩 고정할 수 있습니다. 정지 장면 54개도 별도 이미지로 제공합니다. 예외 상태 저장·복원이나 구조체와 레지스터 사이의 값 이동부터 보실 수 있습니다.
각 문서에는 개념 설명, 원본 줄 번호와 코드, 해당 줄의 풀이, 그림, 질문 3개와 답, 전체 원문이 있습니다. 그림의 화살표 의미는 그림 안과 캡션에서 확인하실 수 있습니다. 설명 원고는 각 페이지의 Markdown 링크로도 제공됩니다.
기존 코드 분석 문서는 수정하지 않았습니다. 매크로의 전체 정의와 관련 C 함수까지 확인할 때는 연결된 기존 분석을 함께 사용하시면 됩니다.