WHAT
DEF
methods of using system call
- direct system call
- OS specific API
- Win32 API for windows
- POSIX API for POSIX based OS (Linux, macOS, UNIX)
- VM API for VM; Virtual Machine
HOW
mechanism
1. process execution
2. system call occurs in system call interface
3. CPU operation
- mode → kernel mode (dual-mode operation)
- current context 저장
- CPU가 자동으로 저장:
- 나머지는 kernel entry code가 직접 저장
- kernel stack으로 switch
- CPU가 현재 process의 kernel stack pointer를 자동으로 로드 (kernel은 process마다 별도 kernel stack 사용하므로)
- entry jump(trap)
- trap 발생 시 미리 정해진 entry 주소로 jump
- CPU는 interrupt vector table / trap table을 참조 (OS가 이 테이블을 세팅)
4. kernel code execution: syscall dispatch
- syscall number 확인
- syscall table lookup
- handler 실행
5. return to user
- return instruction (iret, sysret, sret)
- saved context 복원
WHEN & WHERE
system call interface
| 계층 | 명칭 | 예시 |
|---|
| 최상위 | 응용 프로그램 | 사용자 작성 코드 |
| 중간 1 | 언어별 API (표준 라이브러리) | C 표준 라이브러리 (libc) |
| 중간 2 | OS별 API | Win32 API, POSIX |
| 최하위 | 시스템 콜 (Kernel 인터페이스) | read(), write(), fork() |