process란 실행 중인 program입니다. process의 현재 활동 상태는 program counter(PC) 값과 processor register의 내용으로 나타납니다. 아래는 process의 각 섹션을 나타냅니다.

세부적으로 보자면
text섹션 - 실행 코드data섹션 - 전역 변수 (BSS초기화 하지 않은 전역변수)heap섹션 - 프로그램 실행 중에 동적으로 할당되는 메모리stack섹션 - 함수를 호출할 때 임시 데이터 저장장소
이때 text ,data 섹션은 크기가 고정되기 때문에 프로그램 실행 시간동안 크기가 변하지 않는다. 그러나 heap ,stack 섹션은 프로그램 실행 중에 줄어들거나 커질 수 있다.
또한 program 그 자체는 process가 아니다. program은 disk에 저장된 명령어의 집합이고 이를 메모리에 적재했을 경우 process가 된다.

argc, argv가 저장되는 별도의 섹션이 존재한다.
process는 실행되면서 상태가 변하는데 아래는 process 상태의 종류를 나타낸다.
- new -
process가 생성 중이다. - running - 명령어들이 실행되고 있다.
- waiting -
process가 어떤 이벤트(입출력 완료 또는 신호의 수신같은)가 일어나기를 기다린다. - ready -
process가processor에 할당되기를 기다린다. - terminated -
process의 실행이 종료되었다.

각 process 는 OS 에서 process control block (PCB) 에 의해 표현된다.
PCB는 특정 process와 연관된 여러 정보를 수록하며, 아래와 같은 것을 포함한다.
| process state | 위에서 살펴본 process의 상태 |
|---|---|
| program counter | 해당 process가 다음에 실행할 명령어의 주소 |
| CPU registers | CPU register는 나중에 process가 다시 scheduling될 때 계속 올바르게 실행되도록 하기 위해서 interrupt 발생시에 저장 |
| CPU-scheduling information | process 우선순위, scheduling queues 에 대한 포인터, 다른 scheduling parameters |
| Memory-management information | base resister, limit resister, OS에 따라 page table 또는 segment table 등과 같은 정보 |
| Accounting information | CPU 사용 시간과 경과된 시간, 시간 제한, 계정 번호, job 또는 process numbers 등 |
| I/O status information | process에 할당된 입출력 장치들과 열린 파일의 목록 등 |
| ![[Pasted image 20260812140250.png | 416]] |
요약하면 PCB는 프로세스를 시작하거나 다시 시작하는 데 필요한 모든 데이터를 저장하는 저장소 역할을 한다.