1. fork()
새로운 프로세스를 생성할 때 사용한다. fork() 가 사용되면 새로운 프로세스가 복사되어 실행되고, main() 함수부터 시작되는 것이 아닌, fork() 부터 시작된다.
그리고 위처럼 조건문을 활용해서 프로세스 별로 다른 작업을 수행하도록 할 수 있다.
그 이유는 fork()의 반환값은 새로 생성된 프로세스의 pid 값이다.
그리고 생성된 새로운 프로세스의 경우는 rc 값이 0이 된다.
2. wait()
자식 프로세스가 동작 중이면 끝날 때 까지 기다린다. 그 반환값은 성공시에는 자식 프로세스의 pid 값을 반환한다.
실패시에는 -1을 반환한다. 주어지는 인자 값으로는 주소값이 들어가는데, 그 인자의 주소에는 자식 프로세스의 리턴값이 들어간다.
3. exec()
fork를 사용해서 프로세스를 동시에 실행 시키면서 다른 작업을 할 수 있지만, 아예 다른 작업을 하고 싶을때에 사용한다.
exec() 가 실행되면, code를 가져와서 덮어 씌우게 된다.
fork는 주로 child 프로세스를 만드는 역할을 하고, exec의 경우에는 명령어를 넣는 역할을 하게 된다.
이렇게 두개 로 나눈 이유는 두개의 작업 사이에 많은 일을 할 수 있다.
예를 들어 두 작업 사이에 stdout 이나 stdin 을 변경할 수 있다.
'운영체제' 카테고리의 다른 글
운영체제 MLFQ (0) | 2023.03.11 |
---|---|
운영체제 schedule intro (0) | 2023.03.11 |
운영체제 LDE (0) | 2023.03.11 |
운영체제 process (0) | 2023.03.11 |
운영체제 Intro (0) | 2023.03.05 |