데굴데굴

04. 프로세스 관리 - 3 본문

CS/운영체제

04. 프로세스 관리 - 3

aemaaeng 2023. 6. 27. 16:17

프로세스는 저절로 생기지 않음

시스템 부팅 후 최초의 프로세스는 운영체제가 생성하지만 그 이후부터는 다른 프로세스를 복제 생성함으로써 생겨난다. 

unix process tree

부모 프로세스가 자식 프로세스를 생성하여 부모 프로세스를 기준으로 하나의 트리 구조가 형성된다
부모 프로세스와 자식 프로세스가 자원을 공유하는 모델도 있고, 일부를 공유하거나 전혀 공유하지 않는 모델도 있다. (공유하지 않는 모델이 일반적)

프로세스와 관련된 시스템 콜 명령어

fork() - 복제 생성 (자식 프로세스는 부모의 공간과 문맥을 그대로 복사하여 생성됨)
exec() - 한 프로세스에서 시스템 콜을 통해 다른 프로그램을 실행시키는 명령어
exit() - 프로세스가 마지막 명령을 수행한 후 운영체제에게 알려줌
wait() - 자식 프로세스가 부모 프로세스에게 output data를 보냄 -> 프로세스의 각 자원이 운영체제에 반납됨
abort() - 부모 프로세스가 자식의 수행을 종료시킴
   - 자식이 자원의 할당량을 넘어버리거나
   - 자식에게 할당된 태스크가 더 이상 필요하지 않은 태스크일 때
   - 부모 프로세스가 종료(exit)되었을 때, 이 경우에는 부모 프로세스에 속하는 모든 자식 프로세스들이 종료되어야 부모 프로세스도 종료된다.

 

자식 프로세스는 부모 프로세스의 공간을 복제하여 생성된다.
하지만 두 프로세스에서 하는 일이 비슷하다면 같은 자원이 메모리에 두 번 올라가는 것이기 때문에 메모리가 낭비된다.
Copy-on-write(COW)기법으로 리소스를 아낄 수 있는데 이는 자식 프로세스에 새로운 write가 발생해 부모와 자식이 별개의 프로세스가 되기 시작할 때 프로세스를 새로 생성하는 기법이다. (write가 발생할 때 copy를 하겠다)

프로세스 간 협력

프로세스는 독립적임
한 프로세스는 다른 프로세스에 영향을 미칠 수 없다.
협력 메커니즘을 이용하면 한 프로세스가 다른 프로세스에 영향을 미치는 것이 가능해진다.

프로세스 간 협력 메커니즘 (IPC, InterProcess Communication)

  1. 메시지 전달 message passing - 커널로 메시지 전달
    1. Message System - 프로세스 사이의 공유 변수를 일체 사용하지 않고 통신
    2. Direct Communication - 통신하려는 프로세스의 이름을 명시적으로 표시하여 전달
    3. Indirect Communication - mailbox나 port를 통해 메시지를 간접적으로 전달 (목적지 명시 X)
  2. 주소 공간 공유 shared memory - 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 함. 두 프로세스는 신뢰할 수 있는 관계여야 한다.

'CS > 운영체제' 카테고리의 다른 글

06. 프로세스 동기화 - 1  (0) 2023.07.04
05. CPU 스케줄링  (0) 2023.06.29
04. 프로세스 관리 - 2  (0) 2023.06.25
04. 프로세스 관리 - 1  (0) 2023.03.19
03. 프로그램 구조와 실행  (0) 2023.03.12
Comments