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 - processprocessor에 할당되기를 기다린다.
  • terminated - process의 실행이 종료되었다.

processOS 에서 process control block (PCB) 에 의해 표현된다.

PCB는 특정 process와 연관된 여러 정보를 수록하며, 아래와 같은 것을 포함한다.

process state위에서 살펴본 process의 상태
program counter해당 process가 다음에 실행할 명령어의 주소
CPU registersCPU register는 나중에 process가 다시 scheduling될 때 계속 올바르게 실행되도록 하기 위해서 interrupt 발생시에 저장
CPU-scheduling informationprocess 우선순위, scheduling queues 에 대한 포인터, 다른 scheduling parameters
Memory-management informationbase resister, limit resister, OS에 따라 page table 또는 segment table 등과 같은 정보
Accounting informationCPU 사용 시간과 경과된 시간, 시간 제한, 계정 번호, job 또는 process numbers
I/O status informationprocess에 할당된 입출력 장치들과 열린 파일의 목록 등
![[Pasted image 20260812140250.png416]]

요약하면 PCB는 프로세스를 시작하거나 다시 시작하는 데 필요한 모든 데이터를 저장하는 저장소 역할을 한다.