1. System Call
- 프로세스 생성 및 제어를 위한 것
- 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스
2. Fork()
- 실행시 프로세스(child)가 하나 더 생성되며, fork()를 만든 프로세스(parent)와 동일한 복사본을 가짐
- OS는 똑같은 2개의 프로그램이 동작한다고 생각하고, fork()가 return 될 차례라 생각하기 때문에 child는 fork()뒷부분 부터 실행됨
- 하지만 child와 parent의 fork()값이 다르기 때문에 완전히 동일한 복사본이라 할 수 없음
- parent: fork() = (child의 pid)
- child: fork() = 0
- scheduler가 부모를 먼저 수행할지 child를 먼저 수행할 지 확신할 수 없음
3. Wait()
- child의 실행이 끝날 때까지 기다려 줌
- parent가 먼저 실행되더라도 wait는 child가 끝날 때까지 return을 반환하지 않음
4. exec()
- child에서 parent와 다른 동작을 하고싶을 때 사용
- exec가 실행되면 execvp함수는 code segment영역에 실행파일의 코드를 읽어와 덮어씌움