코가손의 블로그

[운영체제] 프로세스 생성 실습 본문

운영체제

[운영체제] 프로세스 생성 실습

Cogason 2021. 12. 19. 14:45

리눅스에서는 fork()로 새로운 프로세스를 생성한다.

#include <stdio.h>
#include <unistd.h>
#include <wait.h>

int main()
{
    pid_t pid;
    pid = fork();
    if (pid > 0)
        wait(NULL);
    printf("Hello, Process! %d\n", pid);
    
}

fork() 사용시 부모와 자식프로세스의 분기

if (pid > 0)

부모 프로세스 P0, 자식프로세스 P1

P0은 pid > 0을 만족 wait가 되어 wait queue에 들어간다.

그러므로 P1이 CPU를 점유할 수 있게 된다.

 

P1은 pid가 0이기 때문에 밑의 printf문장을 실행하게 된다.

P1은 "Hello, Process! 0"를 출력하고 리턴한다.

 

P1의 메인함수가 return 되면

P0에 자식프로세스(P1)가 끝났다는 인터럽트가 발생

그럼 Wait하던 P0이 Running 되면서 "Hello, Process! 1"을 출력

 

 

 

Comments