평안하자

[운영체제] 프로세스 관리 본문

OS

[운영체제] 프로세스 관리

eeeeerrr 2024. 3. 29. 14:49

누군가에게 보여주기 위함이 아닌 자료 / 강의 기록용으로 정리한 노트입니다. 


 

 

* fork() 이후부터 진행

* 자식은 pid = 0, 부모는 1 (양수)

 

 

exec()

 

 

 

* 자식이 종료될 때까지 기다리는 시스템 콜

* linux 프롬프트에서 program 명령어 수행한 뒤 다시 프롬프트 작성하는 방법에서 wait() 호출

* 이는 부모와 자식이 경쟁/공존하는 모델이 아닌 자식이 종료될 때까지 부모가 기다리는 모델

 

 

모든 자원을 반납하고 죽는 것

 

외부에서 종료시키는 것

부모 프로세스

- 부모가 종료될 경우 자식들을 다 죽이고 나서 죽는다.

 

키보드/사용자

 

 

프로세스 간 협력

프로세스 간 협력 메커니즘 (IPC: Interprocess Communication)

프로세스간 정보를 주고받는 방법

 

프로세스는 각자의 독립된 주소 공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못함

 

IPC를 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미치는 것이 가능하다.

 

IPC 종류

1. message passing

  • 메시지를 전달하는 방법
  • 운영체제 커널을 통해 다른 프로세스에게 메시지를 전달하고 받는다. 
  • 사용자 프로그램끼리 메시지 전달 불가

 

1) Direct Communication

 

2) Indirect Communication

 

2. Shared memory 

  • 주소 공간을 공유하는 방법
  • 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 shared memory 메커니즘이 있음
  • 커널의 개입이 없어도 된다. 두 프로세스 간 신뢰할 수 있는 관계일 때 이 방식을 채택하는 것이 안전하다.

 

참고) thread
thread는 사실상 하나의 프로세스이므로 프로세스 간 협력으로 보기는 어렵지만 동일한 process를 구성하는 thread들 간에는 주소 공간을 공유하므로 협력이 가능