|
제1부 실행 환경과 첫 커널
제1장 책의 목표와 재현 가능한 개발 환경 제2장 RISC-V 부팅 순서와 커널 이미지 제3장 커널 브링업과 초기 실행 상태 제4장 UART 콘솔과 관찰 가능한 커널 제5장 초기 메모리 관리와 디바이스 트리 제6장 U-Boot, 저장장치, 부트 이미지 제7장 테스트와 디버깅으로 동작 확인하기 제2부 사용자 모드와 트랩 기반 제8장 사용자 모드 전환을 위한 권한과 CSR 제9장 트랩 디스패치와 시스템콜 ABI 제10장 Sv39 페이지 테이블과 사용자 init 컨텍스트 제11장 사용자 모드 실행 검증과 남은 과제 제3부 저장장치, ELF와 첫 사용자 프로그램 제12장 블록 장치와 파일시스템 읽기 제13장 시스템콜 기반과 ELF 실행 준비 제14장 /sbin/init 적재와 사용자 VM 제15장 스케줄링과 최소 프로세스 모델 제16장 사용자 프로그램 ELF 빌드와 ABI 스택 제17장 사용자 init 실행 준비 제18장 첫 사용자 실행의 구조적 의미 제4부 문자 장치와 파일 디스크립터 제19장 문자 장치와 시리얼 장치 제20장 파일 디스크립터 테이블과 장치 노드 제21장 open()과 프로세스 fd 컨텍스트 제22장 사용자 포인터 copyin과 VM 검증 제23장 write()와 프로세스 소유 I/O 제24장 close(), read(), 콘솔 데이터 흐름 제25장 장치 I/O 통합과 검증 제5부 블로킹 I/O와 태스크 전환 제26장 블로킹 읽기와 대기 태스크 깨우기 제27장 대기 중인 시스템콜 뒤 실행 대상 선택 제28장 유휴 판정과 WFI 제29장 TrapFrame 복원과 트랩 스케줄링 처리 제30장 트랩 런타임과 전역 스케줄러 상태 제31장 태스크 전환 동작 검증 제6부 주소 공간 전환과 루트 페이지 테이블 제32장 사용자 프로세스 생성 절차와 두 번째 태스크 제33장 주소 공간 토큰과 전환 준비 제34장 satp 전환 준비와 주소 공간 점검 제35장 트랩 스택 전환과 진입 어셈블리 제36장 사용자 진입점 CSR과 하드웨어 적용 허용 조건 제37장 루트 페이지 테이블 배치와 사용자 실행 진입 제38장 프로세스 주소 공간 루트와 satp 전환 검증 제39장 물리 프레임 기반 사용자 실행 이미지 제40장 satp 유지와 사용자 실행 및 시스템콜 제41장 사용자 코드 실행 검증 제7부 프로세스 종료와 종료 결과 회수 제42장 프로세스 exit 런타임 시작과 연결 제43장 프로세스 전체 종료와 다음 태스크 선택 제44장 트랩 디스패치에서 프로세스 exit 처리 제45장 종료 결과 회수와 wait 시스템콜 제46장 블로킹 대기와 자식 없음 판정 제47장 프로세스 생명주기 완성 제8부 프로그램 교체, 런타임 ABI와 Foundation 완성 제48장 프로세스 생성 시스템콜과 execve 이미지 교체 제49장 execve 분기와 시스템콜 진입 통합 제50장 CRT, 최소 libc, stdio 제51장 공유 객체 로더와 argv/envp 제52장 콘솔 stdin과 최소 셸 제53장 Foundation 부트 파일시스템과 생명주기 확인 제54장 Foundation OS의 완성과 다음 단계 부록 부록 A WSL2에서 Podman 개발 환경 구성 부록 B 약어 사전 |