응용정보기술자시험 과목 A #9 — OS·가상기억·교착상태

응용정보기술자시험 과목 A에 필요한 프로세스·스레드와 상태 전이, 라운드 로빈 스케줄링, 가상기억과 FIFO·LRU 페이지 교체, 스래싱, 교착상태와 안전 상태를 트레이스 예제와 오리지널 연습 문제 5문항으로 익힙니다.

応用情報技術者試験科目Aオペレーティングシステム仮想記憶デッドロック

AP 과목 A 제9편 · 2026년도·실라버스 Ver.7.2 기준의 독립 학습 자료입니다. IPA와 제휴하지 않으며 합격을 보장하지 않습니다. 시리즈 허브 보기

개정일: 2026-10-21 · 출처 확인일: 2026-10-21 · 기준: 2026년 IPA 응용정보기술자시험(AP) 과목 A, 실러버스 Ver.7.2 면책: 이 글은 Motitory Labs가 독자적으로 작성한 학습 자료이며, IPA(정보처리추진기구)와 무관하고 IPA의 승인·보증을 받지 않았습니다. 시험 범위·형식·실러버스는 변경될 수 있으므로 응시 전 반드시 IPA 공식 사이트에서 최신 정보를 확인하세요. 수록된 문제는 모두 이 글을 위해 새로 만든 오리지널 문제이며, 기출문제를 옮겨 온 것이 아닙니다.


학습 인덱스

  1. 범위와 공식 실러버스 위치
  2. 프로그램·프로세스·스레드
  3. 프로세스 상태 전이
  4. 스케줄링과 라운드 로빈 트레이스
  5. 가상기억과 페이징
  6. FIFO·LRU 페이지 교체 트레이스
  7. 스래싱
  8. 교착상태(데드락)
  9. 용어표 (KO/JA/EN)
  10. 퀵 시트
  11. 자주 하는 실수
  12. 오리지널 연습문제 5문항
  13. 셀프 체크
  14. 1·3·7일 복습 계획
  15. 공식 출처·실러버스 매핑

1. 범위와 공식 실러버스 위치

이번 회차는 실러버스 Ver.7.2 「대분류 2: 컴퓨터 시스템 / 중분류 5: 소프트웨어 / 1. 운영체제」 중 다음 항목을 다룹니다(정확한 매핑은 15장).

  • (2) OS의 기능과 구성 — 프로세스 관리, 가상기억 관리, 다중 프로그래밍
  • (4)① 태스크와 상태 전이 — 프로세스, 스레드, 실행 가능/실행/대기 상태, 디스패처
  • (4)② 다중 프로그래밍과 스케줄링 — FCFS, SJF, 우선순위, 라운드 로빈, 타임 퀀텀, 리소스 스타베이션, 배타 제어
  • (7)② 가상기억 관리 — DAT, TLB, 페이지 폴트, 페이지 인/아웃, 디맨드 페이징, LRU, FIFO, 스래싱, 워킹 셋

교착상태는 실러버스 용어 예에 직접 나열되어 있지 않으며, (4)② 「동기 제어·배타 제어」 범위에서 파생되는 자원 할당 문제로 다룹니다. 파일 시스템, I/O, 분산 OS, DB 트랜잭션 교착상태, 특정 커널 구현은 이번 범위 밖입니다.


2. 프로그램·프로세스·스레드

구분 의미 핵심
프로그램 디스크 등에 저장된 명령과 데이터의 집합 정적인 “실행 파일”
프로세스 실행 중인 프로그램의 인스턴스 자신의 주소 공간과 자원(열린 파일 등)을 OS로부터 할당받는 단위
스레드 프로세스 안의 실행 흐름 단위(경량 프로세스) CPU 스케줄링의 실행 단위가 되는 경우가 많음
  • 같은 프로세스 안의 스레드는 일반적으로 주소 공간(코드·데이터·힙)과 열린 파일 등의 자원을 공유합니다.
  • 반면 각 스레드는 자신의 프로그램 카운터, 레지스터 문맥, 스택을 가집니다.
  • 메모리를 공유하므로 생성·전환 비용이 프로세스보다 대체로 작지만, 공유 데이터를 동시에 갱신하면 경쟁 상태가 생기므로 배타 제어(뮤텍스, 세마포어 등)와 동기화는 여전히 필요합니다.
  • 스레드 구현 방식(사용자 수준/커널 수준), 스케줄링 단위는 OS마다 다르므로 “항상 ○○하다”는 단정은 피하세요.

3. 프로세스 상태 전이

기본 3상태 모델:

          디스패치
  실행 가능 ─────────▶ 실행
 (Ready)  ◀───────── (Running)
     ▲     선점/타임 슬라이스 만료   │
     │                              │ I/O 요구·이벤트 대기
     │       이벤트 완료             ▼
     └──────────────────────── 대기 (Waiting / Blocked)
  • 디스패치(dispatch): 디스패처가 실행 가능 큐에서 하나를 골라 CPU를 할당 → 실행 상태.
  • 선점(preemption): 타임 퀀텀 만료나 더 높은 우선순위 태스크 등장으로 실행 중인 태스크가 CPU를 빼앗김 → 실행 가능 상태로 돌아감(대기 상태가 아님).
  • 대기(블록): I/O 완료 등 이벤트를 기다리는 상태. CPU가 비어 있어도 실행할 수 없습니다.
  • 대기 → 실행 가능: 이벤트가 완료되면 곧바로 실행되는 것이 아니라 실행 가능 큐로 돌아가 다시 디스패치를 기다립니다. 즉 “대기”는 “실행 가능”이 아니며, 대기 → 실행으로 직접 가는 전이는 기본 모델에 없습니다.

4. 스케줄링과 라운드 로빈 트레이스

방식 선점 선택 기준 특징·위험
FCFS(선착순) 비선점 도착 순 단순. 긴 작업 뒤에서 짧은 작업이 오래 기다리는 호위 효과
SJF(비선점) 비선점 남은/예상 CPU 버스트가 가장 짧은 것 평균 대기시간을 줄이기 쉬움. 긴 작업은 스타베이션 위험. 버스트 길이 예측이 필요
우선순위 선점/비선점 모두 가능 우선순위 낮은 우선순위가 스타베이션 위험 → 에이징(기다린 시간에 따라 우선순위를 올림)으로 완화
라운드 로빈(RR) 선점 도착 순 + 타임 퀀텀 응답성이 공평. 퀀텀이 너무 작으면 문맥 교환 오버헤드 증가, 너무 크면 FCFS에 가까워짐

트레이스할 때 반드시 명시할 조건: 도착 시각, CPU 버스트, 문맥 교환 비용, 동시 도착/동률 시 처리 순서, 타임 퀀텀, 초기 실행 가능 큐. 조건이 다르면 답이 달라집니다.

공식: 반환시간(turnaround) = 완료 시각 − 도착 시각, 대기시간 = 반환시간 − CPU 버스트(I/O가 없을 때).

필수 트레이스: RR, 퀀텀 = 2

조건: P1·P2·P3 모두 t=0에 P1→P2→P3 순으로 도착, CPU 버스트 5/3/1, 타임 퀀텀 2, 문맥 교환 비용 0, I/O 없음, 새 도착 없음. 퀀텀을 다 쓰고도 남은 프로세스는 큐 맨 뒤로 갑니다.

시각 사건 실행 실행 후 남은 버스트 실행 가능 큐(앞→뒤), 구간 종료 후
0 초기 큐 [P1, P2, P3] P1 0–2 P1=3 [P2, P3, P1]
2 P1 선점 → 뒤로 P2 2–4 P2=1 [P3, P1, P2]
4 P2 선점 → 뒤로 P3 4–5 P3=0 (완료 t=5) [P1, P2]
5 P3 완료(퀀텀 전 종료) P1 5–7 P1=1 [P2, P1]
7 P1 선점 → 뒤로 P2 7–8 P2=0 (완료 t=8) [P1]
8 P2 완료 P1 8–9 P1=0 (완료 t=9) []

간트 차트: P1 0–2 | P2 2–4 | P3 4–5 | P1 5–7 | P2 7–8 | P1 8–9

프로세스 버스트 완료 반환시간 대기시간(반환−버스트)
P1 5 9 9 4
P2 3 8 8 5
P3 1 5 5 4
합계/평균 22 / 7.33 13 / 13/3 ≈ 4.33

참고: 같은 조건의 FCFS도 평균 대기시간이 (0+5+8)/3 = 13/3으로 우연히 같습니다. 평균값 하나만으로 방식을 판별하지 말고 타임라인으로 확인하세요. 비선점 SJF라면 P3→P2→P1 순서로 실행되어 대기시간 P1/P2/P3 = 4/1/0, 평균 5/3 ≈ 1.67입니다.


5. 가상기억과 페이징

  • 가상 페이지 / 페이지 프레임: 가상 주소 공간을 고정 크기 페이지로, 실기억을 같은 크기의 페이지 프레임으로 나눕니다.
  • 페이지 테이블과 주소 변환(DAT): 가상 주소 = (페이지 번호, 페이지 내 오프셋). 페이지 테이블에서 페이지 번호 → 프레임 번호를 찾아 오프셋을 붙여 실주소를 만듭니다. 하드웨어(MMU)가 동적으로 수행합니다.
  • TLB: 최근 사용된 주소 변환 결과(페이지 번호→프레임 번호)를 저장하는 캐시입니다. 데이터나 페이지 내용 자체를 저장하는 캐시가 아닙니다. TLB 미스는 페이지 테이블을 참조하면 되며, 페이지 폴트와 다른 개념입니다.
  • 디맨드 페이징: 필요해진 시점(참조 시)에 페이지를 실기억으로 읽어 들입니다.
  • 페이지 폴트: 현재 명령이 참조한 페이지가 실기억에 없을 때 발생하는 **동기적 프로세서 예외(fault)**이며, 비동기 하드웨어 인터럽트와 다릅니다. OS의 예외 처리기가 보조기억에서 해당 페이지를 읽어 옵니다(페이지 인). 빈 프레임이 없으면 교체 대상을 선택해 축출합니다.
  • 더티 페이지 주의: 축출 대상이 메모리에 올라온 뒤 수정된(dirty) 페이지라면 보조기억에 다시 쓰는 페이지 아웃(write-back)이 필요하지만, 수정되지 않은 페이지는 보조기억에 유효한 복사본이 있으면 쓰기 없이 버릴 수 있습니다. 따라서 “축출할 때마다 반드시 페이지 아웃 쓰기가 발생한다”는 단정은 부정확합니다.

FIFO vs LRU

방식 교체 대상 히트 시
FIFO 가장 먼저 적재된 페이지 적재 순서 변하지 않음
LRU 가장 오랫동안 참조되지 않은 페이지 그 페이지의 최근 참조 시각이 갱신됨

LRU가 많은 참조 패턴에서 FIFO보다 폴트가 적은 경향이 있지만 항상 그렇다고 보장되지는 않습니다. 결과는 참조열과 프레임 수에 달려 있습니다.


6. FIFO·LRU 페이지 교체 트레이스

조건: 프레임 3개(초기 모두 비어 있음), 참조열 1, 2, 3, 1, 4, 1, 2, 5, 프리페치 없음, 한 번에 한 참조, FIFO는 가장 먼저 적재된 페이지를 결정적으로 교체, LRU는 정확히 가장 오래전에 참조된 페이지를 교체(동률 없음). 빈 프레임이 있으면 교체 없이 채웁니다. 프레임 열 순서는 슬롯 위치(교체된 슬롯에 새 페이지)입니다.

FIFO

# 참조 결과 교체 프레임 [슬롯1, 슬롯2, 슬롯3] 적재 순서(오래된→새)
1 1 폴트 – [1, -, -] 1
2 2 폴트 – [1, 2, -] 1, 2
3 3 폴트 – [1, 2, 3] 1, 2, 3
4 1 히트 – [1, 2, 3] (변화 없음) 1, 2, 3 (변화 없음)
5 4 폴트 1 [4, 2, 3] 2, 3, 4
6 1 폴트 2 [4, 1, 3] 3, 4, 1
7 2 폴트 3 [4, 1, 2] 4, 1, 2
8 5 폴트 4 [5, 1, 2] 1, 2, 5

FIFO 페이지 폴트 = 7회 (히트는 4번째 참조 1회뿐).

LRU

# 참조 결과 교체 프레임 [슬롯1, 슬롯2, 슬롯3] 최근성(가장 오래됨→최근)
1 1 폴트 – [1, -, -] 1
2 2 폴트 – [1, 2, -] 1, 2
3 3 폴트 – [1, 2, 3] 1, 2, 3
4 1 히트 – [1, 2, 3] 2, 3, 1 (1이 갱신)
5 4 폴트 2 [1, 4, 3] 3, 1, 4
6 1 히트 – [1, 4, 3] 3, 4, 1
7 2 폴트 3 [1, 4, 2] 4, 1, 2
8 5 폴트 4 [1, 5, 2] 1, 2, 5

LRU 페이지 폴트 = 6회. 교체는 참조 4에서 2, 참조 2에서 3, 참조 5에서 4. 최종 프레임 [1, 5, 2].

차이의 원인: 4번째 참조(1의 히트)가 FIFO에서는 아무것도 바꾸지 않아 다음 폴트에서 1이 쫓겨나지만, LRU에서는 1의 최근성이 갱신되어 1이 살아남고 6번째 참조가 히트가 됩니다.


7. 스래싱

  • 정의: 페이지 폴트와 페이지 인/아웃이 과도하게 계속되어 CPU가 유용한 처리보다 페이징 대기에 시간을 소비하고, 처리량과 CPU 이용률이 급격히 떨어지는 현상.
  • 원인: 다중 프로그래밍 정도가 높아 각 프로세스에 할당된 프레임이 활발히 쓰이는 워킹 셋보다 부족할 때.
  • 악순환: CPU 이용률이 낮아 보인다고 프로세스를 더 투입하면 프레임이 더 부족해져 상황이 악화됩니다. 프로세스를 늘리는 것은 해결책이 아닙니다.
  • 대책: 다중 프로그래밍 정도를 낮춤(일부 프로세스 스왑 아웃·일시 정지), 워킹 셋을 담을 만큼 프레임 할당, 워킹 셋 방식이나 페이지 폴트 빈도(PFF) 제어로 할당량 조정, 실기억 증설.
  • 교체 알고리즘만 바꾼다고 스래싱이 반드시 해결되지는 않습니다. 근본 원인은 프레임 부족입니다.

8. 교착상태(데드락)

8.1 네 가지 필요조건(Coffman 조건)

  1. 상호 배제(mutual exclusion): 자원을 한 번에 하나의 프로세스만 사용.
  2. 점유 대기(hold and wait): 자원을 보유한 채 다른 자원을 기다림.
  3. 비선점(no preemption): 보유 자원을 강제로 빼앗을 수 없음.
  4. 순환 대기(circular wait): 프로세스들이 서로의 자원을 원형으로 기다림.

네 조건은 모두 동시에 성립해야 교착상태가 일어날 수 있는 필요조건입니다. 따라서 하나라도 구조적으로 성립하지 않게 하면 교착상태는 발생할 수 없습니다. 반대로 시스템이 네 조건을 모두 허용한다고 해서 교착상태가 반드시 발생하는 것은 아닙니다. 그것은 발생 가능성이 남아 있다는 뜻일 뿐입니다.

8.2 세 가지 대응 전략 — 서로 다른 개념

전략 아이디어 예 비용·전제
예방(prevention) 네 조건 중 하나를 구조적으로 성립 불가능하게 설계 모든 자원에 전역 순서 번호를 매겨 오름차순으로만 획득 → 순환 대기 제거. 필요한 자원을 한 번에 모두 요구 → 점유 대기 제거 자원 이용률 저하, 설계 제약
회피(avoidance) 요청마다 할당 후 상태가 안전한지 동적으로 검사해 안전할 때만 허가 은행원 알고리즘 각 프로세스의 최대 요구량을 미리 신고해야 함. 검사 오버헤드
탐지·회복(detection & recovery) 교착상태 발생을 허용하고, 대기 그래프/자원 할당 그래프로 탐지한 뒤 회복 프로세스 강제 종료, 롤백, 자원 선점(가능한 경우) 탐지 주기, 회복 시 작업 손실

대기 그래프(wait-for graph)의 주의점: 각 자원 유형이 1개 인스턴스만 있다는 가정 아래에서는 대기 그래프의 순환 = 교착상태입니다. 자원 인스턴스가 여러 개인 경우에는 순환이 있어도 교착상태가 아닐 수 있으므로, 순환만으로는 충분조건이 되지 않고 별도의 탐지 알고리즘이 필요합니다.

8.3 필수 예: 안전 상태 판정(자원 1종, 총 10단위)

프로세스 할당 최대 추가 필요(최대−할당)
P1 3 7 4
P2 2 4 2
P3 2 5 3

할당 합계 7, 현재 가용 = 10 − 7 = 3.

  1. 가용 3 ≥ P2 필요 2 → P2에 할당해 완료, 반환 후 가용 3 + 2 = 5
  2. 가용 5 ≥ P1 필요 4 → P1 완료, 가용 5 + 3 = 8
  3. 가용 8 ≥ P3 필요 3 → P3 완료, 가용 8 + 2 = 10

모든 프로세스가 완료될 수 있는 순서 P2 → P1 → P3(가용 3→5→8→10)이 존재하므로 현재 상태는 안전합니다. 처음에 P1(필요 4 > 가용 3)부터는 시작할 수 없다는 점에 주의하세요.

이것은 현재 상태가 안전하다는 증명일 뿐, 앞으로 어떤 요청을 무조건 허가해도 교착상태가 안 된다는 뜻이 아닙니다. 회피 방식은 이후의 요청마다 다시 안전성을 검사해 불안전 상태로 가는 할당을 보류합니다. 또 불안전 상태가 곧 교착상태인 것도 아닙니다(교착상태 가능성이 배제되지 않는 상태).


9. 용어표 (KO/JA/EN)

한국어 日本語 English
프로세스 プロセス process
스레드(경량 프로세스) スレッド(軽量プロセス) thread (lightweight process)
실행 가능 상태 実行可能状態 ready state
실행 상태 実行状態 running state
대기 상태(블록) 待ち状態 waiting (blocked) state
디스패치 / 디스패처 ディスパッチ / ディスパッチャ dispatch / dispatcher
선점 / 비선점 プリエンプティブ / ノンプリエンプティブ preemptive / non-preemptive
타임 퀀텀(타임 슬라이스) タイムクウォンタム(タイムスライス) time quantum (time slice)
라운드 로빈 ラウンドロビン round robin
선착순 到着順(FCFS) first-come, first-served
최단 작업 우선 SJF(処理時間順) shortest job first
기아(스타베이션) / 에이징 リソーススタベーション / エージング starvation / aging
배타 제어 / 동기 제어 排他制御 / 同期制御 mutual exclusion control / synchronization
문맥 교환 コンテキスト切替え context switch
페이지 / 페이지 프레임 ページ / ページフレーム page / page frame
동적 주소 변환 動的アドレス変換(DAT) dynamic address translation
TLB(주소 변환 버퍼) TLB(アドレス変換バッファ) translation lookaside buffer
페이지 폴트 ページフォールト page fault
페이지 인 / 페이지 아웃 ページイン / ページアウト page-in / page-out
디맨드 페이징 デマンドページング demand paging
페이지 교체 ページリプレースメント(ページ置換え) page replacement
워킹 셋 ワーキングセット working set
스래싱 スラッシング thrashing
교착상태 デッドロック deadlock
상호 배제 / 점유 대기 / 비선점 / 순환 대기 相互排除 / 保持と待機 / 横取り不可 / 循環待ち mutual exclusion / hold and wait / no preemption / circular wait
예방 / 회피 / 탐지·회복 予防 / 回避 / 検出・回復 prevention / avoidance / detection & recovery
안전 상태 / 안전 순서 安全状態 / 安全系列 safe state / safe sequence
은행원 알고리즘 銀行家のアルゴリズム Banker’s algorithm
대기 그래프 待ちグラフ wait-for graph

10. 퀵 시트

  • 스레드: 주소 공간·자원은 (보통) 공유, PC·레지스터·스택은 개별. 공유하므로 배타 제어 필요.
  • 상태: 실행→실행 가능(선점), 실행→대기(I/O), 대기→실행 가능(이벤트 완료), 실행 가능→실행(디스패치). 대기→실행 직행 없음.
  • 반환시간 = 완료 − 도착, 대기시간 = 반환 − 버스트.
  • RR(5/3/1, q=2): 완료 9/8/5, 대기 4/5/4, 평균 13/3 ≈ 4.33.
  • 스타베이션: SJF·우선순위에서 위험 → 에이징.
  • TLB = 주소 변환 캐시(데이터 캐시 아님).
  • FIFO: 히트해도 순서 그대로. LRU: 히트하면 최근성 갱신.
  • 1,2,3,1,4,1,2,5, 3프레임: FIFO 7, LRU 6.
  • 스래싱 → 다중도 낮추기·워킹 셋 확보·PFF. 프로세스 추가는 악화.
  • 교착상태 4조건: 상호 배제·점유 대기·비선점·순환 대기 — 하나라도 깨면 예방.
  • 예방(구조적 차단) ≠ 회피(동적 안전 검사, 최대 요구 신고) ≠ 탐지·회복(사후 처리).
  • 대기 그래프 순환 = 교착상태는 단일 인스턴스 가정일 때만.
  • 안전 예: 가용 3, P2→P1→P3, 3→5→8→10.

11. 자주 하는 실수

  1. 대기 상태 = 실행 가능 상태로 혼동 — 대기 중인 프로세스는 CPU가 비어도 실행할 수 없습니다.
  2. 선점된 프로세스를 대기 상태로 보냄 — 선점 후에는 실행 가능 상태입니다.
  3. RR에서 큐 재배치 생략 — 퀀텀 만료 프로세스는 큐 맨 뒤. 퀀텀보다 짧은 버스트는 일찍 끝나고 즉시 다음이 디스패치됩니다.
  4. 대기시간을 “처음 실행될 때까지 기다린 시간”으로 계산 — 전체 대기시간은 반환 − 버스트입니다(P2는 2가 아니라 5).
  5. TLB를 데이터 캐시나 페이지 저장소로 오해 — TLB는 변환 결과만 저장합니다.
  6. FIFO에서도 히트 시 순서를 갱신 — 그러면 LRU와 같은 계산이 되어 오답이 됩니다.
  7. “LRU는 항상 FIFO보다 폴트가 적다” — 경향일 뿐 보장이 아닙니다.
  8. 스래싱 시 프로세스를 늘려 CPU 이용률을 올리려 함 — 역효과입니다.
  9. 예방·회피·탐지를 같은 뜻으로 사용 — 개입 시점과 전제가 다릅니다.
  10. 다중 인스턴스 자원에서 순환 = 교착상태로 단정 — 단일 인스턴스 가정에서만 성립합니다.
  11. 안전 상태 = 영원히 교착상태 없음으로 해석 — 현재 상태에 대한 판정일 뿐입니다.

12. 오리지널 연습문제 5문항

모두 이 글을 위해 새로 작성한 문제입니다. 기출문제를 사용하지 않았습니다.

문제 1 (라운드 로빈)

프로세스 P1, P2, P3이 시각 0에 P1, P2, P3 순으로 실행 가능 큐에 도착했다. CPU 버스트는 각각 5, 3, 1이다. 타임 퀀텀 2의 라운드 로빈으로 스케줄링하며, 문맥 교환 시간은 0, I/O와 새 도착은 없고, 퀀텀을 다 쓴 프로세스는 큐 맨 뒤로 간다. 다음 중 옳은 것은?

  • ア 완료 순서는 P1 → P2 → P3이다.
  • イ P2의 대기시간은 5이고, 평균 대기시간은 13/3이다.
  • ウ P3은 시각 3에 완료된다.
  • エ 평균 대기시간은 5/3이다.

정답: イ

풀이: 큐 [P1,P2,P3] → P1 0–2(남은 3) → [P2,P3,P1] → P2 2–4(남은 1) → [P3,P1,P2] → P3 4–5 완료 → [P1,P2] → P1 5–7(남은 1) → [P2,P1] → P2 7–8 완료 → [P1] → P1 8–9 완료. 완료 9/8/5, 대기 = 반환 − 버스트 = 4/5/4, 합 13, 평균 13/3 ≈ 4.33.

  • ア: 오답. 실제 완료 순서는 P3(5) → P2(8) → P1(9). P1→P2→P3은 FCFS의 완료 순서입니다.
  • ウ: 오답. P3은 P1·P2가 각각 2씩 실행한 뒤 4–5에 실행되어 시각 5에 완료됩니다.
  • エ: 오답. 5/3은 비선점 SJF(P3→P2→P1, 대기 P1/P2/P3 = 4/1/0)의 평균입니다.

문제 2 (FIFO·LRU)

페이지 프레임 3개(초기 모두 비어 있음)에서 참조열 1, 2, 3, 1, 4, 1, 2, 5를 한 번에 하나씩 처리한다. 프리페치는 없고, FIFO는 가장 먼저 적재된 페이지를, LRU는 가장 오래전에 참조된 페이지를 교체한다(동률 없음). 빈 프레임이 있으면 교체하지 않는다. (FIFO 폴트 수, LRU 폴트 수)의 조합으로 옳은 것은?

  • ア (6, 6)
  • イ (7, 7)
  • ウ (6, 7)
  • エ (7, 6)

정답: エ

풀이: FIFO 상태: [1,-,-] F, [1,2,-] F, [1,2,3] F, 히트(변화 없음), [4,2,3] F(1 교체), [4,1,3] F(2 교체), [4,1,2] F(3 교체), [5,1,2] F(4 교체) → 7회. LRU: 처음 3회 폴트, 참조 1 히트(1 갱신), 4 폴트(2 교체) → [1,4,3], 1 히트, 2 폴트(3 교체) → [1,4,2], 5 폴트(4 교체) → [1,5,2] → 6회.

  • ア: 오답. FIFO에서도 히트 시 순서를 갱신하면(LRU처럼 계산하면) 6이 나옵니다.
  • イ: 오답. LRU에서 히트 시 최근성을 갱신하지 않으면 FIFO와 같은 7이 나옵니다.
  • ウ: 오답. 두 값이 뒤바뀌었습니다.

문제 3 (스래싱)

다중 프로그래밍 환경에서 페이지 폴트가 급증하고 CPU 이용률이 크게 떨어졌다. 각 프로세스에 할당된 페이지 프레임이 워킹 셋보다 부족한 것이 원인으로 판단된다. 가장 적절한 대책은?

  • ア 다중 프로그래밍 정도를 낮추어 각 프로세스의 워킹 셋을 담을 수 있는 프레임을 확보한다.
  • イ CPU 이용률을 높이기 위해 실행할 프로세스 수를 늘린다.
  • ウ TLB 엔트리 수를 늘려 페이지 폴트를 없앤다.
  • エ 페이지 교체 방식을 FIFO에서 LRU로 바꾸면 프레임 부족과 관계없이 반드시 해결된다.

정답: ア

풀이: 스래싱은 프레임이 활발히 쓰이는 페이지 집합(워킹 셋)보다 부족해 페이징이 계속되는 현상입니다. 다중도를 낮추고(일부 프로세스 정지·스왑 아웃) 워킹 셋이나 페이지 폴트 빈도에 기반해 프레임을 배분하는 것이 대책입니다.

  • イ: 오답. 프로세스를 늘리면 프로세스당 프레임이 더 줄어 스래싱이 악화됩니다.
  • ウ: 오답. TLB는 주소 변환 결과의 캐시로, 페이지가 실기억에 없는 페이지 폴트를 없애지 못합니다.
  • エ: 오답. 교체 방식 변경이 도움이 될 수는 있어도 프레임 부족이라는 근본 원인을 “반드시” 해결하지는 못하며, LRU가 항상 우월한 것도 아닙니다.

문제 4 (교착상태 대응 전략)

모든 자원에 전역적인 순서 번호를 매기고, 각 프로세스는 자원을 반드시 번호 오름차순으로만 획득하도록 규칙을 정했다. 이 방법에 대한 설명으로 옳은 것은?

  • ア 할당할 때마다 안전 상태 여부를 검사하는 회피 방식이다.
  • イ 자원의 상호 배제 조건을 성립하지 않게 하는 예방 방식이다.
  • ウ 순환 대기 조건을 성립하지 않게 하는 예방 방식이다.
  • エ 대기 그래프의 순환을 주기적으로 찾아 회복하는 탐지·회복 방식이다.

정답: ウ

풀이: 모두가 오름차순으로만 자원을 요구하면, 대기 관계는 항상 낮은 번호를 가진 쪽이 높은 번호를 기다리는 방향이 되므로 원형 사슬이 만들어질 수 없습니다. 네 필요조건 중 순환 대기를 구조적으로 제거하는 예방입니다.

  • ア: 오답. 회피는 요청마다 동적으로 안전성을 검사하며 최대 요구량 신고가 필요합니다. 순서 규칙은 정적인 설계 제약입니다.
  • イ: 오답. 자원은 여전히 한 번에 하나의 프로세스만 사용하므로 상호 배제는 그대로입니다.
  • エ: 오답. 탐지·회복은 교착상태를 허용한 뒤 사후에 처리합니다. 이 방법은 발생 자체를 막습니다.

문제 5 (안전 상태)

자원 1종류, 총 10단위가 있다. 현재 할당/최대 요구량은 P1 = 3/7, P2 = 2/4, P3 = 2/5이고, 각 프로세스는 최대 요구량까지 받으면 완료 후 보유 자원을 모두 반환한다. 이 상태에 대한 설명으로 옳은 것은?

  • ア 가용 3이 P1의 추가 필요량 4보다 작으므로 불안전 상태이다.
  • イ 안전 상태이며 P1 → P2 → P3이 안전 순서이다.
  • ウ 안전 상태이므로 앞으로 어떤 요청을 허가하더라도 교착상태는 발생하지 않는다.
  • エ 안전 상태이며 P2 → P1 → P3 순으로 완료하면 가용량은 3 → 5 → 8 → 10이 된다.

정답: エ

풀이: 가용 = 10 − (3+2+2) = 3. 필요량 P1 4, P2 2, P3 3. P2(2 ≤ 3) 완료 → 5, P1(4 ≤ 5) 완료 → 8, P3(3 ≤ 8) 완료 → 10. 안전 순서가 존재하므로 안전 상태입니다.

  • ア: 오답. 안전성은 “어떤 순서로든 모두 완료할 수 있는가”로 판정합니다. P1을 먼저 못 해도 P2부터 시작하면 됩니다.
  • イ: 오답. 처음에 P1의 필요량 4 > 가용 3이므로 P1부터 시작할 수 없습니다.
  • ウ: 오답. 안전 상태는 현재 시점의 판정입니다. 이후 검사 없이 요청을 허가하면 불안전 상태가 될 수 있으므로 회피 방식은 매 요청마다 다시 검사합니다.

13. 셀프 체크

  • 프로그램·프로세스·스레드를 구분하고, 스레드가 공유하는 것과 개별로 갖는 것을 말할 수 있다.
  • 선점된 프로세스와 I/O 대기 프로세스가 각각 어느 상태로 가는지 설명할 수 있다.
  • RR(5/3/1, q=2) 트레이스를 큐 상태까지 재현하고 평균 대기시간 13/3을 구할 수 있다.
  • 스타베이션이 생기기 쉬운 방식과 에이징의 역할을 설명할 수 있다.
  • TLB와 페이지 테이블, 페이지 폴트의 관계를 설명할 수 있다.
  • 참조열 1,2,3,1,4,1,2,5에서 FIFO 7, LRU 6을 단계별로 재현할 수 있다.
  • 스래싱의 원인과 대책, 그리고 “프로세스 추가”가 왜 틀렸는지 설명할 수 있다.
  • Coffman 4조건과 예방·회피·탐지의 차이를 예와 함께 말할 수 있다.
  • 대기 그래프 순환이 교착상태를 의미하는 조건을 말할 수 있다.
  • 안전 순서 P2→P1→P3을 구하고, 안전 상태의 의미의 한계를 설명할 수 있다.

14. 1·3·7일 복습 계획

  • 1일 후: 퀵 시트를 보지 않고 RR 타임라인과 FIFO/LRU 표를 백지에 다시 그린다. 문제 1·2를 풀고 숫자를 확인.
  • 3일 후: 상태 전이도와 Coffman 4조건, 예방·회피·탐지 표를 설명하듯 써 본다. 문제 3·4를 풀고 오답 선택지가 왜 틀렸는지 말로 설명.
  • 7일 후: 조건을 바꿔(예: 퀀텀 3, 프레임 4, 가용 2) 직접 트레이스해 본다. 문제 5를 풀고 자주 하는 실수 11개를 다시 점검.

15. 공식 출처·실러버스 매핑

공식 출처: IPA「応用情報技術者試験(レベル3)シラバス Ver.7.2」 URL: https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kq5-att/syllabus_ap_ver7_2.pdf 확인일: 2026-10-21 (PDF 인쇄 페이지 23–24)

이 글의 절 실러버스 Ver.7.2 위치 해당 용어 예
2. 프로그램·프로세스·스레드 대분류2 / 중분류5 / 1. オペレーティングシステム / (4) タスク管理 ① タスクと状態遷移 軽量プロセス, プロセス, スレッド
3. 상태 전이 同 (4)① 実行可能状態, 実行状態, 待ち状態(ディスパッチャの役割)
4. 스케줄링·RR 同 (4)② 多重(マルチ)プログラミング(マルチタスク)とスケジューリング プリエンプティブ, ノンプリエンプティブ, タイムスライス, 優先順, ラウンドロビン, SJF, FCFS, タイムクウォンタム, リソーススタベーション, ディスパッチ
2·8. 동기·배타 제어, 교착상태 同 (4)② (同期制御・排他制御の必要性・実現方法) 排他制御 ※교착상태는 용어 예에 없으며 이 범위에서 파생된 내용
1·5. OS 기능, 가상기억 개요 同 (2) OSの機能と構成 仮想記憶管理, プロセス管理, 多重(マルチ)プログラミング
5–7. 페이징·교체·스래싱 同 (7) 記憶管理 ② 仮想記憶管理 DAT, TLB, ページフォールト, ページイン, ページアウト, デマンドページング, ページリプレースメント, LRU, FIFO, スラッシング, ワーキングセット

다시 한번: 이 자료는 IPA의 승인을 받은 것이 아니며, 시험 제도와 실러버스는 변경될 수 있습니다. 최신 정보는 IPA 공식 사이트에서 확인하세요.

블로그로