서브시스템 구조 이해 + spinlock/mutex 적용 + kmalloc/vmalloc 차이 경험으로 설명
리눅스 커널 아키텍처를 공부하면서 가장 먼저 눈에 들어온 건 VFS·블록 레이어·네트워크 스택처럼 기능 단위로 명확하게 나뉜 서브시스템 구조였습니다. 드라이버 모델에서는 platform_driver와 device_driver 구조체를 등록해 커널이 장치를 인식하는 흐름을 직접 실습해봤습니다. 동기화 쪽에서는 spinlock과 mutex의 적용 컨텍스트 차이를 이해하는 게 초기에 어려웠는데, 인터럽트 핸들러에서는 sleep이 가능한 mutex를 쓸 수 없다는 규칙을 코드를 짜며 실감했습니다. 메모리 관리는 kmalloc과 vmalloc의 물리 연속성 차이를 알고 DMA 가능 영역에 맞게 할당하는 방식을 익혔습니다. 드라이버 인터페이스는 file_operations 구조체로 표준화된 점이, 사용자 공간에서 장치를 파일처럼 다룰 수 있는 유닉스 철학의 구체화라는 걸 느꼈습니다. 커널은 작은 실수가 시스템 전체에 영향을 주기 때문에 실험은 항상 VM에서 먼저 돌리는 습관이 생겼습니다.