파일을 읽고, 로그를 쓰고, 네트워크 socket으로 데이터를 보내고, DB connection을 여는 일은 모두 평범한 application code처럼 보입니다.하지만 이 작업들은 대부분 어느 순간 운영체제 kernel의 도움을 받아야 합니다.개발자가 작성한 함수 호출만으로는 disk, network, process, memory protection 같은 자원에 직접 접근할 수 없기 때문입니다. System call은 user mode에서 실행 중인 program이 kernel mode의 운영체제 기능을 안전하게 요청하는 경계입니다. 이번 글에서는 System call이 무엇인지, User mode와 Kernel mode는 왜 나뉘는지, Context switch와는 무엇이 다른지, 그리고 작은 IO..