본문 바로가기

CS Study/Operating System

프로세스란? PCB, Process State, Process Life Cycle

1. Process

OS입장에서 보면 실행되어야 하는 프로그램들에게 시스템자원을 적절히 분배해줘야 하는 책임이 있습니다. 이때 task 단위로 서로 명확하게 구분이 되어야 하는데 이것을 프로세스라고 지칭합니다.

 

실행중인 프로그램을 의미합니다. 즉 메모리위에 올라와 실행되고 있는 프로그램의 인스턴스로 OS로부터 정상적인 실행을 위해 필요한 환경을 부여받은 능동적인 존재입니다. OS로부터 시스템 자원을 할당받는 작업의 단위이기도 합니다.

 

예를 들어, 크롬 브라우저가 두 개가 실행되면 두 개의 크롬 프로세스가 실행되는 것입니다.

1.1 Process Control Block (PCB)

프로세스 하나가 만들어진다는 것은 곧, 그 프로세스에 대한 모든 정보를 나타내는 PCB 하나가 만들어진다는 말과 같습니다.

 

OS는 프로세스를 관리하기 위한 데이터를 가지고 있어야 합니다. 프로세스를 생성하고 관리할때 OS는 PCB 자료구조를 사용해 프로세스를 관리할 수 있습니다.

 

OS가 프로세스를 관리한다는 것은 PCB의 다양한 행동으로 이어집니다. 프로세스의 수가 많고 PCB에 대한 작업은 매우 빈번하기 때문에 PCB는 기본적으로 메모리에 저장합니다.

 

  • PCB는 Linked List 방식으로 관리되기 때문에 삽입, 삭제가 용이합니다.

  • Pointer : 각종 자원에 대한 포인터입니다.
    • 부모/자식 프로세스에 대한 포인터.
    • 프로세스가 위치한 메모리 블록의 포인터
    • 할당된 자원에 대한 포인터
  • Process State : 프로세스의 현재 상태를 나타냅니다.

  • Process number (PID) : 프로세스가 생성될 때 부여받는 고유 식별자를 의미합니다.

  • Process Counter : 프로세스가 다음에 수행해야할 명령어의 주소를 가지고 있습니다.

  • Registers : 중앙처리장치의 각종 레지스터 상태를 저장하기 위한 공간입니다. 레지스터의 저장 값이 앞으로 수행할 프로세스에 관한 정보로 교체됩니다.

  • List of open files : 할당받은 자원들에 대한 정보를 가지고 있습니다.

1.2 Process Life Cycle

  1. New : 사용자 요청이 커널에 등록되고 PCB가 만들어져 프로세스가 만들어진 상태로 다음 준비나 보류 준비 상태로 되기 위해 잠시 거치는 상태이다.
    • OS는 프로세스를 생성한 후 메모리 공간을 검사하여 충분한 공간이 있으면 메모리를 할당하면서 Ready 상태로 바꾸어주지만, 메모리에 공간이 부족하다면 보류 준비상태로 바꿔준다.
  2. Ready : CPU를 할당받기 위해 기다리고 있는 상태.
    • 다중 프로그래밍 시스템의 경우 준비 상태의 여러 프로세스들이 메모리에 적재되어있다. 이 프로세스들이 서로 CPU를 할당받기를 기다리고 있다. 이때 보통 큐(리스트) 자료구조가 사용되는데, 이들의 순서를 정하는것을 CPU 스케쥴링이다!
  3. Running : CPU를 할당받아 실행중인 상태로 이때 CPU를 할당하는 것을 Dispatch 라고 한다.  

  4. Waiting : Running 상태였다가 입출력 처리를 요청하거나 바로 확보될 수 없는 자원을 요청하면 , CPU를 양도하고 요청한 작업이 완료되기를 기다리는 상태.

  5. Terminated : 프로세스가 종료될때 잠시 거치는 상태로 프로세스는 할당되었던 모든 자원들을 반납한다.
    • PCB만 커널에 남아있는 상태이다.
    • OS가 시스템에 남겨져 있는 이 프로세스의 흔적들을 정리하면(PCB를 삭제하면) 프로세스가 완전히 사라진다.
  6. 보류 상태 : 메모리 공간이 부족할때 OS는 당분간 메모리를 회수해도 문제가 되지 않을 프로세스들을 선택해 보류시킨다. 이렇게 보류시킨 프로세스를 다시 메모리로 올리는 작업을 Swapping이라고 한다.
    • 메모리 공간을 뺏기고 디스크로 나가는것 - Swapped Out
    • 나중에 다시 메모리로 들어오는것 - Swapped In