본문 바로가기
학교 강의/운영체제

[Chapter 4] Process Management

by dustnn 2025. 4. 19.

process를 생성하는 부분에 대해 중점적으로 볼 것임

 

process 생성(fork -> exec)

 

: process 생성한다 = Parent process(원래 존재하는 process)가 children process(자식 프로세스)를 생성하는 것

부모는 자식이 종료될 때까지 기다릴 수도 있고, 둘이 경쟁 관계일 수도 있다.

But, parent process와 children process는 관계만 이럴 뿐 독립적으로 작동한다.

 

프로세스는 자원을 부모 프로세스로부터 받거나 운영체제로부터 받는다.

- process는 thread와 달리 주소 공간 공유하지 않기 때문에 복사해줘야 함.

- PCB도 별도로 만들어주고 부모꺼 복사.(code+data+stack 모두 복사)

- 자식은 복사본에 자신의 프로그램 올림 => "exec()"

(중요) PID는 복사하지 않음 !!!(별도의 프로세스이므로 프로세스 ID도 별도로 존재해야 하기 때문)

 

 

process 종료(exit & abort)

 

<exit()>

: 자식 프로세스가 자발적 종료

: 자식 프로세스가 마지막 명령 수행 후 부모 프로세스에게 결과를 보내면서 종료한다고 말하고 종료

 

<abort()>

: 강제 종료(자원 고갈/불필요/부모 종료 등..)

* 부모가 종료되기 전에 자식을 종료시킨다.

 

 

 

 

시스템 콜

 

1. fork()

: 부모 프로세스가 자식 프로세스를 생성하기 위해 system call

 

fork() 시스템콜

fork() 부분에서 A(부모)와 A'(자식) 가 어떻게 다르게(독립적으로) 실행되는지에 대해 중점적으로 볼 것

왼쪽: A(부모 프로세스), 오른쪽: A'(자식 프로세스)

 

 

2. exec()

: 자식에게 새로운 기능을 시킬 때 사용(덮어씌우기)

execlp("새로운 프로세스", "새로운 프로세스", 인수, 인수 ,....., (char*)0)

* fork() & exec() 차이점 주목

A: 부모, A': 자식

자식이면 execlp, 부모면 원래 프로세스 계속

 

execlp에 date 대신 PPT 파일이 들어있으면 fork()->exec() 거쳐 date라는 새로운 프로세스가 실행되는 것이다.

(A'는 이제 없어짐)

 

 

3. wait()

: 자식 프로세스가 종료될 때까지 sleep 시키고 종료되면 다시 ready(여러 가지 부모-자식 관계 중 부모 sleep 방식)

ex. vi editor

 

: wait()는 어느 지점에서 쓰이는가에 중점을 두고 볼 것

- &가 붙었을 때 => wait() 수행x(부모는 wait하지 않고 백그라운드로 수행)

- &가 안 붙었을 때 => wait() 수행o

시험 나옴

gpt 설명

 

 

4. exit()

 

<자발적 종료>

- 마지막 statement 수행 후 exit() 시스템콜 통해

- 프로그램에 명시적으로 적어주지 않아도 main함수 끝나면 컴파일러가 알아서 종료시켜줌

- ctrl c로 종료하는 경우: 프로그램이 ctrl c받고 종료해야겠다고 판단해 종료

 

<비자발적 종료>

- 부모 프로세스가 자식 프로세스를 강제 종료시킴

: 자식 프로세스가 한계치를 넘어서는 자원 요청

: 자식에게 할당된 태스크가 더 이상 필요하지 않을 때

- 키보드로 kill, break 등을 친 경우

- 부모가 종료하는 경우 -> 부모 종료 전에 자식이 먼저 종료

 

프로세스 간 협력

 

독립적 프로세스

: 원칙적으로 각 프로세스는 독립적으로 수행

(자원을 얻기 위해 경쟁)

 

협력 프로세스

: 경우에 따라 가능

=> 중요x

 

프로세스 간 협력 매커니즘(IPC = Interprocess Communication)

 

두 가지 방식

1. message passing: 프로세스 P가 Q에게 메시지 전달

=> 운영체제가 대신 system call

- direct communication: 수신자 명시해 직접 전달

- indirect communication: 수신자 명시하지는 않고 port/mailbox를 매개로 간접 전달(P가 넣어두면 Q가 열어봄)

 

2. shared memory: P와 Q가 memory 공간 공유

=> 운영체제가 shared memory를 만들어줌

ex. thread는 한 프로세스 내에서 메모리 공간을 공유하기 때문에 가능

 

 

'학교 강의 > 운영체제' 카테고리의 다른 글

[Chapter 3] Process  (0) 2025.04.19
[Chapter 2] System Structure & Program Execution  (0) 2025.04.18
[Chapter 1] Introduction to Operating Systems  (0) 2025.04.10
[Chapter 5] CPU scheduling  (0) 2025.04.07