ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5일차 - 프로세스 관리(Process Management)
    CS지식/운영체제 2021. 4. 18. 22:18

    오늘은 프로세스가 어떻게 생성되고 종료되는지 구체적으로 배웠다.

    이전에 사용자 프로세스가 I/O에게 요청을 직접하지 못하고 운영체제에게 시스템콜을 해서 한다고 배웠다.

    오늘도 많은 내용을 배웠지만 사용자 프로세스가 직접 무엇을 하는 권한은 없고 왠만한 기능을 수행하 때에는

    운영체제에 시스템 콜을 한 후 진행된다고 느꼈다.

     

    1. 프로세스 생성

    프로세스의 생성은 기본적으로 부모 프로세스가 자식 프로세스를 생성하게 된다.

    여기서 부모 프로세스는 하나 뿐이고 자식 프로세스는 여러 개가 될 수 있고 이러한 이유로 프로세스의 트리(계층 구조)를 형성하게 된다.

    생성된 프로세스는 CPU나 메모리와 같은 자원이 필요한데 자원은 운영체제로부터 받게 된다.

    프로세스의 모델은 자원의 공유 시점과 수행(execution) 시점으로 보았을 때 여러 모델이 존재한다.

     

    먼저 공유 시점에서 보자.

    1. 부모와 자식이 모든 자원을 공유하는 모델

    2. 일부를 공유하는 모델

    3. 전혀 공유하지 않는 모델

    보통의 경우에는 공유를 하지 않고 개인의 자원을 사용하는 경우가 많다.

     

    수행(executio) 시점에서 보면 부모와 자식이 공존하며 수행되는 모델과 자식이 종료될 때까지 부모가 기다리는 모델이 있다.

     

    그러면 부모 프로세스가 자식 프로세스를 생성한다고 하는데 어떠한 방식으로 생성되는 것일까?

    일단 기본적인 원리는 복제 생성에 기반으로 이루어진다.

    그렇기 때문에 자식이 부모의 주소공간을 복사한 후에 그 공간에 새로운 프로그램을 올리는 방식이다.

     

     

    2. 프로세스 종료

    프로세스의 종료에는 자발적으로 종료하는 경우와 비자발적으로 종료하는 경우 2가지가 존재한다.

     

    먼저 자발적으로 종료하는 경우이다.

    프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려주는 exit 시스템 콜을 하게 된다.

    자식 프로세스는 부모 프로세스에게 output data를 보내고 프로세스의 각종 자원들이 운영체제에게 반납된다.

     

    다음으로 비자발적으로 종료(강제 종료)하는 경우이다.

    부모 프로세스가 자식 프로세스의 수행을 종료시키는 것으로 abort 시스템 콜을 하게 된다.

    abort 시스템 콜을 하는 경우는 무엇일까?

     

    1) 자식 프로세스가 할당 자원의 한계치를 넘어서 사용한 경우

    2) 자식에게 할당된 테스크가 더 이상 필요하지 않은 경우

    3) 부모 프로세스가 종료(exit)하는 경우

    1번과 2번경우는 왜 비자발적으로 종료되는지 어느정도 이해가가지만 3번은 잘 이해가 되지 않을 것이다.

    왜 부모 프로세스가 종료됐는데 자식 프로세스가 비자발적으로 종료되는 것일까?

     

    기본적으로 프로세스의 종료는 부모 프로세스보다 자식 프로세스가 먼저 종료되는 것이 원칙이다.

    그런데, 부모 프로세스가 먼저 종료되면 운영체제는 자식 프로세스가 더 이상 수행되도록 두지 않기 때문에

    비자발적으로 종료가 되는 것이다.

     

     

    3. 프로세스 간 협력

    프로세스는 원칙적으로 독립된 주소공간을 사용하고 프로세스들끼리 자원을 공유를 하지 않고 서로 경쟁하며 자원을 얻으려고 한다.

    이러한 경우(대부분의 경우를 말함)를 독립적 프로세스라고 한다.

    독립적 프로세스와 반대로 협력 프로세스가 존재한다.

    협력 프로세스는 프로세스 협력 매커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있는 경우이다.

    이러한 협력 프로세스는 어떻게 이루어지는 것일까?

    기본적으로 프로세스 간 협력은 IPC, 프로세스 간 협력 매커니즘에 의해 이루어진다.

    IPC에는 2가지 종류가 존재한다.

     

    1) 메시지를 전달하는 방법

    message passing방법으로 커널(운영체제)를 통해 공유하고자 하는 내용을 메시지로 전달하는 것이다.

    messaging system은 프로세스 사이에 공유변수를 일체 사용하지 않고 통신하는 시스템으로

    커널에게 시스템 콜을 통해 이루어 진다.

    messaging system에는 2가지가 있다.

    먼저, DIrect Communication으로 통신하려는 프로세스의 이름을 명시적으로 표시하여 전달하는 것이다.

    그리고 Indirect Communication이 있는데 이것은 커널의 mailbox를 통해 메시지를 간접 전달하는 것으로

    수신 프로세스가 정해져 있지 않아 mailbox에서 무언가를 수신하려는 프로세스들 모두가 받을 수 있다.

     

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

    7일차 - Process Syncronization(1)  (0) 2021.04.25
    6일차 - CPU Scheduling  (0) 2021.04.21
    4일차 - 스레드(Thread)  (0) 2021.04.15
    3일차 - 프로세스(Process)  (0) 2021.04.13
    2일차-System Structure & Program Execution  (0) 2021.04.07

    댓글

Designed by Tistory.