운영체제

운영체제 process api

cheesecrust1008 2023. 3. 11. 15:01

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