PCB는 멈춘 실행을 다시 잇는 체크포인트다

PCB는 프로세스의 신분, CPU 문맥, 메모리 경계, 열린 자원을 저장하고 컨텍스트 스위칭은 이 값을 저장한 뒤 다음 프로세스 값을 복원한다.

ID

누구의 실행인가

  • PID, PPID, UID/GID로 관계와 권한을 판단한다.
  • 상태 값으로 Ready, Running, Waiting을 구분한다.
CPU

어디서 멈췄는가

  • PC와 SP가 다음 실행 위치와 스택 위치를 보존한다.
  • 레지스터 값이 계산 중이던 문맥을 잃지 않게 한다.
MEM

무엇을 볼 수 있는가

  • 페이지 테이블 포인터가 주소 공간을 바꾼다.
  • 파일 디스크립터가 열린 파일과 소켓을 이어 둔다.
1

커널 진입

타이머 인터럽트나 I/O 대기로 현재 실행이 멈춘다.

2

현재 PCB 저장

PC, SP, 레지스터와 상태를 현재 프로세스 PCB에 쓴다.

3

다음 PCB 선택

Ready Queue에서 우선순위와 시간 정책으로 대상을 고른다.

4

주소 공간 전환

페이지 테이블이 바뀌며 TLB와 캐시 비용이 생긴다.

5

문맥 복원

다음 PCB의 레지스터를 CPU에 올리고 사용자 모드로 돌아간다.

ready

Ready Queue

CPU를 받을 수 있는 후보가 모이며 스케줄러가 여기서 고른다.

wait

Wait Queue

I/O, 네트워크, 시그널 이벤트를 기다리다 완료되면 Ready로 돌아간다.

cost

비용 판단

스레드는 주소 공간을 공유해 프로세스 전환보다 TLB 부담이 작다.

linux check

실제 시스템에서 확인

PCB 단서

/proc/<PID>/status에서 상태, 메모리, 스레드 수를 본다.

열린 자원

/proc/<PID>/fd에서 파일과 소켓 연결을 확인한다.

전환 신호

voluntary와 nonvoluntary switch를 나누어 I/O 대기와 CPU 경쟁을 구분한다.