시스템 호출
커널에 서비스 요청을 하기 위한 프로그래밍 인터페이스
- 응용 프로그램은 파일에 직접 접근할 수 없기 때문에 시스템 호출을 통해서 커널에 서비스를 요청한다
- 사용자 모드에서 실행중인 프로세스를 사용자 프로세스, 커널 모드에서 실행중인 프로세스를 커널 프로세스라고 한다
- C 프로그램의 경우 시스템 호출 대신 라이브러리 함수를 호출할 수도 있으나 실은 라이브러리 함수도 함수 내에서 관련된 시스템 호출을 한다
시스템 호출 과정
- 예시 : open() 시스템 호출- 사용자 프로세스에서 시스템 호출을 한다
- C runtime library에서 커널로 점프하기 위해 레지스터를 통해 매개변수를 전달하는 등의 작업을 한다
- trap 명령어를 이용하여 커널로 점프한다
- 동시에, 각 시스템 호출의 시작 주소를 저장하고 있는 벡터 테이블을 통해 해당 시스템 호출의 커널 코드로 점프한다
- 해당 커널 코드를 실행한다
- 호출의 역순으로 리턴한다
시스템 호출 요약
주요 자원 | 시스템 호출 |
---|---|
파일 | open(), close(), read(), write(), dup(), lseek() 등 |
프로세스 | fork(), exec(), exit(), getpid(), getppid() |
메모리 | malloc(), calloc(), free() 등 |
시그널 | signal(), alarm(), kill(), sleep() 등 |
프로세스 간 통신 | pipe(), socket() 등 |
'not기초 > 시스템프로그래밍' 카테고리의 다른 글
[시스템프로그래밍]임의 접근 파일 (0) | 2019.03.15 |
---|---|
[시스템프로그래밍]시스템 호출 read()/write()/dup()/dup2() (0) | 2019.03.15 |
[시스템프로그래밍]시스템 호출 open()/creat()/close() (0) | 2019.03.15 |
[시스템프로그래밍]파일 시스템 (0) | 2019.03.15 |
[시스템프로그래밍]리눅스 시스템 개요 (0) | 2019.03.15 |