프로세스 정의
프로세스(Process)
는 일반적으로 프로세서(CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 컴퓨터가 작업하는 단위로 작업(Job)
, 태스크(Task)
라고도 한다.
- 프로세스는 다음과 같이 여러 형태로 정의할 수 있다.
- PCB(프로세스 제어블록)를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
- 프로시저가 활동 중인 것
- 비동기적 행위를 일으키는 주체이다. (즉, 요청 작업이 종료될때까지 기다리지 않는다.)
- 운영체제가 관리하는 실행 단위
프로세스 제어 블록 (PCB)
PCB
는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
이며, Job Control Block이라고도 불린다.
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성되며, 프로세스가 소멸되면 PCB도 소멸된다. (즉, 하나의 프로세스에 하나의 PCB가 존재하고 생명주기가 동일하다.)
- PCB에 저장되는 정보
- 프로세스의 현재상태
- 프로세스의 우선순위
- 프로세스에 할당된 자원에 대한 정보
- CPU 레지스터 정보
- 포인터
- 프로세스 고유 식별자
- 주기억장치 관리 정보
- 입출력 상태 정보
- 계정 정보
프로세스 상태 전이
- 프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미
- 위 그림과 같이 프로세스의 상태는 제출, 접수, 준비, 실행, 대기상태로 나눌 수 있으며, 주요 상태는
준비, 실행, 대기
이다.
프로세스 상태
준비(Ready State)
: 프로세스가 CPU를 할당받기 위해 준비하는 상태
실행상태(Running State)
: CPU를 할당받아 실행 중인 상태
대기상태(Blocked State)
: 다른 작업이 필요하여, 실행 상태의 프로세스가 종료되기 전에 CPU를 반납하고 작업 완료를 대기하는 상태
프로세스 상태 전이 관련 용어
Dispatch ( 준비상태 -> 실행상태 )
: 준비 상태의 프로세스 중에서 할당받아 실행상태로 전이되는 과정
Wake Up ( 대기상태 -> 준비상태 )
: 입출력 작업이 완료되어 대기상태에서 준비상태로 전이되는 과정
스레드
스레드(Thread)
는 프로세스 내에서의 작업 단위로서 시스템의 여러자원을 할당받아 실행하는 프로그램의 단위이다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상 시킬 수 있다.
- 한개의 프로세스는 여러개의 스레드를 가질 수 있다. (다중 스레드)
- 프로세스의 일부 특성을 갖기 때문에 경량 프로세스라고도 불린다.
- 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.
스레드의 구분
커널 스레드
: 구현이 쉽지만 속도가 느리다.
사용자 스레드
: 속도는 빠르지만 구현이 어렵다
스레드 사용 장점
- 병행성 증진
- 성능 및 처리율 향상
- 응답시간의 단축
- 기억장소의 낭비 감소
- 프로세스들 간의 통신 향상