정보처리기사 실기에서 운영체제는 매회 빠짐없이 나오는 영역입니다. 특히 CPU 스케줄링 계산 문제교착상태 조건은 반드시 숙지해야 해요. 처음에는 용어가 낯설게 느껴지지만, 핵심 개념 몇 가지를 제대로 잡으면 생각보다 어렵지 않습니다.

1. 프로세스와 스레드

프로세스(Process)란?

프로세스는 실행 중인 프로그램을 의미합니다. 프로그램은 디스크에 저장된 코드일 뿐이지만, 메모리에 올라와서 CPU에 의해 실행되면 프로세스가 됩니다. 프로세스는 자신만의 메모리 공간(코드, 데이터, 힙, 스택)을 가집니다.

프로세스 상태 전이

상태설명전이 조건
생성(New)프로세스가 생성되어 준비 큐 진입을 기다리는 상태생성 → 준비: 승인(Admitted)
준비(Ready)CPU를 할당받기 위해 대기 중인 상태준비 → 실행: 디스패치(Dispatch)
실행(Running)CPU를 할당받아 명령어를 실행 중인 상태실행 → 준비: 타임아웃(Time-out)
대기(Waiting)I/O 작업 등을 기다리며 CPU를 반납한 상태실행 → 대기: I/O 요청 / 대기 → 준비: I/O 완료
종료(Terminated)실행 완료 또는 강제 종료된 상태실행 → 종료: Exit
🎯 시험 포인트
✔ "CPU를 할당받기 위해 기다리는 상태" → 준비(Ready) 상태
✔ "I/O 완료 후 어느 상태로 가는가?" → 준비(Ready) 상태 (실행으로 바로 가지 않음)
✔ 디스패치: 준비 → 실행 전이, 타임아웃/선점: 실행 → 준비 전이

프로세스 vs 스레드

구분프로세스스레드
정의독립적 실행 단위. 자체 메모리 공간 보유프로세스 내 실행 단위. 메모리 공유
메모리각 프로세스는 독립적인 주소 공간 사용코드, 데이터, 힙 영역을 같은 프로세스 내 스레드끼리 공유
통신IPC(파이프, 소켓 등) 사용, 비교적 복잡공유 메모리로 통신, 간단하지만 동기화 문제 발생 가능
전환 비용컨텍스트 스위칭 비용 큼컨텍스트 스위칭 비용 작음
영향한 프로세스 오류가 다른 프로세스에 영향 없음한 스레드 오류가 같은 프로세스 내 전체 스레드에 영향

2. CPU 스케줄링 알고리즘

CPU 스케줄링은 여러 프로세스 중 어떤 것에 CPU를 줄지 결정하는 정책입니다. 실기 시험에서는 각 알고리즘의 특징뿐 아니라 평균 대기 시간을 직접 계산하는 문제도 나옵니다.

스케줄링 알고리즘 비교

알고리즘방식특징선점 여부
FCFS먼저 도착한 순서대로 처리구현 간단. 뒤에 짧은 작업이 와도 앞 작업 끝날 때까지 대기 (호위 효과)비선점
SJF실행 시간이 짧은 작업 우선평균 대기 시간 최소화. 실행 시간 예측 어려움. 기아(Starvation) 발생 가능비선점
SRTF남은 시간이 가장 짧은 작업 선점SJF의 선점 버전. 평균 대기 시간 최소. 잦은 선점으로 오버헤드 증가선점
우선순위우선순위 높은 작업 우선기아 발생 가능 → 에이징(Aging)으로 해결선점/비선점
Round Robin시간 할당량(퀀텀)만큼 돌아가며 처리타임 셰어링 시스템에 적합. 퀀텀 크면 FCFS에 가까워짐선점
다단계 큐여러 준비 큐를 우선순위별로 운영큐 간 이동 불가. 각 큐마다 다른 알고리즘 적용 가능선점
다단계 피드백 큐다단계 큐에서 큐 간 이동 허용에이징 가능. 가장 현실적인 스케줄링 방식선점

FCFS 계산 예시

프로세스 P1(실행 시간 10ms), P2(3ms), P3(5ms)가 순서대로 도착했을 때 FCFS 평균 대기 시간을 구해봅시다.

P1: 대기 0ms → 실행 10ms P2: 대기 10ms → 실행 3ms P3: 대기 13ms → 실행 5ms 평균 대기 시간 = (0 + 10 + 13) / 3 = 7.67ms
🎯 스케줄링 계산 문제 공략법
✔ 간트 차트(Gantt Chart)를 직접 그려서 각 프로세스의 대기 시간 계산
✔ 대기 시간 = 완료 시간 - 도착 시간 - 실행 시간
✔ 반환 시간(Turnaround Time) = 완료 시간 - 도착 시간
✔ Round Robin은 타임 퀀텀 값에 따라 결과가 달라지니 퀀텀을 반드시 확인

3. 교착상태(Deadlock)

교착상태는 두 개 이상의 프로세스가 서로 상대방이 점유한 자원을 기다리며 무한정 대기하는 상태입니다. 실기에서 교착상태 4가지 조건은 반드시 암기해야 합니다.

교착상태 발생 조건 (코프만 조건)

조건설명
상호 배제(Mutual Exclusion)한 번에 한 프로세스만 자원 사용 가능. 다른 프로세스는 대기해야 함
점유와 대기(Hold and Wait)자원을 점유한 프로세스가 추가 자원을 요청하며 대기
비선점(No Preemption)다른 프로세스가 점유한 자원을 강제로 빼앗을 수 없음
순환 대기(Circular Wait)프로세스들이 원형으로 서로의 자원을 기다리는 상태 형성

교착상태 해결 방법

방법설명특징
예방(Prevention)4가지 조건 중 하나를 원천적으로 제거자원 낭비 심함. 실용성 낮음
회피(Avoidance)안전 상태(Safe State)를 유지하며 자원 할당. 은행가 알고리즘자원 요청마다 안전 여부 계산 필요
탐지(Detection)교착상태 발생을 허용하고, 탐지 알고리즘으로 주기적 검사자원 그래프 사이클 확인
회복(Recovery)교착상태 탐지 후 프로세스 종료 또는 자원 선점으로 해결탐지와 함께 사용
🎯 교착상태 빈출 포인트
✔ 4가지 조건 이름 정확히 암기: 상호배제, 점유와 대기, 비선점, 순환 대기
✔ 은행가 알고리즘 → 교착상태 회피에 사용
✔ "교착상태가 발생해도 허용" → 탐지(Detection) 방식
✔ 4조건 중 하나만 제거해도 교착상태는 발생하지 않음

4. 메모리 관리

메모리 할당 방식

방식설명문제점
연속 메모리 할당프로세스를 연속된 메모리 공간에 배치. 단일 분할, 다중 고정 분할, 다중 가변 분할단편화(Fragmentation) 발생
페이징(Paging)물리 메모리를 고정 크기 프레임으로, 논리 메모리를 같은 크기 페이지로 나눔내부 단편화 발생. 외부 단편화 없음
세그멘테이션(Segmentation)논리 주소 공간을 코드, 데이터, 스택 등 의미 있는 단위(세그먼트)로 나눔외부 단편화 발생. 내부 단편화 없음

단편화 비교

구분내부 단편화외부 단편화
발생 원인할당된 메모리 내부에 사용하지 않는 공간 발생할당된 메모리 외부에 자투리 공간이 흩어져 발생
발생 조건고정 크기로 나눌 때가변 크기로 나눌 때
해결책세그멘테이션 사용압축(Compaction), 페이징 사용

가상 메모리

물리 메모리보다 큰 프로그램을 실행할 수 있게 해주는 기법입니다. 필요한 페이지만 물리 메모리에 올리고 나머지는 디스크의 스왑 영역에 저장합니다. 가상 메모리의 핵심은 요구 페이징(Demand Paging)입니다.

💡 페이지 폴트(Page Fault)
프로세스가 참조하려는 페이지가 물리 메모리에 없는 상황. 발생하면 운영체제가 디스크에서 해당 페이지를 메모리로 가져옵니다. 페이지 폴트가 너무 자주 발생하면 스래싱(Thrashing)이 발생해 성능이 급격히 저하됩니다.

5. 페이지 교체 알고리즘

물리 메모리가 꽉 찼을 때 어떤 페이지를 내보낼지 결정하는 알고리즘입니다. 시험에서 직접 계산 문제로 나오는 경우가 있어서 각 알고리즘의 동작 방식을 확실히 이해해야 합니다.

알고리즘교체 기준특징
OPT (최적)앞으로 가장 오랫동안 사용되지 않을 페이지페이지 폴트 최소. 미래 참조 알 수 없어 실제 구현 불가. 비교 기준으로 사용
FIFO가장 오래전에 들어온 페이지구현 간단. Belady's Anomaly 발생 가능 (프레임 늘려도 폴트 증가)
LRU가장 오랫동안 사용하지 않은 페이지참조 지역성 원리 활용. 구현 복잡하나 실용적. Belady's Anomaly 없음
LFU참조 횟수가 가장 적은 페이지초기에 많이 사용되고 이후 안 쓰이는 페이지가 남아있을 수 있음
NUR (Clock)최근에 사용하지 않은 페이지 (참조 비트 활용)LRU 근사 알고리즘. 구현 간단하고 실용적
🎯 페이지 교체 계산 문제 공략
✔ 프레임 수와 참조 문자열이 주어지면 → 각 알고리즘별로 페이지 폴트 횟수 계산
✔ 계산 방법: 프레임에 페이지가 없으면 폴트 발생, 있으면 히트
✔ FIFO는 큐(선입선출)처럼 처리, LRU는 가장 최근 사용 시점 기록
✔ "Belady's Anomaly가 발생하는 알고리즘은?" → FIFO

6. 프로세스 간 통신(IPC)

서로 다른 프로세스 사이에 데이터를 주고받는 방법입니다. 시험에서 각 방식의 특징을 구분하는 문제가 나옵니다.

방식설명특징
파이프(Pipe)단방향 통신. 부모-자식 프로세스 간 사용단순하나 양방향 통신엔 2개 파이프 필요
명명 파이프(Named Pipe)이름을 가진 파이프. 관계없는 프로세스 간 통신 가능파이프보다 유연
공유 메모리여러 프로세스가 동일 메모리 영역을 공유빠른 통신. 동기화 문제 주의 필요
메시지 큐커널이 관리하는 메시지 박스에 데이터 전송비동기 통신 가능
소켓(Socket)네트워크를 통한 프로세스 간 통신다른 컴퓨터의 프로세스와도 통신 가능
세마포어(Semaphore)공유 자원 접근을 제어하는 정수 변수동기화 및 상호 배제에 사용
💡 세마포어 vs 뮤텍스
세마포어는 카운팅 방식으로 여러 개의 자원 관리가 가능하고, 다른 프로세스가 signal(해제)할 수 있습니다. 뮤텍스(Mutex)는 잠금/해제가 반드시 같은 스레드/프로세스에서 이루어져야 하며 소유권 개념이 있습니다. 단순 상호 배제에는 뮤텍스, 자원 개수 카운팅이 필요하면 세마포어를 사용합니다.

마무리

운영체제는 범위가 넓어 보이지만 시험에서는 프로세스 상태 전이, CPU 스케줄링 계산, 교착상태 4조건, 페이지 교체 알고리즘에서 대부분의 점수가 나옵니다. 특히 계산 문제는 간트 차트를 직접 그려가며 여러 번 연습하는 게 가장 효과적입니다. 이해 없이 외우려 하면 변형 문제에서 막히니 원리를 파악하는 방식으로 공부하세요.