시스템콜, 시스콜 (Syscall)
응용 프로그램이 여러 이유로 커널에 접근하고자 할 때, 운영체제가 제공하는 인터페이스
즉, 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영 체제의 루틴을 호출하여 이용하는 것
통상 직접 시스템콜을 사용하기 보다는, API(라이브러리 함수)를 통해 사용함
원리
CPU는 응용 프로그램이 시스템을 임의로 조작하여 손상시키는 것을 방지하기 위해 두 가지 모드를 제공함
사용자 모드
- 제한된 메모리 영역에 접근 가능, 하드웨어 접근 불가
커널 모드
- 시스템 메모리, CPU 명령, 하드웨어에 직접 접근 가능
- 사용자 모드에서 시스템 콜을 호출 시, 제어권한이 커널 모드로 넘어감
- 커널은 요청받은 시스템 콜에 대해 처리 후, 다시 제어권한을 사용자 모드에게 전달
- 사용자 모드는 반환받은 결과물과 권한을 가지고 계속 프로세스 실행
유형
- 프로세스 제어 (Process Control)
- 끝내기(exit), 중지(abort), 적재(load), 실행(execve), 프로세스 생성(fork) 등
- 파일 조작 (File Mainpulation)
- 파일 생성 및 삭제(create, delete), 열기(open), 닫기(close), 읽기(read), 쓰기(write) 등
- 장치 관리 (Device Management)
- 하드웨어의 제어와 상태 정보 얻음 (ioctl), 장치 요구(request device), 장치 방출(release device)
- 정보 유지 (Information Maintenance)
- getpid(), alarm(), sleep(), time(), date() 등
- 통신 (Communication)
- pipe(), shm_open(), mmap(), 상태 정보 전달 등
- 보호 (Protection)
- chmod(), umask(), chown()