![[2일차] 2025 정보처리산업기사 운영체제 – 프로세스 동기화와 교착상태 1 정보처리산업기사 운영체제](https://i0.wp.com/jupocket.com/wp-content/uploads/2025/05/image.png?resize=492%2C492&ssl=1)
정보처리산업기사 운영체제의 중요한 역할 중 하나는 프로세스 간 협력과 제어이다. CPU는 동시에 여러 프로세스를 처리하지만, 공유 자원(메모리, 파일, 입출력 장치)에 접근할 때 충돌이 발생할 수 있다.
이를 해결하기 위한 개념이 프로세스 동기화(Process Synchronization) 이며, 잘못된 제어로 인해 두 프로세스가 서로 자원을 대기하는 상태를 교착상태(Deadlock) 라고 한다.
이번 학습에서는 이 두 개념을 연결하여 살펴본다.
정보처리산업기사 1개월 단기 과정 스케줄을 확인하고 싶은분들은 아래글을 이용바랍니다.
1. 프로세스 동기화(Process Synchronization)
프로세스 동기화는 여러 프로세스가 공유 자원(Shared Resource) 을 사용할 때 동시에 접근하지 못하도록 제어하는 기법이다.
이때 핵심 개념은 임계영역(Critical Section) 과 상호배제(Mutual Exclusion) 이다.
임계영역과 조건
| 구분 | 설명 |
|---|---|
| 임계영역(Critical Section) | 공유 자원에 접근하는 코드 영역 |
| 상호배제(Mutual Exclusion) | 한 시점에 하나의 프로세스만 임계영역 실행 가능 |
| 진행(Progress) | 임계영역에 없는 프로세스는 진입 결정에 영향을 주지 않음 |
| 한정 대기(Bounded Waiting) | 임계영역 진입 대기 시간이 무한정 길어지면 안 됨 |
대표 제어 기법
| 구분 | 설명 |
|---|---|
| 뮤텍스(Mutex) | 하나의 자원에 대해 단일 프로세스만 접근 허용 |
| 세마포어(Semaphore) | 접근 가능한 자원의 개수를 카운팅 (P, V 연산 사용) |
| 모니터(Monitor) | 언어 수준에서 제공되는 동기화 구조 (Java의 synchronized 등) |
세마포어 예시
semaphore S = 1;
P(S); // 자원 요청 (Wait)
임계영역 수행
V(S); // 자원 반환 (Signal)
- P(): 자원 점유 시도, 0이면 대기
- V(): 자원 해제 후 대기 중 프로세스 깨움
동기화 문제 예시
- 생산자-소비자 문제 (Producer–Consumer) → 버퍼가 가득 차면 생산자는 대기, 버퍼가 비면 소비자가 대기
- Readers–Writers 문제 → 여러 Reader는 동시 접근 가능, Writer는 단독 접근만 허용
- 식사하는 철학자 문제 (Dining Philosophers) → 포크(자원) 점유 순서 잘못 설정 시 교착상태 발생
2. 교착상태(Deadlock)
개념
두 개 이상의 프로세스가 서로가 점유한 자원을 기다리며 무한 대기하는 상태를 말한다.
즉, 시스템이 더 이상 진행되지 않는 정지 상태이다.
발생 조건 (필수 4가지)
| 조건 | 설명 |
|---|---|
| 상호배제(Mutual Exclusion) | 자원을 한 프로세스만 사용할 수 있음 |
| 점유와 대기(Hold and Wait) | 하나 이상의 자원을 점유한 채 다른 자원을 기다림 |
| 비선점(No Preemption) | 자원을 강제로 빼앗을 수 없음 |
| 환형 대기(Circular Wait) | 프로세스 간 자원 점유가 원형 대기 형태로 연결 |
위 네 가지 조건이 모두 만족될 때 교착상태가 발생한다.
예시 (자원 A, B)
| 프로세스 | 점유 자원 | 요청 자원 |
|---|---|---|
| P1 | A | B |
| P2 | B | A |
→ P1은 B를, P2는 A를 기다리며 무한 대기 상태가 된다.
해결 방법
| 구분 | 설명 |
|---|---|
| 예방(Prevention) | 교착 4조건 중 하나라도 깨뜨리기 |
| 회피(Avoidance) | 교착이 발생하지 않도록 안전 상태만 허용 (Banker’s Algorithm) |
| 탐지(Detection) | 교착이 발생했는지 검사 후 회복 |
| 회복(Recovery) | 프로세스 종료 또는 자원 회수로 해결 |
은행원 알고리즘 (Banker’s Algorithm)
- 교착 회피 기법 중 대표적인 방법
- 시스템이 안전 상태(Safe State)일 때만 자원 할당을 허용
- “모든 프로세스가 순서대로 완료될 수 있는 상태”가 안전 상태
3. 동기화와 교착상태의 관계
| 구분 | 내용 |
|---|---|
| 공통점 | 둘 다 자원 접근 제어와 관련 |
| 차이점 | 동기화는 안정적 접근 보장, 교착상태는 자원 대기로 인한 정지 |
| 예시 | 세마포어 사용 중 P(), V() 순서를 잘못 적용하면 교착 발생 가능 |
결론
프로세스 동기화는 운영체제의 안정성과 효율성을 확보하기 위한 핵심 기술이며, 교착상태는 그 제어 실패로 발생하는 전형적인 문제다.
시험에서는 아래 세 가지가 자주 출제된다.
- 세마포어의 P(), V() 연산 순서 판단
- 교착상태 발생 4조건 암기
- Banker’s Algorithm의 안전 상태 판별
다음 학습 예고 – 메모리 관리
다음 학습에서는 주기억 장치 관리의 핵심 전략인 반입전략(Fetch Strategy) 과 배치전략(Placement Strategy), 그리고 이 과정에서 발생하는 단편화(Fragmentation) 개념을 정리한다.