동기화(Synchronization)의 의미
현대의 운영체제에서 여러 프로세스가 동시에 실행되며, 상호 협력하고 자원을 공유한다. 이때 동기화(Synchronization) 라는 개념이 필수적이다. 동기화란 프로세스들 사이의 실행 시점을 조절하여 올바른 수행 결과를 보장하는 것을 말한다.
- 실행 순서 제어: 특정 조건(작업 완료 등)이 충족되어야 다음 프로세스가 실행되도록 순서를 조정
- 상호 배제(Mutual Exclusion): 공유 자원에 대해 동시에 접근함으로써 발생하는 충돌을 방지
아래에서는 이 두 측면을 살펴보며 동기화의 구체적인 의미를 이해해 보자.
1. 프로세스 동기화란 무엇인가?
운영체제에서 여러 프로세스(혹은 스레드)가 동시에 실행되면서 협력해야 할 때, 각 프로세스가 원하는 시점이나 조건을 정확히 맞추지 않으면 오류가 발생할 수 있다.
- 예: 워드 프로세서의 입력 프로세스, 맞춤법 검사 프로세스, 화면 출력 프로세스 등이 서로 협력하여 올바른 순서로 데이터를 주고받아야 한다.
동기화는 프로세스(또는 스레드) 간에 수행 시기를 맞추는 핵심 기술로서, 크게 다음 두 가지 역할을 수행한다.
- 실행 순서 제어: 특정 프로세스가 끝난 뒤 혹은 조건이 만족된 뒤 다른 프로세스가 실행되도록 순서 조정
- 상호 배제(Mutual Exclusion): 공유 자원에 대해 한 시점에는 오직 하나의 프로세스만 접근하도록 제한
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
2. 실행 순서 제어를 위한 동기화
2.1 예시: Writer 프로세스와 Reader 프로세스
- Writer:
Book.txt
파일에 새로운 값을 저장하는 프로세스 - Reader:
Book.txt
파일의 데이터를 읽는 프로세스
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
왜 순서 제어가 필요한가?
Reader
는Book.txt
안에 값이 적힌 뒤에만 데이터를 정상적으로 읽을 수 있다.- 만약
Writer
가 파일에 값을 아직 저장하지 않았는데Reader
가 먼저 실행되어Book.txt
를 읽으려 하면, 올바른 데이터가 없거나 에러가 발생할 수 있다.
따라서 Reader는 "파일이 준비되었다"는 조건을 확인하고, 충족될 때까지 기다린 뒤 실행해야 한다. 이를 실행 순서 제어를 위한 동기화라고 부른다.
3. 상호 배제(Mutual Exclusion)를 위한 동기화
3.1 공유 자원 동시 접근 문제
가령 계좌 잔액이 10만 원 있고,
- 프로세스 A: 현재 잔액에 2만 원을 입금
- 프로세스 B: 현재 잔액에 5만 원을 입금
각 프로세스는 내부적으로 아래와 같은 단계를 거친다.
- 계좌의 잔액을 읽어들인다 (Read).
- 읽어 들인 값에 자신이 넣을 금액(2만 혹은 5만)을 더한다.
- 결과를 다시 계좌에 저장한다 (Write).
문제 발생
- A가 1) 잔액을 읽어 아직 덮어쓰지 않았는데, B도 동시에 잔액을 읽어버린다면, 각각 10만 원을 읽어들인 뒤 덮어쓸 때 누군가의 변경 사항을 덮어쓰기 하여 최종 결과가 엉뚱하게 될 수 있다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
올바른 접근: 상호 배제
- 한 시점에 하나의 프로세스만 잔액에 접근하도록 하는 임계 구역(Critical Section) 보호 필요
- A가 잔액 수정 중이면, B는 기다려야 하며, 반대 상황도 마찬가지다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
이렇게 공유 자원을 동시에 접근하지 못하도록 막는 것이 상호 배제를 위한 동기화의 목표다.
4. 요약
- 동기화(Synchronization) 는 멀티 프로세스(또는 스레드) 환경에서 정상 동작을 보장하기 위한 핵심 개념이다.
- 실행 순서 제어
- 특정 조건(예: 파일 쓰기 완료)이 만족된 후 다른 프로세스를 실행
- 예: Writer/Reader 관계에서 Writer가 작업을 끝내야 Reader가 실행
- 상호 배제(Mutual Exclusion)
- 공유 자원(파일, 변수, 메모리 등)에 동시에 접근함으로써 발생할 수 있는 데이터 불일치나 경쟁 상태(Race Condition) 를 방지
- 임계 구역(Critical Section)에서는 한 프로세스만 접근하고, 나머지는 대기
이 두 가지가 결합되어야 다중 프로세스 환경에서의 협력이 올바르게 이뤄질 수 있다. 추후 세마포어(Semaphore), 뮤텍스(Mutex), 모니터(Monitor) 등의 동기화 기법을 통해 구체적인 구현 방식을 학습할 수 있다.
참고 자료
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- Operating System Concepts (A. Silberschatz, P.B. Galvin, G. Gagne)
- Modern Operating Systems (A.S. Tanenbaum, H. Bos)
'운영체제 > 동기화란' 카테고리의 다른 글
생산자와 소비자 문제 및 공유 자원과 임계 구역 (0) | 2025.02.09 |
---|