작업(Job)은 디스크상의 프로그램(데이터)이며 컴퓨터 시스템에 실행 요청 된 상태를 프로세스라 하고 불린다. 즉 실행을 위해 시스템 커널에 등록된 작업을 의미한다.
따라서 프로세스는 다음과 같이 정의된다.
- 커널에 등록되고 커널의 관리하에 있는 작업
- 커널에 의해 스케쥴링 대상이되며 프로그램에 기록된 명령어를 수행하여 목적을 달성한다.
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 작업에 필요한 리소스를 커널에게 요청 및 할당하여 자신의 임무를 수행한다.
- 프로세스 관리 블록(PCB)을 할방 받은 개체
- 자신(프로세스)의 상태 변화를 유지/관리하기 위해 자신의 정보를 저장할 공간을 가진다.
- 즉 프로세스와 PCB는 1:1 관계를 가진다.
- 능동적인 개체
- 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
한마디로 표현하면 실행 중인 프로그램을 의미한다.
이런 프로세스는 여러 종류가 존재하는데 역할, 병행 수행 방법을 통해 구분된다.
- 역할
- 시스템(커널) 프로세스
- 사용자 프로세스
- 병행 수행 방법
- 독립 프로세스
- 협력 프로세스
시스템 프로세스는 막강한 권한을 가지고 사용자 프로세스를 관리한다. 이를 위해 모든 시스템 메모리와 명령에 접근할 수 있으며 프로세스의 실행 순서를 제어할 수 있다. 또 커널 영역을 침범하지 못하게 감시하는 보안적 역할도 수행한다.
병행 수행 방법의 독립 및 협력은 프로세스의 동작 형태에 따른 구분이며 이름에서 나타나듯 독립적으로 수행하는지, 다른 프로세스와 협력하는지를 통해 구분된다.
자원(Resource)이란 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체를 의미한다. 자원은 H/W와 S/W로 구분되며 물리적 자원과 논리적 자원을 의미한다. 대표적인 물리적 자원은 프로세스, 디스크, 메모리가 있으며 논리적 자원은 시그널, 파일, 설치 프로그램 등이 있다.
PCB는 프로세스의 상태를 저장하는 자료구조이다. 여기에는 PID, 스케쥴링 정보, 프로세스 상태, 메모리 관리, 문맥 저장 영역, 계정 정보 등 운영체제가 프로세스를 관리하기 위한 저장하고 있다.
프로세스는 작업을 수행하는 동안 다른 프로세스와 함께 제한된 리소스를 공유하며 사용하기 때문에 다양한 상태 변화를 가지며 수행하게 된다.
- 프로세스의 상태
- Create
- 프로그램 데이터를 메모리에 적재하여 프로세스로 승격
- Ready
- CPU를 할당받기 전까지 대기
- Running
- CPU를 할당받아 명령 수행
- Asleep
- I/O 작업 요청 시
- Terminated
- 프로세스 수행 종료
- 모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태
- 커널이 PCB으로부터 정보를 수집한 후 최종적으로 삭제
- Create
이 외에도 메모리를 할당받지 못한(빼앗긴) 상태를 나타내는 Suspended State가 존재하며 이때 메모리 이미지(Memory image)를 프로그램 정보 저장을 위한 특별한 파일 시스템인 스왑 디바이스에 메모리를 할당받기 전까지 보관해둔다.