시스템 콜은 사용자나 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스 이다. 운영체제는 커널이 제공하는 서비스를 시스템 콜을 이용해 제한함으로써 컴퓨터 자원을 보호한다.
예) 프로세스 생성/종료, I/O 작업등이 있다. (fork, exec, exit, wait)
Fork()
새로운 프로세스를 생성할 때 사용한다.
Wait()
child 프로세스가 종료될 때까지 기다리는 작업 (Wait를 통해서 child의 실행이 끝날 때까지 기다려준다. parent가 먼저 실행되더라도, wait()는 child가 끝나기 전에는 return하지 않기때문에 반드시 child가 먼저 실행된다.
exec()
단순 fork는 동일한 프로세스의 내용을 여러번 동작할 때 사용한다. child에서는 parent와 다른 동작을 하고 싶을 때는 exec를 사용할 수 있다.
System Call 수행과정
프로세스가 System call 을 호출하면 trap이 발생해 kernel mode로 진입하게 된다. 그 후 요청이 들어온 System Call 을 수행한뒤 return-friim-trap을 발생시켜 user mode로 돌아간다.
❓면접 질문
Q1. 함수 호출과 시스템 콜의 차이에 대해서 설명해주세요.
함수 호출은 자신이 작성한 함수 혹은 라이브러리에 저장된 함수를 호출하는 것이고,
시스템 콜은 운영체제에 정의된 함수를 호출하는 것입니다. 시스템 콜은 사용자나 응용 프로그램이 커널에서 제공하는 기능을 사용하기 위한 인터페이스 입니다.
•─────⋅참고 자료⋅─────•
아브라함 실버스카츠, [운영체제 10th Edition], 퍼스트북 (2020)