프로세스(Process)
- 실행중인 프로그램!
- 프로그램 자체는 디스크 내 파일로 존재하고 동작을 하지 않는 정적이며 수동적인 개체이다.
- 프로그램을 실행시키려면 운영체제로 부터 프로그램이 동작하는데 필요한 CPU, 메모리, 입출력장치, 파일 드으이 자원을 할당 받아 동작을 시작해야 한다.
프로세스의 상태 변화
- 1) 생성상태 -> 준비상태
- 미리 정의된 정책에 따라 스케줄러에 의해 호출, 이때 메모리의 이용 가능성과 어떤 장치가 요구되는지를 검사한다.
- 2) 준비상태 -> 실행상태
- 사전에 정의된 알고리즘(FCFS, SJF, SRT, RR등)에 따라 스케줄러에 의해 처리된다. 이 과정을 디스패치라고 한다.
- 3) 실행상태 -> 준비상태
- 할당시간의 만료나 우선순위 알고리즘을 택하고 있는 시스템에서 높은 우선순위의 프로세스가 오는 경우 스케줄러에 의해 처리된다.
- 4) 실행상태 -> 대기상태
- Read, Write 또는 다른 I/O 요구, 페이지 교환을 요구하는 작업 같은 명령 등에 의하여 일어난다.
- 이러한 작업은 상대적으로 오랜 시간이 걸리기 때문에 그동안 CPU를 다른 프로세스에 할당하여 활용하기 위함이다.
- 5) 대기상태 -> 준비 상태
- I/O 장치 관리자의 신호에 의해 일어난다.
- 페이지 교환의 경우 페이지 인터럽트 핸들러가 메모리에 그 페이지가 있다는 신호를 보내게 되며, 프로세스는 준비 큐에 놓이게 된다.
- 6) 실행상태 -> 종료상태
- 프로세스를 성공적으로 끝마친 경우, 혹은 운영체제가 에러 발생을 감지하고 프로세스를 강제로 종료시킨 경우에 스케줄러에 의해 실행된다.
프로세스 제어 블록(Process Control Block, PCB)
- 프로세스의 관리를 위해 운영체제는 프로세스 제어 블록에 정보를 보관한다.
1) Process state(프로세스 상태)
- 프로세스의 현재 상태
2) Program counter(프로그램 카운터, PC)
- 프로세스 수행을 위한 다음 명령의 주소
3) CPU registers(레지스터, register)
- 실행상태에서 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장시켜서 나중에 다시 실행상태로 전이될 때 복구 시켜 프로세스의 정확한 수행을 이어나간다.
4) CPU scheduling information
- 프로세스 우선순위를 포함한다.
- 시스템에 의해 이용, 스케줄링 시 어떤 작업을 선택할 것인가를 결정한다.
5) Accounting and business information(회계정보)
- 성능 측정과 순위에 대한 목적을 위한 정보
- CPU 사용시간, 프로세스의 시스템 존재 시간, 메모리 사용량, 보조기억장치 사용량, 그리고 기타 시스템 프로그램의 사용 실태 등과 같은 CPU 및 시간 유틸리티의 양에 대한 정보를 포함한다.
6) Memory-management information(메모리 관리 정보)
- 프로세스가 저장된 주소와 가상 메모리를 사용하는 경우에는 가상주소와 실제주소의 사상(mapping) 정보, 기준 레지스터(base register)와 경계 레지스터(bound register) 등의 정보를 포함한다.
7) I/O status information(I/O 상태 정보)
- 열린 파일 목록, 프로세스에 할당 된 I/O 장치 목록 등의 종보를 포함한다.