3-1. 프로세스의 개요

2021. 5. 2. 19:45Computer Sciences/OS

개념

프로세스(Process)는 프로그램이 실행을 위해 메모리에 올라온 동적인 상태이다. 그리고 프로세스는 실행한다고 표현한다. 이는 프로그램으로 작성된 작업 절차를 실제로 실행에 옮긴다는 의미이다. 프로세스는 컴퓨터 시스템의 작업 단위로 태스크(Task)라고도 부른다.

프로그램→프로세스

  1. 운영체제는 프로그램을 메모리의 적당한 위치로 가져온다.
  1. 그와 동시에 프로세스 제어 블록(Process Control Block, PCB)을 만든다. 이는 운영체제 영역에 만들어진다. 프로세스가 종료되면 프로세스가 메모리에서 제거되고 PCB도 폐기된다.

운영체제도 프로그램이기 때문에 부팅 시에 운영체제 프로세스가 실행되고, 그 후에 일반 프로세스가 실행되므로 컴퓨터에는 일반 사용자의 사용자 프로세스와 운영체제의 커널 프로세스가 섞여서 실행된다.

상태

활성 상태

  • 생성 상태(create status): 프로세스가 메모리에 올라와 실행 준비를 완료한 상태이다. PCB가 생성된다.
  • 준비 상태(ready status): 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태이다. PCB는 준비 큐에서 기다리며 CPU 스케줄러에 의해 관리된다. CPU 스케줄러는 준비 상태에서 큐를 몇 개 운영할지, 큐에 있는 어떤 프로세스의 PCB를 실행 상태로 보낼지 결정한다.
  • 실행 상태(running status): 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태로 'execute status'라고 표현하기도 한다. 실행 상태에 들어간 프로세스는 일정 시간 동안 CPU를 사용할 권리를 얻는다. 만약 주어진 시간을 다 사용하고도 작업이 끝나지 않았다면 프로세스는 준비 상태로 돌아와 다음 차례를 기다린다. 프로세스는 작업이 완료될 때까지 준비 상태와 실행 상태를 오간다.
  • 대기 상태(blocking status): 입출력을 요구한 프로세스가 입출력이 완료될 때까지 기다리는 상태. 실행 상태였던 프로세스가 대기 상태로 들어가면 CPU 스케줄러는 준비 상태에 있는 다음 프로세스를 실행 상태로 만든다. 대기 상태로 들어간 프로세스는 입출력이 완료되면 준비 상태로 들어가고 다음 차례를 기다린다. 입출력이 아니라 다른 이벤트에 의해 발생될 수도 있다.
  • 완료 상태(terminate status): 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료 상태로 진입한다. 메모리에서 프로세스가 제거되고, PCB가 사라진 상태이다.

휴식 상태

프로세스가 작업을 일시적으로 쉬고 있는 상태이다.

보류 상태

프로세스가 메모리에서 잠시 쫓겨난 상태이다. 프로세스는 다음과 같은 경우 보류 상태가 된다.

  • 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때
  • 프로그램에 오류가 있어서 실행을 미루어야 할 때
  • 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될 때
  • 매우 긴 주기로 반복되는 프로세스라 메모리 밖으로 쫓아내도 큰 문제가 없을 때
  • 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때

대부분 컴퓨터의 성능을 떨어뜨리거나 실행을 미뤄도 큰 지장이 없는 프로세스가 보류 상태에 들어간다. 보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역에 보관된다.

보류 상태는 두 가지로 구분된다.

  • 보류 대기 상태(block suspend status): 대기 상태에서 스왑 영역으로 옮겨진 상태이다.
  • 보류 준비 상태(block ready status): 준비 상태에서 스왑 영역으로 옮겨진 상태이다.

각 상태에서 재시작하면 원래의 활성 상태로 들어간다. 또한 보류 대기 상태에서 입출력이 완료되면 활성 상태가 아닌 보류 준비 상태로 옮겨 간다.

휴식 상태 vs 보류 상태

휴식 상태는 프로세스가 메모리에 있으나 멈춘 상태이고, 보류 상태는 스왑 영역에 있는 상태이다.

  • CPU 스케줄러(CPU scheduler): 준비 상태에 있는 여러 프로세스들 중 다음에 실행할 프로세스를 선정하는 작업을 담당한다. 준비 상태의 맨 앞에서 기다리고 있는 PCB를 CPU에 전달하여 작업이 이루어지게 한다. CPU 스케줄러는 프로세스의 모든 상태에 관여하여 모든 프로세스의 작업이 원만하게 이루어지도록 관리한다.
  • 디스패치(dispatch): 준비 상태에 있는 프로세스들 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업
  • 타임 슬라이스(타임 퀀텀): CPU 스케줄러에 의해 선택된 프로세스에게 할당된 작업 시간. 이 시간 동안 작업을 끝내지 못하면 다시 준비 상태로 돌아가는데, 이는 타임 아웃(time out)이라고 한다.

새로운 프로세스가 실행 상태로 들어오면 CPU는 타임 슬라이스가 지나면 알려달라고 클록에 요청한다. 이 시간이 지나면 클록은 인터럽트를 이용하여 CPU에게 알린다.

'Computer Sciences > OS' 카테고리의 다른 글

4. CPU 스케줄링  (0) 2021.05.03
3-3. 프로세스의 연산  (0) 2021.05.02
3-2. PCB와 문맥 교환  (0) 2021.05.02
2. 컴퓨터의 구조와 성능 향상  (0) 2021.05.02
1. 운영체제란?  (0) 2021.05.02