middlefitting

프로세스 관리에 관하여 본문

OS

프로세스 관리에 관하여

middlefitting 2023. 1. 27. 22:41

프로세스 생성

프로세는 부모 프로세스로부터 생성되게 됩니다.

 

프로 프로세스가 fork 시스템 콜을 호출하면 해당 부모 상태를 복제한 자식 프로세스가 생겨나게 됩니다.

 

자식 프로세스는 부모 프로세스의 주소 공간을 복사하고, PCB와 같은 자원들도 복제하게 됩니다.

 

자식 프로세스는 exec 시스템 콜을 통해 새로운 프로그램을 메모리에 올릴 수 있습니다.

 

따라서 프로세스의 생성 단계는 다음과 같이 이루어집니다.

 

fork() -> 부모 프로세스의 복제 -> exec() -> 새로운 프로그램 덮어쓰기

 

 

COW

파일 시스템으로 많이 나오는 개념으로, 자식 프로세스가 부모 프로세스와 자원을 공유하다가.

 

write가 발생하면 내용이 바뀌므로 그때 메모리 공간을 복사한다는 개념입니다.

 

copy 또한 필요한 부분만 올라가게 되며, write가 발생한 부분만 복제됩니다.

 

 

프로세스 종료

프로세스가 마지막 명령까지 수행하게 되면, 운영체제에 알려주게 됩니다.

 

이때 exit 시스템 콜을 요청하게 됩니다.

 

(대부분의 컴파일러에서는 exit을 명시하지 않아도 컴파일러들이 알아서 main 마지막에 exit 시스템 콜을 넘어준다고 합니다.)

 

프로세스는 항상 자식 프로세스가 먼저 종료되어야 합니다.

 

따라서 부모 프로세스가 먼저 종료되어야 하는 상황이 생기면 다음과 같은 선택지가 생깁니다.

  1. 자식 프로세스가 끝날 때까지 대기한다.
  2. 부모 프로세스가 자식의 수행을 강제로 종료시킨다.

이 밖에도 자식프로세스가 비자발적으로 종료되는 경우는 많은 경우가 존재합니다.

  • 할당 자원의 한계치를 넘는 자원을 요청하는 경우
  • 자식에게 할당된 테스크가 더 이상 필요하지 않는 경우
  • 부모가 종료하는 경우

 

프로세스 관련 시스템 콜

  • fork()
    • 프로세스를 복제 생성하는 시스템 콜
  • exec()
    • 프로세스를 새로운 프로그램으로 덮어 씌우는 시스템 콜
  • wait()
    • 자식이 종료될 때까지 sleep 하는 시스템 콜
  • exit()
    • 자원을 반납하고 프로세스를 종료한다고 알려주는 시스템 콜

 

 

 

프로세스 간 협력

원칙적으로 프로세스는 독립적으로, 다른 프로세스 수행에 영향을 미치지 못합니다.

 

그런데 프로세스가 다른 프로세스의 수행에 영향을 미치는 방법이 존재합니다.

 

그것을 프로세스 협력 매커니즘이라고 합니다.

  1. Message-passing
    • 커널을 중간 메신저 역할로 사용하여 메시지를 전달하는 것을 말합니다.
  2. Shared-memory
    • 프로세스는 자신의 주소 공간에만 접근할 수 있는데, 일부 주소 공간을 프로세스끼리 공유하는 것을 말합니다.
    • 해당 방법도 커널에 공유 메모리를 쓴다는 시스템 콜을 전달하고 사용하게 됩니다.

 

 

 

참고문헌

KOWS 운영체제 - 반효경 교수님 - Process 2, 3

http://www.kocw.net/home/search/kemView.do?kemId=1046323