컴퓨터과학 챕터 3 약 10분

Ch3. 정보처리기사 — 운영체제 완전 정복

O
OIYO 편집부 기여자
3/6

운영체제(OS)란?

**운영체제(Operating System, OS)**는 컴퓨터 하드웨어와 사용자(응용 프로그램) 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다. 하드웨어 자원을 효율적으로 관리하고, 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공합니다.

대표적인 운영체제: Windows, macOS, Linux, Android, iOS

운영체제의 주요 기능

기능설명
프로세스 관리프로세스 생성·삭제·스케줄링, CPU 할당
메모리 관리주기억장치 할당·회수, 가상 메모리 관리
파일 시스템 관리파일 생성·삭제·접근 권한, 디렉터리 구조
입출력(I/O) 관리장치 드라이버, 인터럽트 처리
보안 및 보호사용자 인증, 자원 접근 제어
네트워킹네트워크 프로토콜 지원, 통신 서비스 제공

운영체제의 유형

  • 일괄 처리 시스템(Batch Processing): 작업을 모아서 한꺼번에 처리. 사용자와의 상호작용 없음
  • 시분할 시스템(Time-Sharing): CPU 시간을 여러 사용자에게 분할하여 동시 사용 지원
  • 실시간 시스템(Real-Time): 정해진 시간 내에 처리 보장 (항공·의료 시스템 등)
  • 분산 시스템(Distributed): 여러 컴퓨터가 네트워크로 연결, 자원 공유
  • 다중 처리기 시스템(Multiprocessor): 여러 CPU가 메모리를 공유하며 병렬 처리

프로세스 (Process)

프로세스 vs 프로그램

구분프로그램(Program)프로세스(Process)
정의디스크에 저장된 실행 가능한 파일 (정적)실행 중인 프로그램 (동적)
상태수동적(Passive)능동적(Active)
자원없음CPU, 메모리, 파일 등 자원 보유

프로세스의 메모리 구조:

┌──────────────┐ 높은 주소
│   스택(Stack) │ ← 함수 호출, 지역 변수 (LIFO, 높은→낮은 주소로 증가)
├──────────────┤
│      ↓       │
│      ↑       │
│    힙(Heap)   │ ← 동적 메모리 할당 (malloc, new)
├──────────────┤
│   데이터(Data)│ ← 전역 변수, 정적 변수
├──────────────┤
│  코드(Code)   │ ← 프로그램 명령어 (텍스트 영역)
└──────────────┘ 낮은 주소

PCB (Process Control Block)

PCB는 운영체제가 각 프로세스를 관리하기 위해 유지하는 자료구조입니다.

PCB에 저장되는 정보:

  • 프로세스 ID(PID): 고유 식별자
  • 프로세스 상태: 현재 상태 (Ready, Running, Waiting 등)
  • 프로그램 카운터(PC): 다음에 실행할 명령어 주소
  • CPU 레지스터: 문맥 교환 시 저장되는 레지스터 값
  • 메모리 관리 정보: 페이지 테이블, 세그먼트 테이블
  • 입출력 상태 정보: 열린 파일 목록
  • 우선순위: 스케줄링에 사용

프로세스 상태 전이 (Process State Transition)

프로세스는 생명주기 동안 다음 5가지 상태를 전이합니다.

               생성(admitted)        디스패치(dispatch)
    New ─────────────────→ Ready ─────────────────→ Running
                              ↑                          │
                              │ 타임아웃(timeout)         │
                              │ 선점(preemption)  ←───────┘

                              │ 입출력 완료(I/O complete)
                           Waiting ←── Running (I/O 요청)

                                              ↓ 종료(exit)
                                          Terminated
상태설명
New프로세스 생성 중
ReadyCPU 할당 대기 (준비 큐에서 대기)
RunningCPU를 점유하여 명령어 실행 중
Waiting (Blocked)I/O 또는 이벤트 완료 대기
Terminated실행 완료 또는 강제 종료

주요 전이:

  • 디스패치(Dispatch): Ready → Running (스케줄러가 CPU 할당)
  • 타임아웃(Timeout): Running → Ready (타임 퀀텀 소진)
  • 블록(Block): Running → Waiting (I/O 요청)
  • 웨이크업(Wake-up): Waiting → Ready (I/O 완료)

프로세스 vs 스레드

**스레드(Thread)**는 프로세스 내의 실행 단위입니다. 프로세스보다 가벼우며, 같은 프로세스 내 스레드들은 메모리(코드·데이터·힙)를 공유합니다.

구분프로세스스레드
자원 공유독립적인 메모리 공간코드·데이터·힙 공유, 스택만 독립
통신IPC 필요 (파이프, 소켓 등)공유 메모리로 직접 통신
생성 비용높음낮음 (가벼움)
문맥 교환느림빠름
안정성독립적 (한 프로세스 장애가 타 프로세스에 영향 없음)한 스레드 장애 시 전체 프로세스 영향 가능

멀티스레딩 장점: CPU 활용률 향상, 응답성 개선, 자원 공유 용이 멀티스레딩 단점: 동기화 문제(경쟁 조건, 교착상태), 디버깅 어려움


CPU 스케줄링

CPU 스케줄링은 준비 큐에 있는 프로세스들 중 어느 것을 CPU에 할당할지 결정하는 과정입니다.

스케줄링 성능 척도

척도설명방향
CPU 이용률CPU가 실제로 작업을 수행하는 비율↑ 높을수록 좋음
처리량(Throughput)단위 시간당 완료된 프로세스 수↑ 높을수록 좋음
응답 시간(Response Time)요청 후 첫 번째 응답까지의 시간↓ 낮을수록 좋음
대기 시간(Waiting Time)준비 큐에서 대기한 총 시간↓ 낮을수록 좋음
반환 시간(Turnaround Time)프로세스 제출부터 완료까지의 시간↓ 낮을수록 좋음

스케줄링 알고리즘

1. FCFS (First Come First Served) — 비선점

도착한 순서대로 CPU를 할당합니다.

  • 장점: 구현이 단순, 공평함
  • 단점: 호위 효과(Convoy Effect) — 긴 프로세스 뒤에 짧은 프로세스들이 오래 대기
프로세스: P1(24ms) → P2(3ms) → P3(3ms) 순서로 도착
대기 시간: P1=0, P2=24, P3=27 → 평균 대기 시간 = 17ms

2. SJF (Shortest Job First) — 비선점

실행 시간이 가장 짧은 프로세스를 먼저 실행합니다.

  • 장점: 평균 대기 시간이 최소 (최적 알고리즘)
  • 단점: 기아(Starvation) 현상 — 긴 프로세스가 무한 대기 가능. 실행 시간 예측 어려움

3. SRTF (Shortest Remaining Time First) — 선점형 SJF

현재 실행 중인 프로세스보다 남은 실행 시간이 짧은 프로세스가 도착하면 선점합니다.

  • 장점: 평균 대기 시간 최소화
  • 단점: 잦은 문맥 교환 오버헤드, 기아 현상

4. 우선순위 스케줄링 (Priority Scheduling)

각 프로세스에 우선순위를 부여하여 높은 우선순위 프로세스 먼저 실행합니다.

  • 선점형·비선점형 모두 가능
  • 단점: 기아 현상 → **에이징(Aging)**으로 해결 (오래 대기할수록 우선순위 증가)

5. 라운드 로빈 (Round Robin, RR) — 선점

각 프로세스에 타임 퀀텀(Time Quantum) 만큼 CPU를 할당, 소진 시 다음 프로세스로 교체합니다.

  • 장점: 공평함, 응답 시간 예측 가능
  • 단점: 타임 퀀텀 설정이 중요 (너무 크면 FCFS와 유사, 너무 작으면 문맥 교환 오버헤드 증가)
  • 시분할 시스템에 적합

6. 다단계 큐 (MLQ, Multilevel Queue)

프로세스를 여러 큐로 분류하고, 각 큐마다 다른 스케줄링 알고리즘을 적용합니다.

큐1 (시스템 프로세스) — 최고 우선순위, RR
큐2 (대화형 프로세스) — RR
큐3 (일괄 처리 프로세스) — FCFS — 최저 우선순위

다단계 피드백 큐(MLFQ): 프로세스가 큐 사이를 이동 가능. CPU 사용량이 많으면 낮은 우선순위 큐로 이동.


메모리 관리

메모리 배치 기법

기법설명문제점
단순 연속 배치메모리를 하나의 큰 블록으로 관리다중 프로그래밍 불가
고정 분할메모리를 고정 크기로 분할내부 단편화(Internal Fragmentation)
가변 분할프로세스 크기에 맞게 동적 분할외부 단편화(External Fragmentation)

단편화 해결: 압축(Compaction, 가변 분할), 페이징/세그멘테이션

메모리 배치 전략:

  • 최초 적합(First Fit): 첫 번째로 충분한 공간 사용 — 빠름
  • 최적 적합(Best Fit): 가장 작은 여유 공간 사용 — 외부 단편화 최소
  • 최악 적합(Worst Fit): 가장 큰 여유 공간 사용 — 큰 여유 공간 남김

페이징 (Paging)

프로세스의 논리 주소 공간을 페이지(Page) 단위로, 물리 메모리를 프레임(Frame) 단위로 분할하여 관리합니다.

  • 논리 주소 = 페이지 번호(p) + 변위(d)
  • 물리 주소 = 프레임 번호(f) + 변위(d)
  • 페이지 테이블: 페이지 번호 → 프레임 번호 매핑
  • 장점: 외부 단편화 없음
  • 단점: 내부 단편화 발생 (마지막 페이지), 페이지 테이블 유지 오버헤드

세그멘테이션 (Segmentation)

프로그램을 논리적 단위(세그먼트) — 코드, 데이터, 스택 — 로 분할합니다.

  • 논리 주소 = 세그먼트 번호(s) + 변위(d)
  • 세그먼트 테이블: 세그먼트 번호 → 물리 주소와 크기(limit) 매핑
  • 장점: 내부 단편화 없음, 논리적 보호 용이
  • 단점: 외부 단편화 발생

가상 메모리 (Virtual Memory)

가상 메모리는 실제 물리 메모리보다 큰 프로그램을 실행할 수 있도록, 보조기억장치(디스크)를 주기억장치처럼 활용하는 기법입니다.

요구 페이징(Demand Paging): 페이지가 실제로 필요할 때만 물리 메모리에 로드합니다.

  • 페이지 폴트(Page Fault): 요청한 페이지가 물리 메모리에 없을 때 발생 → 디스크에서 로드
  • 스래싱(Thrashing): 페이지 폴트가 너무 자주 발생하여 실제 작업보다 페이지 교체에 더 많은 시간을 소비하는 현상

페이지 교체 알고리즘

물리 메모리가 가득 찼을 때 어떤 페이지를 교체할지 결정합니다.

FIFO (First In First Out)

가장 먼저 메모리에 올라온 페이지를 교체합니다.

  • 장점: 구현 단순
  • 단점: 벨레이디 이상(Belady’s Anomaly) — 프레임 수를 늘려도 페이지 폴트가 오히려 증가하는 현상

LRU (Least Recently Used) — 가장 많이 사용

가장 오랫동안 사용되지 않은 페이지를 교체합니다.

  • 장점: 최적 알고리즘에 근접, 실제로 가장 많이 사용
  • 단점: 구현 비용 높음 (참조 시간 기록 필요)

LFU (Least Frequently Used)

참조 횟수가 가장 적은 페이지를 교체합니다.

  • 장점: 자주 사용되는 페이지를 보호
  • 단점: 초반에 많이 사용된 페이지가 나중에 쓸모없어도 남아있음

OPT (Optimal) — 이론상 최적

앞으로 가장 오랫동안 사용되지 않을 페이지를 교체합니다.

  • 장점: 페이지 폴트 최소 (이론적 최적)
  • 단점: 미래 예측 불가 → 실제 구현 불가, 비교 기준으로만 사용
알고리즘특징Belady’s Anomaly
FIFO단순, 가장 오래된 것 교체발생 가능
LRU최근 사용 기준, 실용적없음
LFU사용 빈도 기준없음
OPT미래 기반, 이론적 최적없음

교착상태 (Deadlock)

**교착상태(Deadlock)**는 두 개 이상의 프로세스가 서로 상대방이 점유한 자원을 기다리며 무한 대기하는 상태입니다.

교착상태 발생의 4가지 필요 조건

교착상태가 발생하려면 다음 4가지 조건이 모두 동시에 충족되어야 합니다.

조건설명
상호 배제(Mutual Exclusion)자원은 한 번에 하나의 프로세스만 사용 가능
점유와 대기(Hold and Wait)자원을 점유한 채로 다른 자원을 기다림
비선점(No Preemption)프로세스가 점유한 자원을 강제로 빼앗을 수 없음
순환 대기(Circular Wait)프로세스들이 순환 형태로 서로의 자원을 기다림
암기법: 상점비순 (상호배제·점유대기·비선점·순환대기)

교착상태 해결 방법

1. 예방 (Prevention)

4가지 조건 중 하나를 제거하여 교착상태 자체를 방지합니다.

  • 상호 배제 제거: 모든 자원을 공유 가능하게 → 현실적으로 어려움
  • 점유와 대기 제거: 필요한 모든 자원을 한꺼번에 요청 → 자원 낭비
  • 비선점 제거: 자원을 강제로 회수 가능하게 → 일부 자원에만 적용 가능
  • 순환 대기 제거: 자원에 번호를 부여하고 오름차순으로만 요청 → 구현 가능

2. 회피 (Avoidance)

자원 할당 시 교착상태가 발생하지 않는지 미리 검사합니다.

  • 은행원 알고리즘(Banker’s Algorithm): 안전 상태(Safe State)를 유지하는 할당만 허용
  • 안전 순서(Safe Sequence): 모든 프로세스가 완료될 수 있는 실행 순서가 존재

3. 탐지 (Detection)

교착상태가 발생했는지 주기적으로 검사합니다.

  • 자원 할당 그래프(Resource Allocation Graph): 사이클 존재 여부로 교착상태 탐지
  • Wait-for 그래프: 프로세스 간 대기 관계 그래프

4. 회복 (Recovery)

교착상태 탐지 후 정상 상태로 복구합니다.

  • 프로세스 종료: 교착상태 프로세스를 하나씩 또는 모두 종료
  • 자원 선점: 일부 프로세스의 자원을 강제로 회수하여 다른 프로세스에 할당

핵심 개념 카드

프로세스 상태 전이 ★★★★★ : New → Ready → Running → Waiting/Terminated. 디스패치(Ready→Running), 타임아웃(Running→Ready), 블록(Running→Waiting). 암기 포인트: 준비 큐에서 대기→CPU 받으면 실행→I/O 요청하면 대기

CPU 스케줄링 알고리즘 ★★★★★ : FCFS(도착순·호위효과), SJF(최단작업·기아), RR(타임퀀텀·공평), MLQ(다단계큐). 암기 포인트: 비선점=FCFS/SJF/우선순위, 선점=SRTF/RR

페이지 교체 알고리즘 ★★★★★ : FIFO(오래된 것·벨레이디이상), LRU(최근미사용·실용적), LFU(빈도최소), OPT(이론적최적). 암기 포인트: 실무에서 LRU를 가장 많이 사용

교착상태 4조건 ★★★★★ : 상호배제·점유대기·비선점·순환대기 — 4가지 모두 충족 시 교착상태. 암기 포인트: 상점비순. 예방=조건제거, 회피=은행원알고리즘

페이징 vs 세그멘테이션 ★★★☆☆ : 페이징=고정크기(내부단편화), 세그멘테이션=논리단위(외부단편화). 암기 포인트: 페이징은 크기 고정→내부단편화, 세그멘테이션은 논리 분할→외부단편화


실전 퀴즈

Q1. 다음 중 CPU 스케줄링 알고리즘 중 선점 방식이 아닌 것은? ① Round Robin ② SRTF ③ SJF ④ 다단계 피드백 큐

정답: ③ SJF(Shortest Job First)는 비선점 방식입니다. 선점형 SJF는 SRTF(Shortest Remaining Time First)라고 합니다. RR과 MLFQ는 대표적인 선점 방식 알고리즘입니다.

Q2. 교착상태 발생의 4가지 필요 조건을 모두 쓰시오.

정답: ① 상호 배제(Mutual Exclusion) ② 점유와 대기(Hold and Wait) ③ 비선점(No Preemption) ④ 순환 대기(Circular Wait). 교착상태는 이 4가지 조건이 동시에 충족될 때만 발생하므로, 하나라도 제거하면 교착상태를 예방할 수 있습니다.

Q3. 페이지 교체 알고리즘 중 프레임 수를 늘렸음에도 페이지 폴트 수가 오히려 증가하는 이상 현상을 무엇이라 하는가?

정답: 벨레이디 이상(Belady’s Anomaly). FIFO 알고리즘에서 발생하는 현상으로, LRU·OPT 알고리즘에서는 발생하지 않습니다. 스택 알고리즘(Stack Algorithm) 속성을 가진 알고리즘은 이 이상 현상이 발생하지 않습니다.

Q4. 다음 중 프로세스와 스레드에 대한 설명으로 옳지 않은 것은? ① 같은 프로세스의 스레드들은 코드·데이터·힙 영역을 공유한다. ② 프로세스 간 통신보다 스레드 간 통신이 더 효율적이다. ③ 한 스레드의 오류가 다른 스레드에 영향을 줄 수 없다. ④ 스레드는 프로세스보다 생성 비용이 낮다.

정답: ③ 같은 프로세스 내 스레드들은 메모리를 공유하기 때문에, 한 스레드에서 오류(예: 잘못된 메모리 접근)가 발생하면 전체 프로세스가 영향을 받을 수 있습니다. 이는 프로세스 간 격리와의 차이점입니다.

Q5. 가상 메모리에서 프로세스가 실제로 사용하는 메모리 페이지보다 물리 프레임이 부족하여, 페이지 교체에 대부분의 시간을 소비하는 현상은?

정답: 스래싱(Thrashing). 프로세스에 할당된 프레임 수가 너무 적을 때 발생합니다. 해결책으로는 워킹 셋(Working Set) 모델 — 프로세스가 일정 시간 동안 참조하는 페이지 집합 — 을 활용하여 충분한 프레임을 보장하거나, 다중 프로그래밍 정도(MPD)를 줄이는 방법이 있습니다.

O

OIYO 편집부

Content Editor

지식 인큐베이터이자 전문 콘텐츠 크리에이터. 경영, 경제, 법률 및 실생활에 유용한 실무/자격증 중심의 깊이 있는 정보를 연구하고 공유합니다.