-
프로세스 vs 프로그램
프로세스와 프로그램은 엄밀히 말하자면 다르다. 프로그램은 디스크에 단순히 존재하는 수동적인 개체인 반면 프로세스는 메모리에서 수행 중인 프로그램으로, 다음 수행할 명령을 지정하는 PC(Program Counter)를 가진 능동적인 개체다.
프로세스 상태
프로세스는 실행되면서 그 상태가 변한다. 각 프로세스는 다음 상태들 중 하나다.
- new : 프로세스가 생성 중이다.
- ready : 프로세스가 ready queue에 들어가서 CPU에 할당되기를 기다리고 있다.
- runnging : 명령어들이 실행되고 있는 중이다.
- waiting : 프로세스가 waiting queue에 들어가서 I/O 완료와 같은 이벤트 발생을 기다리고 있다.
- terminated : 프로세스가 실행을 종료한다.
PCB(Process Contrl Block)
각 프로세스는 운영체제 내에서 프로세스 제어 블록(PCB)으로 표현된다.
PCB는 다음 정보를 포함한다.
- 프로세스 상태 : 신규, 준비, 실행, 대기 ,정지 상태 등
- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
- CPU 레지스터 : accumulator, index register, stack pointer, 범용 레지스터 등이 포함
- CPU 스케줄링 정보 : 프로세스 우선순위, 스케줄링 큐 포인터와 다른 스케줄 매개변수를 포함.
- 메모리 관리 정보
- 운영체제에 의해 사용되는 메모리 시스템에 따라 base 레지스터와 limit 레지스터의 값 등과 같은 정보를 포함.
- 운영체제가 사용하는 메모리 시스템에 따라 페이지 테이블 또는 세그먼트 테이블 값 등과 같은 정보를 포함.
- Accounting 정보 : CPU 총량, 실제 사용된 시간,시간 제한, 계정 번호, 프로세스 번호
- 입출력 상태 정보 : 이 프로세스에 할당된 입출력 장치들과 개방 파일 목록 등.