kernel boundary

시스템 콜은 권한 경계를 넘는 계약이다

파일, 프로세스, 네트워크 작업은 라이브러리 함수처럼 보여도 trap, 커널 검증, 결과 복귀라는 공통 경로를 지난다.
호출 경계 비교
구간 역할 확인할 것
user read(), write() 같은 wrapper 호출 일반 함수 호출처럼 보이지만 커널 요청을 준비한다
libc 시스템 콜 번호와 인자를 약속된 위치에 배치 ABI 규약이 맞아야 커널이 요청을 해석한다
trap 사용자 모드에서 커널 모드로 전환 권한 검사와 비용이 생기는 지점이다
return 결과 값과 실패 코드를 사용자 공간으로 전달 errno나 반환값이 디버깅 단서가 된다
관찰 포인트
파일 파일, 파이프, 소켓은 파일 디스크립터라는 같은 핸들 규칙을 쓴다.
프로세스 fork, exec, wait 조합이 셸 실행의 뼈대다.
성능 잦은 시스템 콜은 모드 전환과 검증 비용 때문에 병목이 될 수 있다.
추적 strace로 실패한 커널 요청과 순서를 확인한다.