컴퓨터시스템기사 필기 03 — 기억장치 관리 (가상기억장치·페이지교체·교착상태)
컴퓨터시스템기사 필기 03 — 기억장치 관리 (가상기억장치·페이지교체·교착상태)
1과목 [1-2] 운영체제 주요기능 ② 기억장치 관리 파트입니다.
페이지 교체 알고리즘 계산과 교착상태 4조건은 매 회차 출제돼요.
주기억장치 관리
단편화 (Fragmentation)
내부 단편화 — 할당된 공간이 실제보다 커서 낭비되는 공간
페이징 기법에서 발생
외부 단편화 — 할당되지 않은 공간이 흩어져 있어 사용 못 하는 현상
세그멘테이션 기법에서 발생
메모리 할당 방법 ⭐
최초 적합(First Fit) — 첫 번째로 충분한 공간에 할당 (속도 빠름)
최적 적합(Best Fit) — 가장 작은 여유 공간에 할당 (외부단편화 최소)
최악 적합(Worst Fit) — 가장 큰 여유 공간에 할당 (큰 공간 분할)
기출 문제
Q. 메모리 공간 100KB, 200KB, 300KB가 있을 때, 150KB 프로세스를 Best Fit으로 할당하면?
A. 150KB보다 크면서 가장 작은 공간인 200KB에 할당
가상기억장치
보조기억장치를 마치 주기억장치처럼 사용하는 기법이에요.
페이징 (Paging) ⭐⭐
고정 크기(페이지)로 분할
내부 단편화 발생
페이지 테이블로 주소 변환
주소 변환:
논리 주소 = 페이지 번호(p) + 페이지 오프셋(d)
물리 주소 = 프레임 번호 × 페이지 크기 + 오프셋
세그멘테이션 (Segmentation)
가변 크기(세그먼트)로 분할
외부 단편화 발생
세그먼트 테이블로 주소 변환
페이지 교체 알고리즘 ⭐⭐⭐
페이지 부재(Page Fault) 발생 시 교체할 페이지를 선택하는 알고리즘이에요.
| 알고리즘 | 설명 | 특징 |
| OPT | 앞으로 가장 오랫동안 사용 안 할 페이지 교체 | 최적, 실제 구현 불가 |
| FIFO | 가장 먼저 들어온 페이지 교체 | 구현 단순, Belady 이상 발생 |
| LRU | 가장 오랫동안 사용 안 한 페이지 교체 | 실용적, 가장 많이 사용 |
| LFU | 사용 빈도가 가장 낮은 페이지 교체 | 빈도 계산 오버헤드 |
| NUR | 최근 사용 안 한 페이지 교체 (참조비트/변경비트) | LRU 근사 |
Belady 이상 현상:
FIFO에서 프레임 수를 늘려도 페이지 부재가 오히려 증가하는 현상
OPT, LRU에서는 발생하지 않음
페이지 교체 계산 예시
Q. 참조 열: 1,2,3,4,1,2,5,1,2,3,4,5 / 프레임 3개 / FIFO
A.
1 → [1] 부재
2 → [1,2] 부재
3 → [1,2,3] 부재
4 → [4,2,3] 부재 (1 교체)
1 → [4,1,3] 부재 (2 교체)
2 → [4,1,2] 부재 (3 교체)
5 → [5,1,2] 부재 (4 교체)
1 → [5,1,2] 히트
2 → [5,1,2] 히트
3 → [5,3,2] 부재 (1 교체)
4 → [5,3,4] 부재 (2 교체)
5 → [5,3,4] 히트
→ 총 페이지 부재 횟수: 9회
스레싱 (Thrashing) ⭐⭐⭐
정의: 프로세스 실행보다 페이지 교체에 더 많은 시간을 소비하는 현상
원인: 프로세스 수 증가 → 프레임 부족 → 페이지 부재 급증
해결: 워킹셋(Working Set) 모델, 페이지 부재 빈도(PFF) 조절
워킹셋 (Working Set):
프로세스가 일정 시간 동안 참조하는 페이지들의 집합
워킹셋만큼 프레임을 보장해주면 스레싱 방지 가능
기출 문제
Q. 스레싱(Thrashing) 현상이 발생하는 원인은?
A. 다중 프로그래밍 정도가 높아지면서 각 프로세스에 할당된 프레임 수가 줄어들어 페이지 부재가 빈번하게 발생하고, CPU가 실제 작업보다 페이지 교체에 더 많은 시간을 소비하게 되기 때문이다.
Q. Belady 이상 현상이란?
A. FIFO 페이지 교체 알고리즘에서 프레임 수를 늘렸는데도 페이지 부재 횟수가 오히려 증가하는 현상이다.
교착상태 (DeadLock) ⭐⭐⭐
교착상태 4조건 (모두 성립해야 발생)
1. 상호배제 (Mutual Exclusion)
→ 한 자원은 한 번에 한 프로세스만 사용 가능
2. 점유대기 (Hold and Wait)
→ 자원을 점유한 채 다른 자원을 기다림
3. 비선점 (Non-preemption)
→ 강제로 자원을 빼앗을 수 없음
4. 환형대기 (Circular Wait)
→ 프로세스가 원형으로 서로의 자원을 기다림
교착상태 해결 방법
예방 (Prevention)
→ 4조건 중 하나를 원천 차단
→ 자원 낭비 심함
회피 (Avoidance)
→ 은행가 알고리즘으로 안전 상태 유지
→ 최대 자원 요구량 사전 파악 필요
탐지 (Detection)
→ 교착상태 발생 허용 후 탐지·복구
→ 자원 할당 그래프 사용
복구 (Recovery)
→ 프로세스 종료 또는 자원 선점
은행가 알고리즘 (Banker's Algorithm):
안전 순서열이 존재하면 자원 할당
안전 상태 = 교착상태 없이 모든 프로세스 완료 가능
기출 문제
Q. 교착상태 4조건을 모두 서술하시오.
A. 상호배제, 점유대기, 비선점, 환형대기
Q. 교착상태 예방 기법의 단점은?
A. 4가지 조건 중 하나를 제거하기 위해 자원 이용률이 저하되고 처리율이 감소하는 등 자원 낭비가 심하다.
파일시스템
파일 구조 및 디렉토리
순차 파일 — 레코드를 순서대로 저장, 순차 접근
인덱스 순차 파일 — 인덱스로 직접 접근 가능
직접 파일 — 해시 함수로 주소 계산, 직접 접근
디스크 스케줄링 ⭐
FCFS — 도착 순서대로 처리
SSTF — 현재 헤드에서 가장 가까운 트랙 먼저
→ 평균 탐색시간 최소, 기아 현상 발생
SCAN — 한 방향으로 이동하며 처리 후 반대 방향
C-SCAN — 한 방향으로만 처리 (반대 방향 이동 시 처리 안 함)
기출 문제
Q. SSTF 디스크 스케줄링의 단점은?
A. 헤드 근처의 요청이 계속 처리되어 멀리 있는 트랙은 무한정 대기하는 기아(Starvation) 현상이 발생할 수 있다.
💡 실무에서는?
인프라 SI 현장에서 서버 메모리 부족으로 스왑(Swap)이 과도하게 발생하는 상황이 정확히 스레싱이에요. 보안 서버나 DB 서버에서 물리 메모리 부족 시 CPU 사용률이 치솟고 서비스가 느려지는데, 이때 vmstat이나 sar 명령어로 si/so(swap in/out) 수치를 확인하는 게 기본 대응이에요. 교착상태도 마찬가지로 실무에서 자주 봐요 — Oracle DB에서 트랜잭션 간 행(row) 잠금이 서로 물리는 DeadLock 상황이 전형적인 사례예요.
핵심 정리
✅ 내부단편화=페이징 / 외부단편화=세그멘테이션
✅ Best Fit=가장 작은 여유공간
✅ OPT>LRU>LFU>FIFO (성능 순)
✅ Belady 이상=FIFO에서 프레임↑→부재↑
✅ 스레싱=페이지교체에 CPU시간 낭비
✅ 교착상태 4조건=상호배제/점유대기/비선점/환형대기
✅ SSTF=평균탐색 최소, 기아 발생
다음 편에서는 시스템SW 아키텍처설계 + 인터페이스구현 (IPC·세마포어·로더·어셈블러)으로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!