이번 주차 키워드는 다음과 같다: User program, User mode, Kernel mode, System call, Virtual memory layout.
syscall()과 do_iret()으로 User space와 Kernel space를 넘나드는 방법을 학습했다.
Pintos를 진행하며 느끼는 점은, OS라는 프로그램을 설계할 때는 언제나 신중해야 한다는 것이다. 모든 프로그램이 그렇겠지만, 특히 로우레벨에 위치한 OS는 꼼꼼한 예외처리와 최적화가 필수적이다. 코드를 짤 때 항상 신중하게 접근해야 함을 실감했다.
또한, 거대한 코드의 흐름에 압도되지 않는 법을 배웠다. 기존에 제공된 매크로라고 해서 항상 정답은 아니라는 점을 의식해야 한다. 나에게 필요한 기능이 무엇인지 머릿속에서 먼저 구체화하고, 코드를 들여다보며 내 논리와 일치하는지 따져봐야 한다. 무작정 기존 코드를 따라가는 것이 아니라, 필요하다면 그것마저도 수정할 수 있다는 주도적인 의식을 가져야 한다고 생각했다.