-
프로세스
프로세스라나 실행 중인 프로그램이다.
프로세스의 현재 활동의 상태는 프로그램 카운터 값과 프로세서 레지스터의 내용으로 나타난다.
프로세스의 메모리는 다음과 같다.
- 텍스트 섹션 : 실행 코드
- 데이터 섹션 : 전역 변수
- 힙 섹션 : 프로그램 실행 중 동적으로 할당되는 메모리
- 스택섹션 : 함수 호출시 임시 데이터 저장장소 (매개변수, 지역 변수 등)
프로세스 상태
아래 상태명은 임의적이고 OS마다 변한다.
- new : 프로세스 생성
- running : 명령어들 실행
- waiting : 프로세스가 어떤 이벤트가 일어나기를 기다림
- ready : 프로세스가 처리기에 할당되기를 기다린다
- terminated : 프로세스 실행이 종료되었다
프로세스 제어 블록 PCB Process Control Block
각 프로세스는 OS에서 PCB로 표현된다.
PCB는 특정 프로세스와 관련된 여러 정보를 가짐.
- 프로세스 상태 : new, ready, running, waiting, halted ...
- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
- CPU 레지스터들 : 레지스터에는 누산기, 인덱스 레지스터, 스택 레지스터, 범용 레지스터, 상태 코드 정보 포함. 나중에 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되도록 하기 위해서 인터럽트 발생 시 이 상태정보들이 저장되어야 함.
(프로그램 카운터, CPU 레지스터를 묶어 aka Context)
- CPU 스케쥴링 정보 : 우선순위, 스케줄 큐에 대한 포인터
- 메모리 관리 정보
- 회계 accounting 정보 : CPU 사용 시간, 시간 제한, 계정 번호 등
- 입출력 상태 정보
즉, PCB는 약간의 회계 데이터와 함께 프로세스를 시작, 재시작 시키는 데에 필요한 모든 데이터를 위한 저장소 역할.