현대 컴퓨터 시스템은 여러 프로세스와 스레드가 동시에 실행되며 효율적으로 자원을 관리해야 한다. 운영체제는 이러한 복잡한 환경에서 스케줄링 알고리즘을 통해 프로세스의 실행 순서를 결정하고 프로세서 간 통신 및 동기화 메커니즘을 활용하여 프로세스들 간의 협업을 조율한다. 하지만 이 과정에서 데드락과 같은 심각한 문제가 발생할 수 있다.
스케줄링 알고리즘
개념 및 필요성
스케줄링 알고리즘은 CPU와 같은 주요 자원을 여러 프로세스나 스레드에게 효율적으로 배분하는 기법이다.
주요 목적은
- 응답 시간 최소화: 사용자 및 시스템의 빠른 반응 보장
- 공정성 보장: 자원 배분의 공평성 유지
- 자원 활용 극대화: 시스템 성능 및 처리량 향상
주요 스케줄링 기법
- 선점형 스케줄링 (Preemptive Scheduling):
실행 중인 프로세스를 중단시키고, 높은 우선순위의 프로세스에게 CPU를 할당한다. - 비선점형 스케줄링 (Non-preemptive Scheduling):
프로세스가 자발적으로 종료하거나 블록될 때까지 CPU를 계속 사용한다. - 멀티 레벨 큐 (Multi-level Queue):
프로세스를 우선순위나 특성에 따라 여러 큐로 분리하고 각 큐마다 다른 스케줄링 정책을 적용한다.
프로세서 간 통신 (Inter-Processor Communication)
개념 및 중요성
멀티코어 시스템에서는 여러 프로세서 또는 코어가 동시에 작업을 수행하며 데이터를 주고받아 협력한다. 이를 통해 작업 분담 및 동기화가 원활하게 이루어진다.
주요 통신 방식
- 공유 메모리 (Shared Memory):
여러 프로세스가 동일한 메모리 공간에 접근하여 데이터를 교환한다. - 메시지 전달 (Message Passing):
데이터를 직접 공유하지 않고 메시지를 통해 주고받는 방식이다. - 신호 및 이벤트:
간단한 통신 및 동기화를 위해 사용되며 특정 조건이 충족되면 프로세스나 스레드를 깨운다.
동기화 (Synchronization)
필요성
여러 프로세스나 스레드가 동시에 공유 자원에 접근할 때 데이터의 일관성과 무결성을 보장하기 위해 동기화가 필요하다. 이를 제대로 수행하지 않으면 경쟁 조건(Race Condition) 등 심각한 문제가 발생할 수 있다.
주요 동기화 기법
- 뮤텍스 (Mutex):
임계 구역에 단 하나의 스레드만 접근하도록 보장한다. - 세마포어 (Semaphore):
일정 수의 스레드가 동시에 접근할 수 있도록 제한한다. - 모니터 (Monitor):
객체 단위 동기화를 제공하며 내부적으로 락을 관리한다. - 이벤트 (Event):
특정 이벤트 발생 시 대기 중인 프로세스나 스레드를 깨우는 방식이다.
데드락 (Deadlock)
개념 및 발생 원인
데드락은 두 개 이상의 프로세스가 서로 필요한 자원을 점유한 채 상대방이 자원을 해제하기를 기다리면서 아무런 진행도 이루어지지 않는 상태를 의미한다. 데드락이 발생하기 위해서는 다음 네 가지 조건이 모두 만족되어야 한다.
- 상호 배제 (Mutual Exclusion):
자원이 동시에 여러 프로세스에 의해 공유될 수 없음 - 점유와 대기 (Hold and Wait):
프로세스가 최소한 하나의 자원을 보유한 채 추가 자원을 기다림 - 비선점 (Non-preemption):
자원을 강제로 회수할 수 없음 - 순환 대기 (Circular Wait):
프로세스들이 순환적으로 서로의 자원을 기다림
예방 및 해결 방법
- 예방 (Prevention):
네 가지 조건 중 하나 이상을 제거하거나 완화하여 데드락이 발생하지 않도록 한다. - 회피 (Avoidance):
시스템 상태를 지속적으로 모니터링하고 데드락이 발생하지 않는 자원 할당 전략을 선택한다. - 감지 및 복구 (Detection and Recovery):
데드락 상태를 탐지한 후 자원 회수나 프로세스 종료 등의 방법으로 문제를 해결한다.
'컴퓨터 과학' 카테고리의 다른 글
Protocol이란? (0) | 2025.04.15 |
---|---|
파일과 디렉터리의 이해 (0) | 2025.04.15 |
메모리와 페이지 교체 이해하기 (0) | 2025.04.14 |
프로세스와 관련된 개념 정리 (0) | 2025.04.07 |
운영체제와 컴퓨터 하드웨어 구조 이해하기 (0) | 2025.01.16 |