프로세스 정의, 정리(개념 및 종류)

Learning stuff 2013. 4. 10. 23:02

- 프로세스의 개념 및 종류

프로세스란 실행중인 프로그램을 의미한다고 할 수 있지만 이에 대해서는 여러 가지 다른 사항들에 대한 이해가 필요하며 다른 몇가지 용어들과의 차이도 함께 비교할 필요가 있다.

우선 작업(job)이라는 용어(이 용어는 이미 예전에 사라진 용어라 할 수도 있겠으나 프로세스에 대한 명확한 이해를 돕기 위하여 언급한다)에

대해 살펴보자. 일반적으로 사용자가 컴퓨터에서 실행시키기 위하여 작성한 프로그램과 이 프로그램의 실행에 필요한 입력 데이터를 묶어서 작업이라 한다. 결국 작업이란 프로그램과 이에 필요한 데이터를 의미하는 것으로 이는 컴퓨터에 실행 의뢰되기 전에 상태 또는 실행 의뢰되는 과정에서 사용하는 용어라 할 수 있다. 이러한 작업이 컴퓨터 시스템에 실행 의외되어 운영체제, 즉커널에서 이 사실이 전달되면 이 작업은 커널에 등록되며 이와 같이 커널에 등록된 작업을 이제부터 프로세스라 부른다. 다시 말하면, 프로세스란 커널에 등록되어 커널의 관리하에 들어간 작업을 말하는 것이다.

 

- 프로세스의 정의

커널에 등록되고 커널의 관리하에 있는 작업을 의미하며, 이를 일반적으로 실행중인 프로그램 또는 실행중인 작업이라 정의하고 있는 것이다. 그러나 프로세스의 정확한 정의 내지는 특성을 이해하기 위해서는 보다 세부적인 이해가 필요하다.

 

컴퓨터 시스템에 입력된, 즉 커널에 등록된 프로세스는 자신이 실행해야 할 프로그램을 가지고 있다. 이 프로그램을 실행시키기 위하여 프로세스는 커널에게 각종 자원(Resource)들을 요청하게 된다. 여기서 자원이란 기억 장치, 프로세서, 디스크 등의 각종 하드웨어 장치나 메시지, 파일 등의 소프트웨어 요소들을 의미한다. 다시 말하면, 프로세스는 자신이 실행해야 할 프로그램이나 이와 관련된 데이터를 기억 장치에 적재시키기 위하여 기억 장치를 요구할 것이며, 이를 실행시키기 위하여 프로세서도 요구 할 것이다. 또한 프로그램이 실행되는 동안 필요한 디스크 파일들에 접근하기 위하여 각종 파일들을 요구할 수도 있다. 이와 같은 관점에서 프로세스를 정희할 때 좁게는 프로세서를 할당받을수 있는 개체(Entity)로 , 넓게는 컴퓨터 시스템내의 각종 자원들을 요구하고 할당 받을 수 있는 개체로 정의하기도 한다.

 

커널은 프로세스를 관리하기 위하여 커널 공간(Kernel Space)내에 각 프로세스들에 대한 정보를 저장하고 사용한다. 이와 같이 커널에

등록된 각 프로세스들에 대한 정보를 저장하고 있는 영역을 프로세스 관리 블록(PCB : Process Control Block)이라 하는데, 프로세스를 이와 같이 PCB를 할당받는 개체로 정의하기도 한다.

 

지금까지 언급한 설명들을 종합하면 프로세스는

     실행중인 프로그램(작업)

     커널에 등록되고 커널의 관리하에 있는 작업

     각종 자원들을 요청하고 할당받을 수 있는 작업

     프로세스 관리 블록을 할당받는 개체

 

프로세스 관련 용어

다음 용어들간의 개념상 차이점을 명확히 구분해 보도록 하자.

◎ 프로그램(Program) : 특정 기능을 수행하기 위한 명령어의 조합

◎ 작업(Job) : 프로그램과 프로그램 실행에 필요한 입력 데이터

◎ 프로세스(Process) : 실행중인 프로그램의 인스턴스

◎ 프로세서(Processor) : 연산을 수행하고 처리하기 위한 자원, 보통 CPU를 말함

◎ 프로시저(Procedure) : 프로그램의 일부로 공통적으로 사용되는 특정 루틴

◎ 스레드(Thread) : 프로세스의 일부 특정 데이터만 가지고 있는 가벼운 프로세스

 

- 프로세스 자원의 개념

컴퓨터 시스템내에서 프로세스는 스스로 움직이는(프로그램이 실행되는 것을 이와 같이 표현한다.) 능동적인 개체인 데 비하여, 자원이란 커널에 의해 다른 주체에게 할당되고 이의 사용이 끝날 경우 다시 반납되는 파동적인 개체에 해당한다.

하드웨어자원은 기억 장치나 프로세서, 하드 디스크, 자기 테이프, 단말기, 모니터, 키보드 등의 각종 하드웨어 장치들을 의미하며, 소프트웨어 자원은 메시지, 시그널, 파일, 각종 공유 소프트웨어 등을 의미한다고 할 수 있다.

 

프로세스는 실행중에 각종 자원들을 요구하기도 하고 이를 할당받기도 하며, 사용이 끝났을 때에는 반납하기도 하면서 진행한다. 이에 따라 컴퓨터 시스템의 상태를 각종 프로세스들과 각종 자원들의 상호 작용(Interaction)으로 모델링하기도 한다.

 

- 프로세스 관리 블록

컴퓨터 시스템내의 프로세스들은 모두 커널 공간에 자신의 PCB를 하나씩 갖게 되며 이의 관리는 커널이 하게 된다. 다르게 설명하면 커널은 자신에게 등록된 프로세스들을 관리하기 위하여 프로세스마다 하나씩 PCB를 할당해 주고, 이 영역에 해당 프로세스에 대한 각종 정보들을 저장하여 프로세스를 관리할 때 사용한다.

PCB에 저장되는 프로세스 관련 정보들은 운영체제마다 조금씩 다를 수 있지만 일반적으로는 다음과 같은 정보들을 PCB에 유지하게 된다.

◎ 프로세스 고유 번호(PIN ; Process Identification Number)

◎ 프로세스의 우선 순위(Priority)

◎ 프로세스의 현재 상태(Current State)

◎ 프로세스가 할당받은 자원들의 리스트 또는 이들에 대한 포인터

◎ 문맥 저장 영역(Context Save Area)

여기서 프로세스의 고유 번호는 커널이 시스템내의 프로세스들을 관리하는데 있어서의 편리성을 위하여 프로세스마다 다르게 부여되는 번호이며 이는 프로세스가 생성될 때에 부여된다.

 

프로세스의 우선 순위는 프로세스 스케줄링에서 사용하기 위한 정보이며, 특히 운영체제가 우선 순위 기반 스케줄링(Priority-based Scheduling)을 하는 경우에 필요한 정보이다. 커널은 여러 프로세스들 중 프로세서를 할당할 프로세스를 선정하기 위해 이 우선 순위를 참조할 수 있다.


출처 

http://blog.naver.com/PostView.nhn?blogId=bestheroz&logNo=67017920&redirect=Dlog&widgetTypeCall=true