PE Notes · CA/OS
PCB와 문맥 교환
PCB에 담기는 상태와 5상태 전이, 디스패치·선점으로 일어나는 문맥 교환 절차와 오버헤드, 스레드와의 차이를 정리합니다.
프로세스는 파일 하나가 아닙니다. 커널이 그 삶을 적어 두는 카드가 입니다. PID, 상태, 프로그램 카운터, 레지스터, 페이지 테이블, 열린 파일, 우선순위가 한 자리에 있습니다. CPU를 다른 카드로 갈아끼우는 일이 입니다.
카드에 적히는 것
다중 프로그래밍은 여러 카드를 번갈아 책상 위에 올립니다. 스케줄러가 고르면 그 카드의 카운터와 레지스터가 CPU에 복원됩니다. 계정 시간과 I/O 목록도 PCB에 남습니다. 자식이 끝났는데 부모가 수거하지 않으면 카드만 남는 좀비가 됩니다. 좀비 프로세스 노트가 그 끝입니다.
| PCB 칸 | 내용 |
|---|---|
| 신원 | PID, 부모, 사용자 |
| 상태 | 준비·실행·대기 등 |
| 실행 맥락 | PC, 범용 레지스터, 플래그 |
| 메모리 | 페이지·세그먼트 정보 |
| I/O·계정 | 파일 디스크립터, CPU 시간, 우선순위 |
다섯 방, 여섯 문
5상태 모델은 생성(New), 준비(Ready), 실행(Running), 대기(Blocked), 종료(Terminated)입니다. 생성이 끝나면 준비 큐로 승인됩니다. 스케줄러가 CPU를 주면 입니다. 시간 할당이 끝나거나 선점되면 준비로 돌아갑니다. I/O를 기다리면 대기, 완료면 다시 준비입니다. 스스로 끝나거나 시그널에 죽으면 종료입니다.
| 문 | 언제 |
|---|---|
| 생성 → 준비 | 초기화가 닫힘 |
| 준비 → 실행 | 디스패치 |
| 실행 → 준비 | 타임슬라이스·선점 |
| 실행 → 대기 | I/O·이벤트 대기 |
| 대기 → 준비 | 완료·사건 |
| 실행 → 종료 | exit, 강제 종료 |
누가 준비 큐의 앞자리를 받는지는 스케줄링 노트입니다.
갈아끼우는 값
타이머나 I/O 인터럽트가 현재 프로세스의 PC·레지스터를 PCB에 저장합니다. 스케줄러가 다음을 고르고, 그 PCB를 CPU에 붓습니다. 이 구간은 사용자 코드를 돌리지 않습니다. 캐시와 TLB가 식어 간접 비용이 더 붙습니다. ASID가 있으면 TLB를 덜 비웁니다. 하드웨어 TSS는 저장을 거듭니다.
| 비교축 | 프로세스 | |
|---|---|---|
| 주소 공간 | 각자 | 공유 |
| 제어 블록 | PCB | |
| 교환 비용 | 높음 | 낮음 |
스레드는 같은 공간을 나눠, 레지스터만 갈아끼웁니다. 프로세스는 공간까지 갈아끼웁니다. 답안은 PCB 항목, 5상태 전이, 저장·복원 절차, 오버헤드와 스레드 대비를 한 장에 닫습니다.