시스템 콜(system call)
시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다.
출처: 위키피디아
직접적으로 받아들이기에는 어려운 정의인 것 같다.
좀 더 쉽게 설명하자면, 앞서 글에서 OS(운영체제)는 다양한 서비스들을 수행하기 위해 하드웨어를 직접적으로 관리한다. 이와 반면 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다. OS가 제공하는 이러한 인터페이스를 시스템 콜(system call)이라고 한다.
통상적으로 시스템 콜은 여러 종류의 기능으로 나뉘어져 있다. 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 따라 인덱스 되는 테이블을 유지된다.
아래 그림은 open()시스템 콜을 호출 했을 때 운영체제에서 처리하는 과정이다.
시스템 콜의 유형
- 프로세스 제어
- 파일 조작
- 장치 조작
- 정보 유지보수
- 통신
- 보호
1. 프로세스 제어(Process Control)
- 끝내기(exit), 중지(abort)
- 적재(load), 실행(execute)
- 프로세스 생성(create process)-fork
- 프로세스 속성 획득과 설정(get process attribute and set process attribute)
- 시간 대기(wait time)
- 사건 대기(wait event)
- 사건을 알림(signal event)
- 메모리 할당 및 해제 : malloc, free
2. 파일 조작(File Manipulation)
- 파일 생성(create file), 파일 삭제(delete file)
- 열기(open), 닫기(close)
- 읽기(read), 쓰기(write), 위치 변경(reposition)
- 파일 속성 획득 및 설정(get file attribute and set file attribute)
3. 장치 관리(Devide Management)
- 하드웨어의 제어와 상태 정보를 얻음(ioctl)
- 장치를 요구(request devices), 장치를 방출(release device)
- 읽기(read), 쓰기(write), 위치 변경(reposition)
- 장치 속성 획득, 장치 속성 설정
- 장치의 논리적 부탁(attach) 또는 분리(detach)
4. 정보 유지(Information Maintenance)
- getpid(), alarm(), sleep()
- 시간과 날짜의 설정과 획득(time)
- 시스템 데이터의 설정과 획득(date)
- 프로세스 파일, 장치 속성의 획득 및 설정
5. 통신(Communication)
- pipe(), shm_open(), mmap()
- 통신 연결의 생성, 제거
- 메세지의 송신, 수신
- 상태 정보 전달
- 원격 장치의 부탁 및 분리
6. 보호(Protection)
참고 사이트