-
운영체제 핵심 개념과 계산 문제 완전 정복 👨🚀기타 2026. 7. 11. 09:49
운영체제 핵심 개념과 계산 문제 완전 정복
운영체제(OS) 파트는 개념 암기와 계산 문제가 동시에 출제되는 영역이다.
특히 스케줄링 평균 대기시간, 페이지 교체 알고리즘의 페이지 부재 횟수 계산은 풀이 순서를 모르면 절대 맞출 수 없다.
이 글은 개념 정리와 함께 계산 문제를 손으로 추적하는 방법을 집중적으로 다룬다.
1. 운영체제 기본 목적
암기: 처반사신
목적 영문 설명 처리 능력 Throughput 단위 시간당 처리하는 작업량 ↑ 반환 시간 Turn Around Time 작업 의뢰 ~ 처리 완료까지 시간 ↓ 사용 가능도 Availability 즉시 사용 가능한 정도 ↑ 신뢰도 Reliability 정확하게 처리하는 정도 ↑
2. 프로세스 상태 전이
프로세스는 아래 5가지 상태를 순환한다. 상태 전이 다이어그램 문제가 자주 출제.
제출(Submit) ↓ 스풀링(Spooling) 접수(Hold) ↓ Job 스케줄러 준비(Ready) ←─────────────────┐ ↓ Dispatch (CPU 할당) │ Wake Up (입출력 완료) 실행(Run) │ ↓ 입출력 발생 │ 대기(Wait/Block) ──────────────┘ ↓ 완료 종료(Terminated)핵심 전이 용어:
- Dispatch — 준비 → 실행 (CPU 할당)
- Wake Up — 대기 → 준비 (입출력 완료)
- Context Switching — 실행 중인 프로세스 교체 시 이전 상태 저장 후 다음 프로세스 적재
3. CPU 스케줄링
CPU를 어떤 프로세스에 먼저 할당할지 결정하는 알고리즘. 평균 대기시간 계산 문제 핵심 영역.
선점 vs 비선점
구분 설명 해당 알고리즘 비선점 실행 중인 프로세스를 강제로 뺏을 수 없음 FCFS, SJF, HRN, 우선순위 선점 더 높은 우선순위 프로세스가 오면 CPU 강제 회수 RR, SRT, 선점 우선순위 알고리즘 종류
알고리즘 방식 특징 FCFS 도착 순서대로 구현 단순. 긴 작업이 앞에 오면 전체 대기 길어짐 (Convoy Effect) SJF 실행 시간 짧은 것 먼저 평균 대기시간 최소. 긴 작업은 무한 대기 가능 (Starvation) HRN 우선순위 = (대기시간 + 서비스시간) / 서비스시간 SJF의 기아 현상 보완. 대기 길수록 우선순위 높아짐 RR 시간 할당량(Time Quantum)씩 순환 선점형. 할당량 끝나면 강제로 다음 프로세스로 SRT 남은 실행시간 짧은 것 먼저 SJF의 선점 버전. 새 프로세스 도착할 때마다 비교 계산 문제 풀이 — FCFS
예시: 아래 프로세스들의 평균 대기시간을 구하시오.
프로세스 도착시간 실행시간(Burst) P1 0 5 P2 1 3 P3 2 2 풀이 (간트 차트 그리기):
시간: 0 1 2 3 4 5 6 7 8 9 10 [─── P1 ───────][── P2 ──][P3─] 0 5 8 10프로세스 도착 시작 완료 대기시간 = 시작 - 도착 P1 0 0 5 0 - 0 = 0 P2 1 5 8 5 - 1 = 4 P3 2 8 10 8 - 2 = 6 평균 대기시간 = (0 + 4 + 6) / 3 = 10 / 3 ≈ 3.33
계산 문제 풀이 — SRT (선점)
예시: 위와 같은 프로세스에 SRT 적용.
시간: 0 1 2 3 4 5 6 7 8 9 10 [P1][─P3─][─P2──][─── P1 ───] 0 1 3 6 10(?)SRT 풀이 순서:
- 매 시점 새 프로세스 도착 시 현재 프로세스 남은 시간과 비교
- 더 짧은 쪽이 CPU 선점
- 표를 시간 단위로 직접 그려가며 추적
시간 실행 이유 0 P1 P1만 존재. 남은시간 5 1 P3 P2도착(잔여3), P3도착(잔여2) → P3이 가장 짧음 3 P2 P3완료. P1잔여4, P2잔여3 → P2 선택 6 P1 P2완료. P1만 남음. 잔여4 10 완료 계산 문제 풀이 핵심: 시간 축을 직접 그리면서 매 이벤트(새 프로세스 도착) 시점마다 남은 시간을 비교하고 선점 여부를 판단한다.
HRN 우선순위 계산
우선순위 = (대기시간 + 서비스시간) / 서비스시간값이 클수록 우선순위가 높다.
예시: 대기시간 6, 서비스시간 3인 프로세스의 우선순위
(6 + 3) / 3 = 3.0
4. 교착상태 (DeadLock)
두 개 이상의 프로세스가 서로 상대방이 점유한 자원을 기다리며 무한정 대기하는 상태.
발생 4가지 조건 — 암기: 상점비환
조건 영문 설명 상호배제 Mutual Exclusion 한 번에 한 프로세스만 자원 사용 가능 점유와 대기 Hold and Wait 자원을 점유한 채 다른 자원을 요구하며 대기 비선점 Non-Preemption 점유된 자원을 강제로 뺏을 수 없음 환형 대기 Circular Wait 프로세스들이 원형으로 서로의 자원을 대기 4가지 조건이 모두 성립해야 교착상태 발생. 하나라도 제거하면 예방 가능.
해결 방법 — 암기: 예발회회
방법 설명 예방 (Prevention) 4가지 조건 중 하나를 사전에 제거 회피 (Avoidance) 교착상태 가능성을 피하며 자원 할당. 은행원 알고리즘 사용 발견 (Detection) 교착상태 발생을 탐지하고 해당 프로세스·자원 발견 회복 (Recovery) 교착상태 유발 프로세스 종료 또는 자원 선점으로 복구 은행원 알고리즘: 자원 요청 시 미래에 교착상태가 발생하지 않는 안전 상태인지 미리 계산 후 허용.
5. 메모리 관리
페이징 vs 세그멘테이션
구분 페이징 세그멘테이션 분할 단위 고정 크기 (페이지) 가변 크기 (세그먼트) 단편화 내부 단편화 발생 외부 단편화 발생 관리 테이블 페이지 테이블 세그먼트 테이블 특징 구현 단순 논리적 단위(함수, 배열 등)로 분할 암기: 고정 크기 = 페이징 / 가변(논리) 크기 = 세그멘테이션
내부 단편화 vs 외부 단편화
- 내부 단편화 — 할당된 공간 내부에 남는 공간 (페이징에서 발생)
- 외부 단편화 — 할당되지 않은 공간이 조각나서 사용 불가 (세그멘테이션에서 발생)
가상 메모리
실제 메모리보다 큰 프로그램을 실행할 수 있도록 보조기억장치를 메인 메모리처럼 사용하는 기법.
- 페이지 부재 (Page Fault) — 필요한 페이지가 메모리에 없어 디스크에서 가져와야 하는 상황
- 스래싱 (Thrashing) — 페이지 교체가 너무 빈번해 실제 작업보다 교체에 더 많은 시간 소요
6. 페이지 교체 알고리즘
메모리가 꽉 찼을 때 어떤 페이지를 내보낼지 결정. 페이지 부재(Page Fault) 횟수 계산 문제 핵심.
알고리즘 종류
알고리즘 교체 기준 특징 FIFO 가장 먼저 들어온 페이지 구현 단순. Belady's Anomaly 발생 가능 LRU 가장 오랫동안 사용 안 된 페이지 최근 사용 기록 기반. 실제로 많이 사용 LFU 사용 빈도가 가장 낮은 페이지 참조 횟수 기반 OPT 앞으로 가장 오래 사용 안 될 페이지 이론상 최적. 실제 구현 불가 (미래 예측 필요) Belady's Anomaly: FIFO에서 프레임 수를 늘렸는데 오히려 페이지 부재가 더 많이 발생하는 역설.
계산 문제 풀이 — FIFO
예시: 페이지 참조 순서:
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 프레임 수: 3풀이 (프레임 상태를 시간순으로 추적):
참조 프레임1 프레임2 프레임3 부재(F) 1 1 - - F 2 1 2 - F 3 1 2 3 F 4 4 2 3 F (1 교체, 가장 먼저 들어온 것) 1 4 1 3 F (2 교체) 2 4 1 2 F (3 교체) 5 5 1 2 F (4 교체) 1 5 1 2 ✅ (HIT) 2 5 1 2 ✅ (HIT) 3 5 3 2 F (1 교체) 4 5 3 4 F (2 교체) 5 5 3 4 ✅ (HIT) 페이지 부재 횟수: 9번
계산 문제 풀이 — LRU
동일 참조 순서로 LRU 적용:
참조 프레임 상태 부재(F) 교체 기준 1 [1] F 2 [1,2] F 3 [1,2,3] F 4 [4,2,3] F 1이 가장 오래됨 → 1 교체 1 [4,1,3] F 2가 가장 오래됨 → 2 교체 2 [4,1,2] F 3이 가장 오래됨 → 3 교체 5 [5,1,2] F 4가 가장 오래됨 → 4 교체 1 [5,1,2] ✅ 1은 있음 (최근 사용 갱신) 2 [5,1,2] ✅ 2는 있음 3 [3,1,2] F 5가 가장 오래됨 → 5 교체 4 [3,4,2] F 1이 가장 오래됨 → 1 교체 5 [3,4,5] F 2가 가장 오래됨 → 2 교체 페이지 부재 횟수: 10번
풀이 핵심: LRU는 매 참조마다 "현재 프레임 중 가장 최근에 사용된 시점이 가장 이른 것"을 교체. 손으로 풀 때는 각 페이지 옆에 마지막 사용 시점을 기록하면서 추적.
7. 디스크 스케줄링
디스크 헤드가 어떤 순서로 이동하며 요청을 처리할지 결정. 총 이동 거리 계산 문제로 출제.
알고리즘 방식 FCFS 요청 순서대로 처리 SSTF 현재 헤드 위치에서 가장 가까운 요청 먼저 SCAN 한 방향으로 끝까지 이동 후 반대 방향으로 (엘리베이터 알고리즘) C-SCAN 한 방향으로만 처리. 끝에 닿으면 처음으로 복귀 LOOK SCAN과 유사하지만 요청이 없으면 끝까지 가지 않음 계산 예시 — SSTF:
현재 헤드 위치 53, 요청 큐: [98, 183, 37, 122, 14, 124, 65, 67]53 → 65 (12) → 67 (2) → 37 (30) → 14 (23) → 98 (84) → 122 (24) → 124 (2) → 183 (59) 총 이동 거리 = 12+2+30+23+84+24+2+59 = 236
8. UNIX / Linux 기본 구조
UNIX 구성요소
구성요소 역할 커널 (Kernel) 하드웨어 보호, 프로그램-하드웨어 인터페이스. 프로세스·메모리·파일·입출력 관리 쉘 (Shell) 사용자 명령어 해석기. 시스템-사용자 인터페이스 유틸리티 에디터, 컴파일러, 인터프리터, 디버거 등 응용 프로그램 주요 Linux 명령어
명령어 기능 ls디렉터리 목록 출력 cd디렉터리 이동 pwd현재 디렉터리 경로 출력 mkdir디렉터리 생성 rm파일 삭제 ( -r: 디렉터리 포함)cp파일 복사 mv파일 이동 / 이름 변경 chmod파일 권한 변경 ps현재 실행 중인 프로세스 목록 kill프로세스 종료 grep파일 내 패턴 검색 cat파일 내용 출력 find파일 검색 tar파일 묶기 / 압축 chmod 권한 계산
권한: rwx rwx rwx (소유자 / 그룹 / 기타) r=4, w=2, x=1 chmod 755 파일명 → 소유자: 7(rwx) / 그룹: 5(r-x) / 기타: 5(r-x) chmod 644 파일명 → 소유자: 6(rw-) / 그룹: 4(r--) / 기타: 4(r--)
9. 세마포어 (Semaphore)
공유 자원에 대한 접근을 제어하는 동기화 기법. Dijkstra가 제안.
- P 연산 (Wait) — 세마포어 값 감소. 0 이하면 대기
- V 연산 (Signal) — 세마포어 값 증가. 대기 중인 프로세스 깨움
P(S): S = S - 1; if S < 0 then wait V(S): S = S + 1; if S <= 0 then wakeup뮤텍스(Mutex)와의 차이: 뮤텍스는 이진 세마포어(0 또는 1). 잠금을 건 프로세스만 해제 가능. 세마포어는 다른 프로세스도 V 연산 가능.
빠른 암기 정리
OS 목적 : 처반사신 (처리능력/반환시간/사용가능도/신뢰도) 프로세스 상태 : 제출→접수→준비→실행→대기→종료 Dispatch : 준비 → 실행 / Wake Up : 대기 → 준비 스케줄링 비선점 : FCFS / SJF / HRN / 우선순위 스케줄링 선점 : RR / SRT / 선점 우선순위 HRN 우선순위 : (대기시간 + 서비스시간) / 서비스시간 → 클수록 우선 교착상태 4조건 : 상점비환 (상호배제/점유대기/비선점/환형대기) 교착상태 해결 : 예발회회 (예방/회피/발견/회복) 은행원 알고리즘 : 교착상태 회피 기법 페이징 : 고정 크기 분할 → 내부 단편화 세그멘테이션 : 가변 크기 분할 → 외부 단편화 스래싱 : 페이지 교체 > 실제 작업 시간 → 성능 급감 페이지 교체 : FIFO(선입선출) / LRU(최근미사용) / LFU(최저빈도) / OPT(최적, 구현불가) Belady's Anomaly : FIFO에서 프레임 늘려도 부재 증가하는 역설 디스크 스케줄링 : FCFS / SSTF(가장 가까운 것) / SCAN(엘리베이터) / C-SCAN / LOOK UNIX 구성 : 커널(하드웨어 관리) / 쉘(명령어 해석) / 유틸리티(응용) chmod : r=4, w=2, x=1 → 755 = rwxr-xr-x 세마포어 : P연산(감소/대기) / V연산(증가/깨움)'기타' 카테고리의 다른 글
디자인 패턴 완전 정리 — 23가지 핵심 개념 (0) 2026.07.13 소프트웨어 개발 방법론 · 테스트 · 자료구조 & 알고리즘 완전 정리 (1) 2026.07.11 개발자가 알아야 할 보안 핵심 개념 정리..,, (0) 2026.07.10 개발자가 알아야 할 네트워크 핵심 개념 정리... (0) 2026.07.08 신뢰도 높고 가성비 좋은 로컬 AI 모델 구축하기 🖤 Claude·ChatGPT처럼 쓰는 법 (0) 2026.07.05