Understanding the Linux Kernel (2nd Edition) (continued)
8장을 마친 후에, 이어서 3-6, 9-11장을 읽었다.
3장은 프로세스와 프로세스 전환, 4장은 x86계열에서의 인터럽트 처리 방식과 리눅스에서의 인터럽트 처리 방식, 5장은 커널 동기화에 필요한 여러가지 primitive들, 6장은 역시 x86 계열에서 사용되는 하드웨어 타이머들의 소개와 리눅스에서의 활용 방식, 9장은 시스템 콜이 처리되는 방식, 10장은 시그널의 처리 방식, 11장은 프로세스 전환 시, 스케줄러 정책을 다루고 있다.
나머지 장들은 디스크 액세스로부터 파일 시스템, swapping에 관련된 것이어서 11장을 읽고 난 후엔 거의 다 읽은 거겠지 하고 생각했는데, 아직도 반이나 남아있다. 비슷한 속도로 읽으면 복학하기 전에는 끝낼 수 있을 듯하다.
읽으면서 든 느낌은 kernel 구현은 보통의 프로그램 처럼 하나의 behavior를 위한 logic이 잘 모여있기 보다는 – 각종 하드웨어 이벤트 들에 대해서 multiplexing되어 있어서 – 이곳 저곳에 얇게 퍼져있고, 따라서 직관적으로 이해하기는 좀 힘들다는 것이었다. 물론 이 책이 그러한 복잡함을 이해하는 데, 큰 도움이 되겠지만 말이다.