프로세스의 개념

프로그램과 프로세스의 차이? :

프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태이다.

note : Queue?

큐는 먼저 들어온 데이터가 먼저 바져나가는 자료 구조이다. 반대로 스택은 먼저 들어온 데이터가 마지막에 바젼간다. 큐는 양쪽이 뚫려 있는 파이프, 스택은 한쪽만 뚫려 있는 파이프라고 생각하면 된다.

프로그램에서 프로세스로의 전환

프로세스는 컴퓨터 시스템의 작업 단위로 Task라고도 부른다.

운영체제는 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 작업지시서를 만드는데 이를 프로세스 제어 블록(PCB)라고 부른다.

PCB는 프로세스를 처리하는 데 필요한 다양한 정보가 들어있다. PCB가 없으면 프로그램이 프로세스로 전환되지 못한다.

프로세스 제어 블록에 있는 대표적인 세 가지는 다음과 같다.

  1. 프로세스 구분자 : 메모리에는 여러 개의 프로세스가 존재하므로 각 프로세스를 구분하는 구분자가 필요하다. 레스토랑의 주문서에 일련번호가 있듯이 프로세스를 구분하기 위해 프로세스 구분자(PID)가 있다.
  2. 메모리 관련 정보 : CPU를 실행하려는 프로세스가 메모리의 어디에 저장되어 있는지를 알아야 작업을 할 수 있다. 이를 위해 프로세스 제어 블록(PCB)에는 프로세스의 메모리 위치 정보가 담겨 있다. 또한 메모리 보호를 위한 경계 레지스터와 한계 레지스터도 포함되어 있다.
  3. 각종 중간값 : 프로세스 제어 블록에는 프로세스가 사용했던 중간값이 저장된다. 시분할 시스템에서는 여러 프로세스가 번갈아가며 실행되기 때문에 각 프로세스는 일정 시간 작업을 한 후 다른 프로세스에 CPU를 넘겨준다.

결론 : 하나의 프로세스를 실행하려면 프로세스 구분자, 메모리 관련 정보, 프로그램 카운터와 각종 레지스터 같은 중간값을 관리해야 한다. 이를 제어하는 것은 PCB(중간 제어 블록)이다.

프로세스와 프로그램의 관계

프로세스 = 프로그램 + 프로세스 제어 블록