라이브러리 래퍼 호출
glibc가 시스템 콜 번호와 fd, 버퍼 주소, 크기를 레지스터에 둡니다.
시스템 콜은 단순히 모드를 바꾸는 호출이 아니라, 사용자 포인터와 권한을 검증하고 데이터를 안전하게 복사하는 경계 절차입니다.
glibc가 시스템 콜 번호와 fd, 버퍼 주소, 크기를 레지스터에 둡니다.
CPU가 커널 진입점으로 이동하고 커널 스택으로 전환합니다.
fd가 열려 있는지, 버퍼 주소가 사용자 영역인지, 크기가 유효한지 확인합니다.
파일 시스템과 드라이버를 통해 데이터를 읽고 커널 버퍼에 준비합니다.
copy_to_user 같은 경로로 커널 데이터를 사용자 버퍼에 안전하게 옮깁니다.
사용자 포인터를 그대로 믿지 않고 접근 가능한 범위인지 확인합니다.
파일 디스크립터와 접근 모드가 요청한 작업에 맞는지 검사합니다.
실패하면 커널은 음수 오류 코드를 남기고 래퍼는 errno로 바꿉니다.