시스템 콜이란?
- 응용 프로그램이 운영체제의 기능을 사용하기 위해 운영체제의 API를 호출하는 함수입니다.
- 운영 체제는 사용자 모드와 커널 모드로 나뉘어 구동되는데 open(), exec(), fork(), kill()와 같은 기능들을 사용하려면 커널 모드로의 전환이 필요합니다. 시스템 콜은 사용자 모드에서 커널 모드로 전환하게 해주며 커널이 제공하는 API를 이용한 뒤 다시 사용자 모드로 전환시킵니다.
- 유저 모드에서 할 수 있는일은 거의 없습니다. 반면 커널이 제공하는 API는 정말 무수히 많습니다. 프로세스 제어, 파일 조작, 장치 제어, 정보 유지, 통신, 보호 등등이 있습니다.
대표적인 시스템 콜
fork()
- 자신과 똑같은 자식 프로세스를 만듭니다. 주로 유닉스 계열의 운영체제에 사용됩니다.
- 프로세스를 복제하기 때문에 누가 부모이고 자식인지 구별이 가지 않지만, return 되는 pid가 0이면 자식, 0 보다 큰 값일 경우 부모 프로세스의 pid로 리턴됩니다.
- 따라서 상태, 변수 및 PC 값은 동일하지만 pid로 구분합니다.
ref.