OS와 프로세스·상태 전이
목차 18
4과목 운영체제 파트의 문을 여는 강. 디스크에 잠자던 코드가 메모리에 올라가 살아 움직이는 실행체 — 프로세스가 태어나고·기다리고·실행되고·끝나는 한살이를 한 번에 잡는다. 5상태 모형과 전이 5종 화살표 방향은 매 회차 1~2문항이 굳어 나오는 시그니처 영역이다. 34강 CPU 스케줄링·35강 교착상태로 이어지는 OS 파트의 뼈대.
핵심 암기 3종: 프로세스 5상태 생준실대완(생성·준비·실행·대기·완료) · 제어 프로그램 감데작(감시·데이터 관리·작업 관리) · 처리 프로그램 언서사(언어 번역·서비스·사용자)
운영체제 기초
운영체제(OS)의 정의와 기능 ·OS 개요·
[정의] 운영체제(OS·Operating System) = 하드웨어와 사용자(응용 프로그램) 사이에서 시스템 자원을 효율적으로 관리하고 편리한 인터페이스를 제공하는 시스템 소프트웨어. 컴퓨터를 켜면 가장 먼저 동작하는 자원의 중간 관리자.
[분류] OS 4대 기능 — 시험 본격 출제
| 기능 | 한 줄 | 시험 단서 |
|---|---|---|
| 자원 관리 | CPU·메모리·디스크·I/O 할당·회수 | "자원의 할당과 회수" |
| 사용자/시스템 인터페이스 | Shell(CLI)·GUI·시스템 콜 | "쉽게 쓰도록·인터페이스" |
| 자원 보호(보안) | 메모리 보호·권한 검사·무단 접근 차단 | "다른 프로세스 무단 접근 ❌" |
| 작업 처리 | 다중 작업·다중 사용자·다중 처리 | "동시에 여러 작업" |
[분류] OS 운영 방식 — 일괄 처리(Batch) / 다중 프로그래밍 / 시분할(Time Sharing) / 실시간(Real-time) / 다중 처리(Multiprocessing) / 분산 처리(Distributed)
🔑 암기 OS 한 줄 = "하드웨어와 사용자 사이의 중간 관리자". 시스템 콜(System Call) = 응용 프로그램이 OS 기능을 호출하는 유일한 정문. ⚠️ 함정 자원 관리 ↔ 인터페이스 ↔ 자원 보호 ↔ 작업 처리 4종 매칭 바꿔치기. 🎯 빈출 기능 4종 매칭·운영 방식 분류. 간헐. 💡 보충 백화점 총지배인 — 고객(응용)은 매장 운영을 몰라도 총지배인(OS)이 재고·결제·경비를 통합 관리해 준다. 응용은 비즈니스 로직만, CPU·메모리·디스크는 OS가 챙긴다.
OS 종류와 계보 ·OS 개요·간헐·
[표] 주요 OS
| OS | 한 줄 |
|---|---|
| Windows | Microsoft·GUI 친화·NT 커널·독자 계보 |
| Linux | 오픈소스·UNIX 영향(1991 리누스 토르발스)·서버 표준 |
| macOS | Apple·Darwin(BSD 계열)·UNIX 인증 |
| UNIX | 1969 AT&T 벨연구소·C 언어 기반·이식성↑·서버의 원조 |
| iOS | Apple·Darwin(BSD 계열) → 넓은 의미 UNIX·모바일 |
| Android | Google·Linux 커널 기반·오픈소스·모바일 |
⚠️ 함정 "Android = Java 기반" ❌ (→ Linux 커널 기반). "Windows = UNIX 계열" ❌ (→ 독자 NT 커널). "iOS = UNIX 계열" ✅ (Darwin = BSD 계열). 🌟 여기만 계보 한 줄 — UNIX(1969)에서 BSD → macOS·iOS, Linux → Android 로 갈라진다. Windows만 독자 계보. 이 한 줄이면 충분. 🎯 빈출 계보 바꿔치기. 간헐.
제어 프로그램·처리 프로그램 — 감데작·언서사 ·시스템 SW 분류·
[분류] 시스템 소프트웨어는 OS를 운영하는 제어 프로그램과 사용자 작업을 처리하는 처리 프로그램으로 갈린다.
| 분류 | 두문자 | 구성 3종 | 역할 |
|---|---|---|---|
| 제어 프로그램(Control) | 감데작 | 감시(Supervisor)·데이터 관리(Data Mgmt)·작업 관리(Job Mgmt) | OS 운영 핵심 |
| 처리 프로그램(Processing) | 언서사 | 언어 번역(컴파일러·인터프리터·어셈블러)·서비스(로더·링커·디버거)·사용자 | OS 위 사용자 작업 |
🔑 암기 감데작(제어) + 언서사(처리). "감시는 항상·데이터는 들고·작업은 줄세워 / 언어로 짜서·서비스 받고·사용자 쓴다". ⚠️ 함정 "컴파일러 = 제어 프로그램" ❌ (→ 처리·언어 번역). "감시 프로그램 = 처리 프로그램" ❌ (→ 제어). 6글자에 매칭 안 되는 보기 = 함정. 🎯 빈출 제어 vs 처리 분류·구성 3종 소거형. 간헐~보통.
프로세스와 PCB
프로그램 vs 프로세스 ·프로세스·시험 1순위·
[정의] 프로세스(Process) = 메모리에 적재되어 실행 중인 프로그램. CPU 점유 시간을 받아 동작하는 능동적 작업 단위.
[비교]
| 항목 | 프로그램(Program) | 프로세스(Process) |
|---|---|---|
| 상태 | 정적(Static) | 동적(Dynamic) |
| 위치 | 디스크의 파일 | 메모리의 실행체 |
| 자원 점유 | ❌ | CPU·메모리·I/O ✅ |
| 개수 | 파일 1개 | 같은 프로그램에서 여러 프로세스 가능 |
| 비유 | 레시피(요리책 한 줄) | 실제 요리(불 위 냄비) |
🔑 암기 "프로그램은 정적·프로세스는 동적". 정적/동적 · 디스크/메모리 · 점유 ❌/✅ 세 분별. ⚠️ 함정 "정적 ↔ 동적" 바꿔치기. "한 프로그램 = 항상 한 프로세스" ❌ (멀티 인스턴스 가능). 🎯 빈출 정의 판단형(옳은 것 고르기). 매 회차. 💡 보충 같은 레시피로 여러 사람이 동시에 요리 = 한 프로그램에서 여러 프로세스(브라우저 탭마다 프로세스가 따로 뜨는 모습).
프로세스 메모리 4영역 ·프로세스·
[표] 프로세스가 메모리에 적재될 때 4개 영역으로 나뉜다.
| 영역 | 저장 내용 | 특징 |
|---|---|---|
| 코드(Code/Text) | 컴파일된 기계어 명령 | 읽기 전용·시작 시 결정 |
| 데이터(Data) | 전역·정적 변수 | 시작 시 결정·종료까지 유지 |
| 힙(Heap) | malloc·new 동적 할당 | 실행 중 증가(↑) |
| 스택(Stack) | 지역 변수·함수 호출 | LIFO·함수 호출 시 증가(↓) |
높은 주소
┌─────────────┐
│ Stack │
│ ↓ │
│ ↑ │
│ Heap │
├─────────────┤
│ Data │
├─────────────┤
│ Code (Text) │
└─────────────┘
낮은 주소
- 스택(Stack) — 지역 변수·함수 호출 · 위에서 아래로(↓) 증가 · LIFO
- 힙(Heap) — malloc·new 동적 할당 · 아래에서 위로(↑) 증가
- 데이터(Data) — 전역·정적 변수
- 코드(Code) — 실행 코드(읽기 전용)
🔑 암기 코드=읽기 전용·데이터=전역/정적·힙=동적·스택=호출. ⚠️ 함정 "전역 변수 = 스택" ❌ (→ 데이터). "malloc = 스택" ❌ (→ 힙). "함수 호출 = 힙" ❌ (→ 스택). 🎯 빈출 4영역 저장 내용 매칭. 간헐~보통. 💡 보충 힙과 스택은 서로 마주 보며 자라 가운데 빈 공간을 나눠 쓴다.
PCB(프로세스 제어 블록) 8요소 ·프로세스 관리·
[정의] PCB(Process Control Block) = OS가 각 프로세스의 현재 상태와 자원 사용 정보를 기록하는 자료구조. 프로세스 1개당 PCB 1개가 커널 영역에 생성되고, 종료 시 회수된다.
[분류] PCB 8요소 — 4묶음으로 압축
| 묶음 | 요소 |
|---|---|
| 정체성 | ① PID(프로세스 식별자) · ② 프로세스 상태(생준실대완) |
| 실행 위치 | ③ PC(프로그램 카운터) · ④ CPU 레지스터 |
| 자원 | ⑤ 메모리 관리 정보(페이지/세그먼트 테이블) · ⑥ I/O 상태 정보 |
| 운영 | ⑦ CPU 스케줄링 정보(우선순위) · ⑧ 계정 정보 |
🔑 암기 정체성(PID·상태) + 위치(PC·레지스터) + 자원(메모리·I/O) + 운영(스케줄·계정). ⚠️ 함정 "원본 소스 코드"·"컴파일러 종류"·"디스크 파티션 정보"는 PCB 요소 ❌. PCB는 '실행 중인 현재 상태'만 담는다. 🎯 빈출 PCB 포함/불포함 소거형. 보통. 💡 보충 환자 차트 — 환자(프로세스) 한 명당 차트 한 권(환자 번호·상태·처치 시각·생체 신호·병실·검사·우선순위·진료비). 퇴원(종료) 시 차트는 회수된다.
프로세스 생성·종료와 부모/자식 ·프로세스·간헐·
[흐름] 새 프로세스는 기존 프로세스가 만든 자식 프로세스로 태어난다(UNIX fork()).
| 시스템 콜 | 한 줄 |
|---|---|
fork() |
부모를 복제해 자식 프로세스 생성 |
exec() |
현재 프로세스에 다른 프로그램 적재(변신) |
wait() |
부모가 자식의 종료를 기다림 |
exit() |
프로세스 정상 종료 |
⚠️ 함정 "fork() = 새 프로그램 실행" ❌ (→ 부모 복제). "좀비 = 부모 없는 프로세스" ❌ (→ 그건 고아). 🌟 여기만 고아(Orphan) = 부모가 먼저 죽음 → init이 입양 / 좀비(Zombie) = 자식이 죽었는데 부모가 wait() 안 함 → PCB만 남음. 이 둘 분별이면 충분. 🎯 빈출 시스템 콜·고아/좀비 분별. 간헐.
5상태 모형과 상태 전이
프로세스 5상태 모형 — 생준실대완 ·상태 전이·이 강의 정점·
[정의] 프로세스는 태어나서(생성) 살아 움직이다가(준비·실행·대기) 끝나는(완료) 다섯 상태를 오간다.
[표]
| # | 두문자 | 상태 | 영문 | CPU | 메모리 | 한 줄 |
|---|---|---|---|---|---|---|
| ① | 생 | 생성 | New | ❌ | 적재 ❌ | PCB만 만들어진 첫 단계 |
| ② | 준 | 준비 | Ready | ❌ | ✅ | CPU 받기 직전·준비 큐 대기 |
| ③ | 실 | 실행 | Running | ✅ | ✅ | CPU 점유·명령 수행 |
| ④ | 대 | 대기 | Waiting/Blocked | ❌ | ✅ | 외부 사건(I/O) 기다림·대기 큐 |
| ⑤ | 완 | 완료 | Terminated | ❌ | 회수 | 자원 반환·끝 단계 |
🔑 암기 생준실대완 — 5글자 순서 그대로. 양 끝 = 생(첫) ↔ 완(끝)은 절대 안 바뀐다. ⚠️ 함정 준비 vs 대기 — 준비=CPU만 비면 감(받을 자격 ✅) / 대기=외부 사건 와야 풀림(받을 자격 ❌). "대기 = CPU 받을 수 있음" ❌. 🎯 빈출 5상태 순서 배열·양 끝 묻기. 매 회차 1순위. 💡 보충 음식점 — 주문 접수(생) → 조리 대기(준) → 조리(실) → 재료 대기(대) → 서빙 완료(완).
상태 전이 5종 — 화살표 방향 ·상태 전이·이 강의 정점·
[흐름] 다섯 상태 사이를 잇는 화살표 5종. 출발 단계와 도착 단계 매칭이 핵심.
┌──── Timeout ◀───┐
▼ │
[생] ▶ [준] ─ Dispatch ▶ [실] ─ Exit ▶ [완]
▲ │ Block
└─ Wakeup ─[대]◀──┘
[표] 전이 5종
| 전이 | 방향 | 원인(결정 단서) |
|---|---|---|
| Dispatch | 준비 → 실행 | CPU 스케줄러 선택·내 차례 |
| Timeout | 실행 → 준비 | 시간 할당량 소진(Time Slice) |
| Block | 실행 → 대기 | I/O 요청·자원 기다림 시작 |
| Wakeup | 대기 → 준비 | I/O 완료·외부 사건 발생 |
| Exit | 실행 → 완료 | 작업 완료·종료 |
(생성 → 준비는 Admit — 메모리 적재 완료 시)
🔑 암기 출발 단계로 끊는다 — 준비에서 떠남 1개(Dispatch) · 실행에서 떠남 3개(Timeout·Block·Exit) · 대기에서 떠남 1개(Wakeup). ⚠️ 함정 "대기 → 실행 직진" ❌ (→ Wakeup → 준비 → Dispatch → 실행 거쳐야). 화살표 방향 뒤집기(Dispatch=실→준 ❌ 등)가 매 회차. 🎯 빈출 전이-방향 짝짓기·대기 직진 함정. 매 회차 1순위.
문맥 교환(Context Switch) ·멀티태스킹의 본질·
[정의] 문맥 교환 = 실행 중인 프로세스의 상태(PCB)를 저장하고 다음 프로세스의 PCB를 복원해 실행 주체를 바꾸는 작업.
[흐름] A 실행 → (Timeout·Block·인터럽트 발생) → A의 PCB 저장 → B의 PCB 복원 → B 실행
🔑 암기 PCB 저장 → 복원이 한 번. 핵심 저장 대상 = PC·CPU 레지스터·메모리 관리 정보. ⚠️ 함정 "문맥 교환은 비용 없음" ❌ (→ 오버헤드). "프로세스 문맥 교환이 스레드보다 빠름" ❌ (→ 정반대·프로세스가 비쌈). "응용 프로그램이 직접 수행" ❌ (→ OS 커널). 🎯 빈출 오버헤드·발생 시점·PCB 역할. 보통. 💡 보충 공부하다 전화 받기 — 책갈피(PCB)에 위치를 적어두고 전화를 받고, 돌아와 그 위치부터 이어서 한다. 책갈피가 없으면 처음부터 다시(작업 손실). 시간 할당량이 너무 짧으면 문맥 교환만 잦아져 CPU가 낭비된다.
스레드
프로세스 vs 스레드 ·스레드·시험 1순위·
[정의] 스레드(Thread) = 프로세스 내부의 실행 흐름 단위. 경량 프로세스(LWP·Light Weight Process)라고도 한다.
[비교]
| 항목 | 프로세스 | 스레드 |
|---|---|---|
| 단위 | 자원 할당의 단위 | CPU 실행의 단위 |
| 메모리 | 독립(코드·데이터·힙·스택) | 공유(코드·데이터·힙) / 스택만 따로 |
| 생성 비용 | 비쌈 | 싸다 |
| 문맥 교환 | 비쌈(PCB 전체) | 싸다(레지스터·스택 포인터만) |
| 통신 | IPC(파이프·소켓·공유 메모리)·느림 | 공유 메모리·빠름 |
| 안정성 | 한 프로세스 죽어도 다른 프로세스 영향 ❌ | 한 스레드 죽으면 같은 프로세스 전체 영향 |
🔑 암기 "프로세스 = 독립 메모리·자원 할당 단위 / 스레드 = 공유 메모리·CPU 실행 단위". ⚠️ 함정 "스레드 = 자원 할당의 단위" ❌ (→ CPU 실행 단위). "스레드 = 독립 메모리" ❌ (→ 공유). 바꿔치기 매 회차. 🎯 빈출 프로세스/스레드 분별(옳은 것). 매 회차. 💡 보충 결합도↓·응집도↑(5강 황금률)가 실행 단위에도 — 프로세스 간은 느슨하게(메모리 독립·IPC), 한 프로세스 안 스레드끼리는 긴밀하게(메모리 공유).
사용자 스레드 vs 커널 스레드 ·스레드·간헐·
[비교]
| 항목 | 사용자 스레드 | 커널 스레드 |
|---|---|---|
| 관리 주체 | 사용자 라이브러리(예: pthread) | OS 커널 |
| 생성·문맥 교환 | 빠름(커널 호출 ❌) | 상대적으로 느림 |
| 블로킹 | 한 스레드 Block → 전체 멈춤 | 한 스레드 Block → 나머지 계속 |
| 멀티코어 | 활용 ❌ | 활용 ✅ |
| 안정성 | 라이브러리 의존 | OS 직접 관리·안정 |
🔑 암기 "사용자 = 라이브러리·빠름·블로킹 약점 / 커널 = OS·안정·멀티코어". ⚠️ 함정 "사용자 스레드가 더 안정적" ❌ (→ 커널). "커널 스레드가 더 빠름" ❌ (→ 사용자). 🌟 여기만 동시성(Concurrency) = 1코어로도 가능(빠른 문맥 교환으로 동시처럼) / 병렬성(Parallelism) = 여러 코어 필수(실제 동시 실행). 이 분별까지면 충분. 🎯 빈출 두 분류 바꿔치기·동시성/병렬성. 간헐. 💡 보충 현대 웹 서버·DB 엔진은 대부분 멀티스레드(스레드 풀 — 미리 만든 스레드를 재사용해 생성 비용↓).
기출 다지기
[기출 1 출제] 다음 중 프로세스(Process)에 대한 설명으로 옳은 것은? (설명 판단형)
- ① 디스크에 저장된 정적인 코드를 의미한다.
- ② 메모리에 적재되어 실행 중인 프로그램이다.
- ③ 하나의 프로그램에서는 항상 하나의 프로세스만 생성된다.
- ④ CPU나 메모리를 점유하지 않는다.
정답 및 해설 보기
정답 ②
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 오답 | 디스크의 정적 코드 = 프로그램(정의 바꿔치기) |
| ② | 정답 | "메모리 적재·실행 중" = 프로세스 정의 |
| ③ | 오답 | 같은 프로그램에서 여러 프로세스(멀티 인스턴스) 가능 |
| ④ | 오답 | CPU·메모리·I/O 점유 ✅ — 프로그램 설명을 끼움 |
🔑 정적/동적 · 디스크/메모리 · 점유 ❌/✅ 세 분별. 레시피 vs 실제 요리.
[기출 2 출제] 다음 중 PCB(Process Control Block)에 포함되지 않는 정보는? (소거형)
- ① 프로세스 식별자(PID)
- ② 프로그램 카운터(PC)
- ③ CPU 레지스터 값
- ④ 원본 소스 코드
정답 및 해설 보기
정답 ④
PCB는 실행 중인 프로세스의 현재 상태만 담는다. 원본 소스 코드는 디스크의 프로그램 파일에 있지 PCB에 들어가지 않는다.
| 선지 | PCB 포함 |
|---|---|
| ① PID | ✅ (요소 ①) |
| ② PC | ✅ (요소 ③) |
| ③ CPU 레지스터 | ✅ (요소 ④) |
| ④ 원본 소스 코드 | ❌ 정답 |
🔑 "PCB = 현재 실행 상태"만. 환자 차트에 약 만드는 화학 공식은 안 들어간다.
[기출 3 출제] 다음 중 프로세스 5상태 모형의 단계 순서가 가장 바르게 나열된 것은? (시작 → 끝) (순서 배열형)
- ① 생성 → 실행 → 준비 → 대기 → 완료
- ② 생성 → 준비 → 실행 → 대기 → 완료
- ③ 생성 → 대기 → 준비 → 실행 → 완료
- ④ 생성 → 준비 → 대기 → 실행 → 완료
정답 및 해설 보기
정답 ②
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 오답 | 실행이 준비보다 먼저 ❌ — 준비를 거쳐야 실행 |
| ② | 정답 | 생준실대완 그대로 |
| ③ | 오답 | 대기가 준비보다 먼저 ❌ — 대기는 실행에서 진입 |
| ④ | 오답 | 대기에서 실행 직진 ❌ — Wakeup → 준비 → Dispatch → 실행 |
🔑 생준실대완 5글자가 그대로 순서. 양 끝(생↔완)은 고정, 중간 셋(준·실·대)을 슬쩍 바꾸는 게 함정.
[기출 4 출제] 다음 중 프로세스 상태 전이와 그 방향이 옳게 짝지어진 것은? (짝짓기 판단형)
- ① Dispatch: 실행 → 준비
- ② Timeout: 준비 → 실행
- ③ Block: 실행 → 대기
- ④ Wakeup: 실행 → 준비
정답 및 해설 보기
정답 ③
| 전이 | 정답 방향 | 결정 단서 |
|---|---|---|
| Dispatch | 준비 → 실행 | CPU 받음·내 차례 |
| Timeout | 실행 → 준비 | 시간 끝·할당량 소진 |
| Block | 실행 → 대기 | I/O 요청·외부 사건 시작 |
| Wakeup | 대기 → 준비 | 외부 사건 완료 |
| Exit | 실행 → 완료 | 작업 끝·종료 |
오답: ① Dispatch는 준→실(방향 반대) · ② Timeout은 실→준(방향 반대) · ④ Wakeup은 대→준(출발 단계 함정).
🔑 출발 단계만 잡으면 즉답 — Dispatch=준비 출발, Wakeup=대기 출발, 나머지 3개(Timeout·Block·Exit)=실행 출발.
[기출 5 출제] 다음 중 프로세스와 스레드에 대한 설명으로 옳은 것은? (설명 판단형)
- ① 프로세스는 같은 프로세스 안 다른 스레드와 메모리를 공유한다.
- ② 스레드는 자원 할당의 단위이며 프로세스는 CPU 실행의 단위이다.
- ③ 스레드는 같은 프로세스 안 다른 스레드와 코드·데이터·힙을 공유한다.
- ④ 프로세스 문맥 교환은 스레드 문맥 교환보다 비용이 낮다.
정답 및 해설 보기
정답 ③
| 항목 | 프로세스 | 스레드 |
|---|---|---|
| 단위 | 자원 할당 | CPU 실행 |
| 메모리 | 독립(코드·데이터·힙·스택) | 공유(코드·데이터·힙) / 스택만 따로 |
| 문맥 교환 | 비쌈(PCB 전체) | 싸다(레지스터·스택만) |
오답: ① 프로세스 간은 메모리 공유 ❌(스레드 간만 공유) · ② 정반대·바꿔치기 · ④ 정반대·프로세스 문맥 교환이 비쌈.
🔑 "메모리 공유 ✅ = 스레드 / 자원 할당 단위 = 프로세스".
[기출 6 출제] 다음 중 운영체제의 제어 프로그램(Control Program)에 해당하지 않는 것은? (소거형)
- ① 감시 프로그램(Supervisor)
- ② 작업 관리 프로그램(Job Management)
- ③ 데이터 관리 프로그램(Data Management)
- ④ 언어 번역 프로그램(Language Translator)
정답 및 해설 보기
정답 ④
제어 프로그램 = 감데작(감시·데이터 관리·작업 관리). 언어 번역 프로그램은 처리 프로그램(언서사)이다.
| 선지 | 분류 |
|---|---|
| ① 감시 | 제어(감) |
| ② 작업 관리 | 제어(작) |
| ③ 데이터 관리 | 제어(데) |
| ④ 언어 번역 | 처리(언) ← 정답 |
🔑 감데작 = 제어 / 언서사 = 처리. 6글자에 매칭 안 되면 함정.
[기출 7 출제] 다음 중 문맥 교환(Context Switch)에 대한 설명으로 옳지 않은 것은? (부정형)
- ① 실행 중인 프로세스의 상태를 PCB에 저장하고 다음 프로세스의 PCB를 복원한다.
- ② 너무 자주 발생하면 오버헤드가 커져 CPU 효율이 떨어진다.
- ③ 프로세스 간 문맥 교환은 스레드 간 문맥 교환보다 비용이 낮다.
- ④ 운영체제 커널이 수행하며 Timeout·Block·인터럽트 등이 발생 시점이다.
정답 및 해설 보기
정답 ③
| 선지 | 판정 | 근거 |
|---|---|---|
| ① | 옳음 | PCB 저장 → 복원이 문맥 교환의 본질 |
| ② | 옳음 | 잦으면 오버헤드 ↑ — 실제 일 안 하고 주체만 바꿈 |
| ③ | 틀림(정답) | 정반대 — 프로세스 문맥 교환이 스레드보다 비쌈(PCB 전체+메모리 맵 전환) |
| ④ | 옳음 | OS 커널이 수행·Timeout/Block/인터럽트 시점 |
🔑 문맥 교환 = 오버헤드 O · OS 커널 수행 · 프로세스가 스레드보다 비쌈.
한 장 요약
| 주제 | 암기·핵심 | 양 끝 / 결정 |
|---|---|---|
| 프로세스 5상태 | 생준실대완(생성·준비·실행·대기·완료) | 생(첫) ↔ 완(끝) |
| 상태 전이 5종 | 준→실(D)·실→준(T)·실→대(B)·대→준(W)·실→완(E) | 대기 → 실행 직진 ❌ |
| 제어/처리 프로그램 | 감데작(제어) / 언서사(처리) | 컴파일러=처리(언) |
| 프로그램 vs 프로세스 | 정적/디스크 ↔ 동적/메모리·점유 ✅ | 멀티 인스턴스 가능 |
| 프로세스 vs 스레드 | 독립 메모리·자원 할당 ↔ 공유 메모리·CPU 실행 | 문맥 교환: 프로세스>스레드 |
| PCB 8요소 | 정체성(PID·상태)+위치(PC·레지스터)+자원(메모리·I/O)+운영(스케줄·계정) | 소스 코드 ❌ |
| 메모리 4영역 | 코드(읽기)·데이터(전역)·힙(동적)·스택(호출) | malloc=힙 |
| 문맥 교환 | PCB 저장→복원·오버헤드·OS 커널 | 잦으면 CPU 낭비 |
| 전이 | 출발 단계 (출발만 잡으면 즉답) |
|---|---|
| Dispatch | 준비 (떠남 1개) |
| Timeout·Block·Exit | 실행 (떠남 3개) |
| Wakeup | 대기 (떠남 1개) |
🎯 합격 한 끗: 생준실대완 + 전이 5종 화살표(준→실·실→준·실→대·대→준·실→완) + 프로그램/프로세스/스레드 3분별(정적/동적/공유) + PCB 8요소 4묶음 + 문맥 교환(저장→복원·오버헤드). 33강 출제 1~2문항은 거의 모두 5상태 순서와 전이 화살표 방향 두 카드에서 나온다.
