문서 읽는 데 38분 · 35강 · 4과목 · 프로그래밍 언어 활용

교착 상태와 메모리 단편화

목차 20
전체 59강 중 35강 · 4과목 · 프로그래밍 언어 활용

좁은 골목에서 두 차가 서로 비켜주길 기다리다 둘 다 멈추는 게 교착(Deadlock), 자리는 남는데 못 쓰는 게 단편화(Fragmentation) — 한정된 자원을 나눠 쓸 때 생기는 두 부작용을 한 강에 묶는다. 4과목에서 교착 4조건·단편화 분별이 거의 매 회차 1~2문항 굳어 나오는 빈출 단원이다. 34강 기아(Starvation)가 자원 경쟁의 부작용이었다면, 35강은 그 자원 경쟁이 상호 교착으로 번지는 단원이다. 29강 DB 트랜잭션의 교착 4조건이 여기서 OS 자원 시각으로 본격 재무대화한다.

핵심 암기: 교착 4조건 ★상점비환★(상호배제·점유와 대기·비선점·환형 대기·모두 동시) · 해결 4전략 ★예회탐복★(예방·회피·탐지·복구 — 예회는 사전 / 탐복은 사후) · 단편화 분별 ★고내가외★(고정→내부 / 가변→외부) · 은행원 알고리즘 = 회피 · 배치 3전략(최초 빠름·최적 효율·최악 큰 자투리)


PART A — 교착 상태(Deadlock)

교착 상태란? ·교착 상태·

[정의] 교착 상태(Deadlock) = 둘 이상의 프로세스가 자원을 점유한 채 서로 상대가 점유한 자원을 무한정 기다리며 어느 쪽도 진행하지 못하는 상태. 외부 개입 없이는 영원히 풀리지 않는다.

[표] 교착의 네 가지 특징

특징 한 줄
둘 이상 한 프로세스만으로는 불가 — 최소 2개 이상
점유 + 추가 요구 점유한 채 다른 자원을 또 기다림
무한 대기 외부 개입 없으면 영원히 풀리지 않음
상호 자원 요구 A는 B의 자원을, B는 A의 자원을 요구

💡 좁은 일방통행 골목에서 두 차가 마주쳐, 서로 "저 차가 먼저 빠져야지" 하며 둘 다 꼼짝 못 하는 그림.

🔑 암기 "교착 = 둘 이상이 서로의 자원을 영영 기다림 + 외부 개입 없이는 안 풀림" — 이 한 문장이 정의 즉답.

⚠️ 함정 "한 프로세스만으로도 교착 발생" ❌(→ 최소 2개 이상) / "시간이 지나면 저절로 풀린다" ❌(→ 외부 개입 필요·그건 기아).

🎯 빈출 정의를 직접 묻기보다 4조건·해결 전략으로 변형 출제. 다중 프로그래밍 환경에서 CPU·메모리·파일·프린터 같은 공유 자원 경쟁이 전제.

교착 4대 필요 조건 — ★상점비환★ ·교착 상태·시험 1순위·

[정의] 교착이 발생하려면 네 가지 조건이 모두 동시에 성립해야 한다. 하나라도 깨지면 교착은 사라진다. 그 네 글자가 ★상점비환★.

[표] ★상점비환★ — 4대 필요 조건 종합

두음 조건 영문명 OS 자원 시각
상호 배제 Mutual Exclusion 한 자원은 한 번에 한 프로세스만 사용 (공유 불가)
점유와 대기 Hold and Wait 자원을 점유한 상태에서 추가 자원 요구·대기
비선점 No Preemption 할당된 자원을 강제로 못 뺏음 (자발 반납만)
환형 대기 Circular Wait 프로세스가 원형으로 자원 대기 (P1→P2→…→P1)

[흐름] 환형 대기 — 자원 할당 그래프의 사이클

텍스트
P1 ──> R1 ──> P2 ──> R2 ──> P3 ──> R3 ──> P1
   원형 고리(사이클) 존재  교착 (사이클 판정은 탐지에서 본격)

[표] 29강 DB ↔ 35강 OS — 무대만 다르고 4조건은 완전 동일

구분 29강 (DB 트랜잭션 시각) 35강 (OS 자원 시각)
자원 레코드 락(Lock) CPU·메모리·프린터·파일
4조건 ★상점비환★ ★상점비환★ (동일)

🔑 암기 "상·점·비·환 4글자 매칭 + DB↔OS는 무대만 다름 + '선점' 보이면 100% 함정"

⚠️ 함정 "4조건에 선점(Preemption) 포함" ❌(→ 선점이 조건·'선점'은 오히려 해결 방향·'비' 한 글자 함정) / "4조건 중 하나만 성립해도 교착" ❌(→ 모두 동시) / "DB와 OS의 4조건이 다르다" ❌(→ 완전 동일).

🎯 빈출 "교착 발생의 필요 조건이 아닌 것" 부정형으로 가짜 보기에 '선점'을 끼워 넣는 형태가 매 회차 시그니처. 4과목 거의 매 회차 1문항.

📝 기출 교착 4조건 (부정형) · 기출 1

교착 vs 기아 분별 ·교착 상태·

[정의] 기아(Starvation) = 우선순위에 계속 밀려 특정 프로세스가 영영 자원을 받지 못하는 상태. 34강 SJF·우선순위 스케줄링의 부작용으로 본 그 개념이다.

[표] 교착 vs 기아 — 단골 바꿔치기 함정

비교 교착(Deadlock) 기아(Starvation)
원인 서로의 자원을 기다려 막힘 (상호 무한 대기) 우선순위 밀려 차례가 안 옴
프로세스 수 둘 이상 (사이클 필요) 한 프로세스만으로도 발생
해결 가능성 외부 개입 없이는 절대 안 풀림 시간 지나면 해결 가능
처방 ★예회탐복★ 4전략 Aging (대기 길수록 우선순위 자동 ↑)

💡 교착 = 좁은 골목 두 차의 상호 막힘 / 기아 = 교차로에서 우선순위가 계속 밀려 못 끼어듦. Aging(에이징)은 34강에서 본 기아 전용 처방.

🔑 암기 "교착 = 둘 이상 + 상호 막힘 + 외부 개입 / 기아 = 한 명 + 우선순위 밀림 + Aging 해소"

⚠️ 함정 "기아는 외부 개입 없이 절대 안 풀린다" ❌(→ 그건 교착) / "Aging은 교착 해결 기법" ❌(→ Aging은 기아 전용·교착은 ★예회탐복★).

🎯 빈출 교착과 기아의 특징을 한 줄씩 뒤바꾸는 분별형. 34강 Aging과 묶여 출제.


PART B — 교착 해결 4전략 ★예회탐복★

해결 4전략 — ★예회탐복★ ·교착 해결·시험 1순위·

[정의] 교착 해결 전략은 네 가지. ★예회탐복★방·피·지·구. 결정 카드는 "예회는 사전 / 탐복은 사후".

[표] ★예회탐복★ — 4전략 종합

두음 전략 시점 핵심 대표 기법
예방(Prevention) 사전 4조건 중 하나를 원천 부정 4부정 방법
회피(Avoidance) 사전 안전 상태에서만 할당 은행원 알고리즘
탐지(Detection) 사후 교착 발생 여부 감시 자원 할당 그래프 사이클
복구(Recovery) 사후 교착에서 벗어나는 조치 프로세스 제거·자원 선점·체크포인트

💡 교통사고에 빗대면 — 예방 = 도로 설계를 바꿔 사고를 막음 / 회피 = 내비가 막히는 길을 우회 / 탐지 = CCTV로 사고 발견 / 복구 = 견인차가 차를 치움. 예회는 사고 전, 탐복은 사고 후.

🔑 암기 "★예회탐복★ 4글자 자리 그대로 — 예회는 사전 / 탐복은 사후"

⚠️ 함정 "은행원 알고리즘은 사후 전략" ❌(→ 사전·회피) / "자원 할당 그래프는 사전 전략" ❌(→ 사후·탐지) / '발견·할당·분배' 등 ★예회탐복★ 4글자 외 단어는 모두 함정.

🎯 빈출 전략과 시점(사전/사후) 매칭, 4글자 외 가짜 단어 끼워 넣기.

📝 기출 잘못 짝지어진 것 (짝짓기) · 기출 5

예방(Prevention) — 4부정 방법 ·교착 해결·

[정의] 예방 = 교착 4조건 중 하나를 원천 부정해서 발생 자체를 막는 사전 전략. 하나만 부정해도 교착은 사라진다. 단 각 부정마다 단점이 따른다는 게 핵심.

[표] 4부정 방법 + 단점

부정 대상 방법 단점
상호 배제 부정 자원 동시 사용 허용 현실적으로 불가능한 경우 많음 (프린터·CPU 등)
점유와 대기 부정 필요한 자원을 한꺼번에 요청 자원 낭비 + 기아 가능
비선점 부정 자원을 강제로 빼앗을 수 있게 허용 작업 무효화 + 무한 반복 가능
환형 대기 부정 자원에 고유 번호 부여 → 순서대로만 요청 프로그램 작성 복잡 + 자원 낭비

💡 실무에서 가장 많이 쓰는 건 환형 대기 부정 — 트랜잭션이 무거운 시스템에서 '낮은 ID 자원부터 락 획득' 패턴이 표준.

🔑 암기 "예방 = 4조건 중 하나 원천 부정 — 4방법·4단점. 환형 대기 부정이 실무 1순위"

⚠️ 함정 "예방은 4조건을 모두 동시 부정해야 한다" ❌(→ 하나만 부정해도 교착 사라짐).

🎯 빈출 부정 대상과 단점 매칭. 예방 ↔ 회피 접근 차이 비교.

회피(Avoidance) + 은행원 알고리즘 ·교착 해결·시험 1순위·

[정의] 회피 = 자원 요청 매 순간 교착 가능성을 미리 판단해 안전한 경우에만 할당하는 사전 전략. 대표 기법이 은행원 알고리즘(Banker's Algorithm) — 다익스트라(Dijkstra)가 고안했다.

[표] 안전 상태 vs 불안전 상태

용어 의미
안전 상태(Safe State) 모든 프로세스가 정상 종료 가능한 순서(안전 순서열)가 존재
불안전 상태(Unsafe State) 안전 순서열 없음 → 교착 발생 가능성 있음 (반드시 교착은 아님)

[흐름] 은행원 시뮬레이션 — 총 자원 12개·현재 가용 3개

텍스트
프로세스   최대(Max)   할당(Alloc)   추가 필요(Need)
   P1         10           5             5
   P2          4           2             2
   P3          9           2             7
   할당 합 5+2+2=9  가용 12-9 = 3

판단  P2 Need 2 ≤ 가용 3   완료·회수 2  가용 5
      P1 Need 5 ≤ 가용 5   완료·회수 5  가용 10
      P3 Need 7 ≤ 가용 10  완료·회수 2  가용 12
안전 순서열 = P2  P1  P3  (모두 정상 종료 = 안전 상태)

💡 은행에 1억이 있고 고객마다 대출 한도가 정해져 있을 때, 매 요청마다 "지금 빌려줘도 나머지 고객까지 모두 처리할 수 있나?"를 미리 계산해 안 되면 거절. P1에 먼저 5를 주면 가용이 0이 되어 P2·P3 모두 막히는 불안전 상태라, 은행원은 P2를 먼저 처리한다.

🔑 암기 "은행원 = 회피 = 다익스트라 = 안전 상태에서만 할당 — 매년 1순위 매칭"

⚠️ 함정 "은행원 알고리즘 = 예방" ❌(→ 회피·매년 1순위 함정) / "불안전 상태 = 반드시 교착" ❌(→ 가능성만) / "안전 순서열이 여러 개면 불안전" ❌(→ 1개 이상 존재 = 안전).

🎯 빈출 '안전 상태·은행원·다익스트라·요구량 ≤ 가용량' 중 하나라도 보이면 즉시 회피. 안전 순서열 계산도 출제.

📝 기출 은행원=회피 · 회피 원리(요구량≤가용량) · 기출 2·6

탐지(Detection) + 복구(Recovery) + 세마포어 ·교착 해결·

[정의] 탐지 = 교착이 이미 발생했는지 자원 할당 그래프의 사이클로 감시(사후). 복구 = 발생한 교착에서 벗어나는 사후 조치.

[흐름] 탐지 — 사이클 존재 = 교착

텍스트
P1 ──> R1 ──> P2 ──> R2 ──> P1   사이클 존재 = 교착 (CCTV로 사고 발견)

[표] 복구(Recovery) 3가지 방법

방법 설명
프로세스 제거 교착 상태 프로세스를 강제 종료
자원 선점 교착 상태 프로세스의 자원을 강제 회수
복귀(Rollback) 체크포인트(Checkpoint)로 복귀 — 게임 세이브 포인트

[표] 세마포어(Semaphore) — 4전략 밖, 상호 배제 도구

연산 의미
P 연산 Wait·대기 (자원 잠금)
V 연산 Signal·해제 (자원 반납)

🔑 암기 "자원 할당 그래프 사이클 = 탐지 / 제거·선점·체크포인트 = 복구 / 세마포어 P=대기·V=해제"

⚠️ 함정 "세마포어 = 교착 해결 4전략에 포함" ❌(→ 상호 배제 구현 도구·4전략 밖) / "P=해제·V=대기" ❌(→ P=대기·V=해제 자리 바꿔치기).

🎯 빈출 보기 키워드로 전략 찾기 — 사이클=탐지 / 제거·선점·체크포인트=복구. 세마포어 P/V 한 줄.


PART C — 메모리 단편화(Fragmentation)

메모리 할당 분류 — 연속 vs 분산 ·메모리 관리·

[정의] 프로그램은 실행되려면 주기억장치(RAM)에 적재되어야 한다. 한정된 RAM에 다양한 크기의 프로세스가 들어오고 나가며 공간은 남는데 못 쓰는 낭비가 생기는 게 단편화. 할당 기법은 크게 연속 / 분산으로 나뉜다.

[흐름] 주기억장치 할당 기법 분류

텍스트
주기억장치 할당 기법
├─ 연속 할당   35강 본격 (단편화의 숙제)
│   ├─ 단일 분할: 오버레이 / 스와핑
│   └─ 다중 분할: 고정(내부 단편화) / 가변(외부 단편화)
└─ 분산 할당   36강 본격
    ├─ 페이징 (고정 크기 프레임)  내부
    └─ 세그먼테이션 (논리 단위)  외부

[표] 연속 vs 분산

구분 연속 할당 분산 할당
방식 프로세스를 연속 공간에 통째로 적재 조각내서 여러 영역에 분산
단편화 발생 (내부·외부) 외부 거의 없음
적용 단순 시스템·임베디드 대부분의 현대 OS

💡 연속 = 영화관에서 일행이 나란히 앉기(편하나 연속 빈자리 없으면 못 앉음) / 분산 = 흩어져 앉기(찾기 쉬우나 관리 복잡).

🔑 암기 "연속 = 통째로 나란히 / 분산 = 조각내 흩어져. 단편화는 연속 할당의 숙제"

🎯 빈출 분산 할당(페이징·세그먼테이션)은 단편화를 줄이는 다음 단계 해법 — 36강에서 본격(★페고내·세가외★).

단일 분할 — 오버레이 vs 스와핑 ·메모리 관리·

[정의] 단일 분할 = 주기억장치를 하나의 프로세스에게 통째로 할당하는 가장 단순한 방식.

[표] 오버레이 vs 스와핑

구분 오버레이(Overlay) 스와핑(Swapping)
대상 프로그램의 일부(조각) 프로세스 전체
방향 프로그램 조각을 번갈아 적재 Swap-out(내보내기) / Swap-in(불러오기)
목적 메모리보다 큰 프로그램 실행 여러 프로세스 동시 실행 지원

💡 오버레이 = 좁은 책상에서 교재를 한 권씩 바꿔가며 공부(조각) / 스와핑 = 안 쓰는 교재를 통째로 서랍에 넣고 필요할 때 꺼냄(전체).

🔑 암기 "오버레이 = 프로그램 일부·번갈아 / 스와핑 = 프로세스 전체·교환"

⚠️ 함정 "오버레이 = 프로세스 전체" ❌(→ 일부) / "Swap-in = 내보내기" ❌(→ 불러오기·방향 바꾸기).

🎯 빈출 대상(일부/전체)과 방향(in/out) 바꿔치기.

다중 분할 — 고정 vs 가변 ★고내가외★ ·메모리 관리·시험 1순위·

[정의] 다중 분할 = 메모리를 여러 영역으로 나눠 여러 프로세스를 동시 적재. 고정 분할과 가변 분할 두 가지이며, 어느 쪽이냐가 단편화 종류를 결정한다. ★고내가외★정→부 / 변→부.

[표] ★고내가외★ — 고정 vs 가변 종합

비교 고정 분할(Fixed) 가변 분할(Variable)
두음 고 → 내 가 → 외
분할 방식 미리 정해진 크기로 나눔 프로세스 크기에 맞춰 동적으로
분할 시점 시스템 시작 전 결정 프로세스 적재 시 결정
단편화 내부 단편화 외부 단편화
관리 단순하지만 비효율 복잡하지만 효율

💡 고정 = 아파트 주차장(칸이 미리 그려져 경차가 대형 칸에 서면 안쪽이 남음 = 내부) / 가변 = 노상 주차(차 크기에 맞추나 빠지고 나면 사이에 애매한 자투리 = 외부).

🔑 암기 "★고내가외★ — 고정→내부 / 가변→외부. 36강 ★페고내·세가외★로 확장(페이징=고정→내부 / 세그먼테이션=가변→외부)"

⚠️ 함정 "고정 = 외부" ❌·"가변 = 내부" ❌(→ 두 쌍 자리 바꿔치기 매년 1순위) / 분할 시점 바꿔치기.

🎯 빈출 고정/가변 ↔ 내부/외부 매칭. 35강 단편화 최대 빈출 카드.

내부 단편화(Internal Fragmentation) ·메모리 관리·

[정의] 내부 단편화 = 할당된 메모리 영역이 프로세스가 실제 필요한 크기보다 커서, 영역 안쪽에 사용되지 않는 공간이 남는 현상. 고정 분할에서 발생.

[흐름] 시그니처 시나리오 — 100KB 파티션·70KB 프로세스

텍스트
[ 100KB 고정 파티션 ]
   ├ 프로세스 70KB 사용
   └ 빈 30KB  영역 안쪽 낭비 = 내부 단편화

💡 택배 상자에 작은 물건을 넣고 빈 공간에 뽁뽁이를 채우는 것 — 뽁뽁이만큼이 낭비. '내부'는 파티션 안쪽에서 낭비가 나기 때문.

🔑 암기 "100KB 파티션 + 70KB 프로세스 = 30KB 안쪽 낭비 — 고정 분할(★고내가외★)"

⚠️ 함정 "내부 단편화 = 가변 분할" ❌(→ 고정) / "통합·압축으로 해결" ❌(→ 그건 외부·내부는 분할 크기를 프로세스에 맞춰 해결).

🎯 빈출 시그니처 수치(100/70/30)로 낭비량 계산, 고정 분할 매칭.

외부 단편화(External Fragmentation) ·메모리 관리·

[정의] 외부 단편화 = 메모리 전체 빈 공간은 충분하지만 연속적이지 않아 큰 프로세스를 적재할 수 없는 현상. 가변 분할에서 할당/해제가 반복되면 자연 발생.

[흐름] 시그니처 시나리오 — 빈 50+40+60KB, 80KB 적재 시도

텍스트
[사용중][빈 50][사용중][빈 40][사용중][빈 60]
   빈 합계 50+40+60 = 150KB
   최대 연속 60KB < 80KB  80KB 프로세스 적재 불가 = 외부 단편화

💡 주차장에 빈 칸이 5칸이지만 1칸씩 띄엄띄엄이라, 연속 3칸이 필요한 대형 버스가 못 서는 것. '외부'는 파티션 바깥쪽에 빈 공간이 흩어져서.

🔑 암기 "빈 50+40+60=150KB·연속 60KB뿐 → 80KB 적재 불가 — 가변 분할(★고내가외★)"

⚠️ 함정 "외부 단편화 = 고정 분할" ❌(→ 가변) / "전체 빈 공간이 많으면 외부 단편화 없음" ❌(→ 연속 공간 부족이 핵심).

🎯 빈출 연속성 부족 개념, 통합·압축 해결과 묶어 출제.


PART D — 메모리 배치 전략 & 단편화 해결

배치 3전략 + 시뮬레이션 ·메모리 관리·

[정의] 배치 전략 = 가변 분할에서 프로세스를 빈 공간 어디에 둘지 결정. 최초·최적·최악 3종 + 변형 후속(Next).

[표] 배치 3전략 + 후속

전략 영문 한 줄 시그니처
최초 적합 First Fit 첫 번째로 찾은 곳에 배치 탐색 가장 빠름
최적 적합 Best Fit 가장 크기가 딱 맞는 곳 메모리 효율 가장 높음
최악 적합 Worst Fit 가장 큰 곳 큰 자투리 보장
후속 적합 Next Fit 이전 탐색 위치 다음부터 최초의 변형

[흐름] 시뮬레이션 — 빈 공간 A:60·B:45·C:120KB, 프로세스 40KB

텍스트
프로세스 40KB 가 어디에?
  최초(First)  A(60)  처음 발견한 적합    자투리 20
  최적(Best)   B(45)  40에 가장 가까움    자투리  5
  최악(Worst)  C(120) 가장 큰 공간        자투리 80

💡 최초 = 처음 보이는 적당한 물건 바로 집기(빠름) / 최적 = 매장 다 돌아 딱 맞는 것(효율) / 최악 = 일부러 가장 큰 곳(자투리 커서 재할당 용이).

🔑 암기 "가장 작은(딱 맞는) = Best / 가장 큰 = Worst / 가장 빠른·첫 번째 = First / 이전 다음부터 = Next"

⚠️ 함정 "최적 = 가장 빠름" ❌(→ 최초) / "최악 = 가장 작은 공간" ❌(→ 가장 큰) / "후속 = 최적의 변형" ❌(→ 최초의 변형) / "Last Fit" ❌(→ 존재하지 않는 함정 선지·배치 전략은 First·Best·Worst·Next 4종).

🎯 빈출 '가장 작은 공간에 배치' → Best Fit. Last Fit 가짜 선지 끼워 넣기.

📝 기출 가장 작은 공간 = Best Fit · 기출 3

통합(Coalescing) vs 압축(Compaction) ·메모리 관리·

[정의] 외부 단편화 해결 두 기법. 통합 = 인접한 빈 공간을 합침 / 압축 = 흩어진 빈 공간을 한쪽 끝으로 모아 큰 블록을 만듦. 둘 다 외부 단편화 해결책.

[표] 통합 vs 압축

기법 영문 설명 비용
통합 Coalescing 인접한 빈 공간들을 하나로 합침 가벼움 (자동 가능)
압축 Compaction 흩어진 빈 공간을 한쪽으로 모음 비쌈 (프로세스 재배치 필요)

💡 통합 = 책장 빈 칸이 나란할 때 칸막이를 빼 큰 칸으로 / 압축 = 책들을 한쪽으로 쫙 밀어 반대쪽에 큰 빈 공간 만들기. 근본 해결은 분산 할당(페이징)으로 가는 것 — 연속 공간이 필요 없어져 외부 단편화가 원천 차단(36강).

🔑 암기 "통합 = 인접 합침·자동·가벼움 / 압축 = 전체 밀기·재배치·비쌈. 둘 다 외부 단편화 해결"

⚠️ 함정 "통합 = 모든 프로세스 재배치" ❌(→ 그건 압축) / "통합·압축 = 내부 단편화 해결" ❌(→ 외부 해결) / "현대 OS는 압축을 주로 사용" ❌(→ 페이징으로 원천 차단).

🎯 빈출 통합 ↔ 압축 정의·비용 구분, 내부/외부 해결 대상 바꿔치기.


기출 다지기

[기출 1 출제] 교착 상태(Deadlock) 발생의 필요 조건이 아닌 것은? (부정형)

  • ① 상호 배제(Mutual Exclusion)
  • ② 점유와 대기(Hold and Wait)
  • ③ 환형 대기(Circular Wait)
  • ④ 선점(Preemption)
정답 및 해설 보기

정답: ④ 선점(Preemption)

선지 판정 설명
① 상호 배제 O 4조건
② 점유와 대기 O 4조건
③ 환형 대기 O 4조건
선점 X '선점'이 4조건 — '선점'은 오히려 교착 해결 방향

🔑 ★상점비환★ + '비' 한 글자 함정. '선점' 보이면 즉시 소거.

[기출 2 출제] 교착 상태 해결 중, 사전에 시스템을 제어하여 은행원 알고리즘(Banker's Algorithm)이 사용되는 기법은? (설명→기법)

  • ① 예방(Prevention)
  • ② 회피(Avoidance)
  • ③ 발견(Detection)
  • ④ 회복(Recovery)
정답 및 해설 보기

정답: ② 회피(Avoidance)

선지 판정 설명
① 예방 X 4조건 원천 부정 (은행원과 무관)
회피 O 안전 상태 유지·은행원 알고리즘
③ 발견(탐지) X 자원 할당 그래프 사후 감시
④ 회복 X 사후 해소 (제거·선점·체크포인트)

🔑 은행원 = 회피 = 다익스트라 = 안전 상태. '예방' 함정이 매년 1순위.

[기출 3 출제] 주기억장치 배치 전략 중 가용 공간 가운데 가장 작은 공간에 배치하는 전략은? (설명→용어)

  • ① First Fit
  • ② Best Fit
  • ③ Worst Fit
  • ④ Last Fit
정답 및 해설 보기

정답: ② Best Fit (최적 적합)

선지 판정 설명
① First Fit X 첫 번째로 찾은 가용 공간
Best Fit O 가장 딱 맞는(들어갈 수 있는 것 중 가장 작은) 공간
③ Worst Fit X 가장 큰 가용 공간
④ Last Fit X 존재하지 않는 전략 (함정)

🔑 '가장 작은' = 들어갈 수 있는 공간 중 낭비 최소. Last Fit은 존재하지 않음.

[기출 4 출제] 분할된 주기억장치에 프로세스를 할당하고 남은 빈 공간이 너무 작아 메모리가 낭비되는 현상은? (설명→용어)

  • ① 세그먼테이션
  • ② 스래싱
  • ③ 단편화
  • ④ 스와핑
정답 및 해설 보기

정답: ③ 단편화(Fragmentation)

선지 판정 설명
① 세그먼테이션 X 가변 논리 단위 분할 — 분산 할당 기법
② 스래싱 X 페이지 부재 과다 → CPU 이용률 급감
단편화 O 할당 후 남은 빈 공간이 너무 작아 낭비
④ 스와핑 X 프로세스를 보조기억장치와 전체 교환

🔑 빈 공간 낭비=단편화 / 페이지 과다=스래싱 / 전체 교환=스와핑 / 논리 분할=세그먼테이션.

[기출 5 출제] 교착 상태 해결 전략과 설명이 잘못 짝지어진 것은? (짝짓기)

  • ① 예방 — 필요 조건 중 하나를 부정하여 발생을 막음
  • ② 회피 — 안전 상태에서만 자원을 할당
  • ③ 탐지 — 자원 할당 그래프를 이용하여 교착 확인
  • ④ 회복 — 교착 상태의 4대 조건을 모두 제거하여 해결
정답 및 해설 보기

정답: ④ — '4대 조건 모두 제거'는 예방의 영역

선지 판정 설명
① 예방 — 조건 부정 O 정확
② 회피 — 안전 상태 O 정확
③ 탐지 — 할당 그래프 O 정확
회복 — 4대 조건 제거 X 회복은 사후 해소(제거·선점·체크포인트). '조건 부정'은 예방

🔑 예방=조건 부정 / 회피=안전 상태 / 탐지=사이클 / 복구=사후 해소.

[기출 6 출제] 교착 상태 해결 중 '회피' 기법에 해당하는 것은? (설명→기법)

  • ① 자원 할당 시 시간을 제한하고 미완료 시 회수
  • ② 사용 중인 자원을 다른 프로세스가 선점
  • ③ 시작 시 필요한 모든 자원을 한 번에 할당
  • ④ 요구 자원 수가 현재 사용 가능한 수보다 작을 때에만 할당
정답 및 해설 보기

정답: ④ — 요구량 ≤ 사용 가능량 = 회피(은행원 원리)

선지 판정 해당 전략
① 시간 제한·회수 X 탐지/회복 (타임아웃 기반)
② 자원 선점 허용 X 예방 (비선점 부정)
③ 모든 자원 한꺼번에 X 예방 (점유와 대기 부정)
요구량 ≤ 가용량 O 회피 (은행원 원리)

🔑 조건 부정 = 예방 / 안전 판단 = 회피. ③(모든 자원 한꺼번에)은 점유와 대기 부정이라 예방.


한 장 요약

주제 암기·핵심 결정 카드
교착 4조건 ★상점비환★ 모두 동시 만족·'선점'은 함정(비선점)
해결 4전략 ★예회탐복★ 예회=사전 / 탐복=사후
회피 1순위 은행원 = 회피 예방 ❌·다익스트라·안전 상태
탐지/복구 사이클=탐지 / 제거·선점·체크포인트=복구 세마포어 P=대기·V=해제(4전략 밖)
단편화 분별 ★고내가외★ 고정→내부 / 가변→외부
배치 3전략 최초(빠름)·최적(효율)·최악(큰 자투리) Last Fit은 함정
단편화 해결 통합(인접·자동) + 압축(전체·비쌈) 둘 다 외부 해결
교착 용어 한 줄 메모리 용어 한 줄
교착 상태 둘 이상 서로 자원 무한 대기 내부 단편화 영역 안쪽 빈 공간(고정)
환형 대기 원형 사이클 대기 외부 단편화 영역 바깥쪽 흩어진 빈 공간(가변)
은행원 안전 상태에서만 할당=회피 오버레이 프로그램 일부 번갈아
자원 할당 그래프 사이클=교착=탐지 스와핑 프로세스 전체 교환
기아 우선순위 밀림=Aging 해소 최초/최적/최악 빠름 / 효율 / 큰 자투리
세마포어 P(대기)+V(해제) 통합/압축 인접 합침 / 전체 이동
함정 6쌍 정답
4조건에 '선점' 포함 '선점'이 4조건
은행원 = '예방' 회피(Avoidance)
내부 단편화 = '가변' 고정(★고내가외★)
외부 단편화 = '고정' 가변(★고내가외★)
Best Fit = '가장 큰' 가장 작은(딱 맞는)
4조건 '하나만' 성립 시 교착 모두 동시 만족 시에만

🎯 합격 한 끗: ★상점비환★(4조건·모두 동시) + ★예회탐복★(예회 사전·탐복 사후) + ★고내가외★(고정→내부 / 가변→외부) 세 두음 + 은행원=회피 + 배치 3전략(최초 빠름·최적 효율·최악 큰 자투리). 35강 출제 1~2문항은 거의 모두 교착 4조건·은행원 분류·단편화 분별 세 영역에서 나온다. ★고내가외★는 36강 ★페고내·세가외★(페이징=고정→내부 / 세그먼테이션=가변→외부)로 자연 확장된다.

전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.