system call

WHAT

DEF

is trap

methods of using system call

  1. direct system call
  2. OS specific API
    1. Win32 API for windows
    2. POSIX API for POSIX based OS (Linux, macOS, UNIX)
    3. VM API for VM; Virtual Machine
      • de facto: java


HOW

mechanism

1. process execution
2. system call occurs in system call interface
3. CPU operation
  1. mode → kernel mode (dual-mode operation)
  2. current context 저장
    • CPU가 자동으로 저장:
    • 나머지는 kernel entry code가 직접 저장
  3. kernel stack으로 switch
    • CPU가 현재 process의 kernel stack pointer를 자동으로 로드 (kernel은 process마다 별도 kernel stack 사용하므로)
  4. entry jump(trap)
    • trap 발생 시 미리 정해진 entry 주소로 jump
    • CPU는 interrupt vector table / trap table을 참조 (OS가 이 테이블을 세팅)
4. kernel code execution: syscall dispatch
  1. syscall number 확인
  2. syscall table lookup
  3. handler 실행
5. return to user
  1. return instruction (iret, sysret, sret)
  2. saved context 복원

WHEN & WHERE

system call interface

계층명칭예시
최상위응용 프로그램사용자 작성 코드
중간 1언어별 API (표준 라이브러리)C 표준 라이브러리 (libc)
중간 2OS별 APIWin32 API, POSIX
최하위시스템 콜 (Kernel 인터페이스)read(), write(), fork()