공유자원과 임계구역 이란?
프로세스 간 통신(IPC)이 발생할 때,
여러 프로세스가 공동으로 사용하는 변수나 파일 등을 공유자원이라고 한다.
이러한 자원은 프로세스들이 데이터를 읽고 쓰는 데 사용되며,
자원의 접근 순서에 따라 연산 결과가 달라질 수 있다.
공유자원을 접근하는 코드 영역 중에서
여러 프로세스에 의해 동시에 실행되면 안 되는 부분을 임계 구역이라고 한다.
임계 구역의 관리가 제대로 이루어지지 않을 경우, 경쟁 조건(Race Condition) 이 발생하여
데이터의 일관성과 정확성이 훼손될 수 있다.
동기화 문제의 이해와 예시
공유자원을 다룰 때, 특히 멀티프로세싱 환경에서는
프로세스들이 어떤 순서로 실행될지 예측하기 어려운 경우가 많다.
이는 운영체제의 컨텍스트 스위칭이 프로세스들 사이에서 빈번하게 일어나기 때문이다.
이로 인해 같은 자원에 대한 접근이 동시에 이루어지거나,
예측 불가능한 순서로 이루어질 때 동기화 문제가 발생한다.
동기화 문제 예시: 은행 계좌 업데이트
상황 설명
특정 은행 계좌에 A와 B 두 명의 고객이 동시에 접근하여
각각 돈을 입금하려고 한다고 가정해 보자.
A 고객은 계좌에 $100를 입금하고, B 고객은 $200를 입금한다.
발생할 수 있는 문제
프로세스가 제대로 동기화되지 않은 시스템에서는,
A와 B 두 고객의 입금 처리가 동시에 이루어지면서 다음과 같은 문제가 발생할 수 있다.
1) 임계 구역 접근
A와 B의 입금 처리가 동시에 계좌의 잔액을 읽는다.
예를 들어, 계좌 잔액이 원래 $1000였다고 하자.
2) 동시 업데이트
A가 계좌 잔액을 읽고 $100를 추가한 $1100으로 업데이트한다.
거의 동시에 B도 원래 잔액 $1000을 읽고,
$200를 추가해 $1200으로 업데이트한다.
3) 경쟁 조건
A와 B가 거의 동시에 계좌를 업데이트하므로,
이론적으로는 총 $300가 입금되어 잔액이 $1300이 되어야 하지만,
마지막에 저장된 $1200만이 최종 잔액으로 기록될 수 있다.
이 경우, A의 입금액 $100는 시스템에 의해 "잃어버린 업데이트"로 처리되어,
실제 잔액과 계좌에 반영된 금액 사이에 불일치가 발생할 수 있다.
이러한 현상은 동기화 문제로 인한 전형적인 경쟁 조건의 예시이다.
이 문제를 해결하기 위해 뮤텍스(mutex) 또는 세마포어(semaphore) 같은 동기화 메커니즘을 사용하여
임계 구역에 대한 접근을 제어할 수 있다.
이러한 도구들은 한 번에 하나의 프로세스만이 데이터를 수정할 수 있도록 보장함으로써,
동시 업데이트 문제를 예방한다.
상호 배제(Mutual Exclusion)의 필요성
임계 구역 문제를 해결하기 위해 상호 배제 원칙이 필요하다.
상호 배제는 한 시점에 하나의 프로세스만이
임계 구역에 접근할 수 있도록 보장하여 경쟁 조건을 방지한다.
상호 배제를 구현하기 위한 주요 요구 사항은 다음과 같다.
1) 상호 배제
어떤 프로세스가 임계 구역에 있을 때, 다른 모든 프로세스는 그 영역에 들어갈 수 없어야 한다.
2) 진행
임계 구역에서 작업을 마친 프로세스는 다른 프로세스가 진입할 수 있도록 해야 한다.
3) 한정된 대기
프로세스가 임계 구역에 진입하기 위해 무한히 기다리지 않도록 보장해야 합니다.
결론
공유자원과 임계 구역의 적절한 관리는
병렬 컴퓨팅 환경에서의 안정성과 효율성을 보장하는 핵심 요소다.
프로세스 간의 올바른 동기화를 통해 시스템의 성능을 최적화하고 오류를 최소화할 수 있다.
상호 배제 메커니즘을 효과적으로 구현함으로써,
복잡한 멀티프로세스 애플리케이션의 신뢰성을 높일 수 있다.
'운영체제' 카테고리의 다른 글
[운영체제] 모니터: 고급 동기화 메커니즘 (0) | 2024.06.05 |
---|---|
[운영체제] 세마포어(Semaphore) (0) | 2024.06.04 |
[운영체제] 프로세스 간 통신(IPC, Inter-Process Communication) (0) | 2024.05.31 |
[운영체제] MLFQ (Multi-Level Feedback Queue) 스케줄링 알고리즘 (0) | 2024.05.30 |
[운영체제] Round Robin (RR) 스케줄링 알고리즘 (0) | 2024.05.29 |