동기화(Synchronization)의 의미

2025. 1. 30. 15:00·운영체제/동기화란

동기화(Synchronization)의 의미

현대의 운영체제에서 여러 프로세스가 동시에 실행되며, 상호 협력하고 자원을 공유한다. 이때 동기화(Synchronization) 라는 개념이 필수적이다. 동기화란 프로세스들 사이의 실행 시점을 조절하여 올바른 수행 결과를 보장하는 것을 말한다.

  • 실행 순서 제어: 특정 조건(작업 완료 등)이 충족되어야 다음 프로세스가 실행되도록 순서를 조정
  • 상호 배제(Mutual Exclusion): 공유 자원에 대해 동시에 접근함으로써 발생하는 충돌을 방지

아래에서는 이 두 측면을 살펴보며 동기화의 구체적인 의미를 이해해 보자.

 


1. 프로세스 동기화란 무엇인가?

운영체제에서 여러 프로세스(혹은 스레드)가 동시에 실행되면서 협력해야 할 때, 각 프로세스가 원하는 시점이나 조건을 정확히 맞추지 않으면 오류가 발생할 수 있다.

  • 예: 워드 프로세서의 입력 프로세스, 맞춤법 검사 프로세스, 화면 출력 프로세스 등이 서로 협력하여 올바른 순서로 데이터를 주고받아야 한다.

동기화는 프로세스(또는 스레드) 간에 수행 시기를 맞추는 핵심 기술로서, 크게 다음 두 가지 역할을 수행한다.

  1. 실행 순서 제어: 특정 프로세스가 끝난 뒤 혹은 조건이 만족된 뒤 다른 프로세스가 실행되도록 순서 조정
  2. 상호 배제(Mutual Exclusion): 공유 자원에 대해 한 시점에는 오직 하나의 프로세스만 접근하도록 제한

Image

(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)

 


2. 실행 순서 제어를 위한 동기화

2.1 예시: Writer 프로세스와 Reader 프로세스

  • Writer: Book.txt 파일에 새로운 값을 저장하는 프로세스
  • Reader: Book.txt 파일의 데이터를 읽는 프로세스

Image

(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)

왜 순서 제어가 필요한가?

  • Reader는 Book.txt 안에 값이 적힌 뒤에만 데이터를 정상적으로 읽을 수 있다.
  • 만약 Writer가 파일에 값을 아직 저장하지 않았는데 Reader가 먼저 실행되어 Book.txt를 읽으려 하면, 올바른 데이터가 없거나 에러가 발생할 수 있다.

따라서 Reader는 "파일이 준비되었다"는 조건을 확인하고, 충족될 때까지 기다린 뒤 실행해야 한다. 이를 실행 순서 제어를 위한 동기화라고 부른다.

 


3. 상호 배제(Mutual Exclusion)를 위한 동기화

3.1 공유 자원 동시 접근 문제

가령 계좌 잔액이 10만 원 있고,

  • 프로세스 A: 현재 잔액에 2만 원을 입금
  • 프로세스 B: 현재 잔액에 5만 원을 입금

각 프로세스는 내부적으로 아래와 같은 단계를 거친다.

  1. 계좌의 잔액을 읽어들인다 (Read).
  2. 읽어 들인 값에 자신이 넣을 금액(2만 혹은 5만)을 더한다.
  3. 결과를 다시 계좌에 저장한다 (Write).

문제 발생

  • A가 1) 잔액을 읽어 아직 덮어쓰지 않았는데, B도 동시에 잔액을 읽어버린다면, 각각 10만 원을 읽어들인 뒤 덮어쓸 때 누군가의 변경 사항을 덮어쓰기 하여 최종 결과가 엉뚱하게 될 수 있다.

Image

(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)

올바른 접근: 상호 배제

  • 한 시점에 하나의 프로세스만 잔액에 접근하도록 하는 임계 구역(Critical Section) 보호 필요
  • A가 잔액 수정 중이면, B는 기다려야 하며, 반대 상황도 마찬가지다.

Image

(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)

이렇게 공유 자원을 동시에 접근하지 못하도록 막는 것이 상호 배제를 위한 동기화의 목표다.

 


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
'운영체제/동기화란' 카테고리의 다른 글
  • 생산자와 소비자 문제 및 공유 자원과 임계 구역
iOS Developer
iOS Developer
myungsun-e 님의 블로그 입니다.
  • iOS Developer
    myungsun-e
    iOS Developer
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • 컴퓨터 네트워크 (11)
        • 응용계층 (11)
      • 운영체제 (14)
        • 운영체제 시작하기 (2)
        • 프로세스 상태와 계층 구조 (3)
        • 프로세스와 스레드 (1)
        • CPU 스케줄링 (3)
        • 동기화란 (2)
      • iOS (0)
        • Swift-문법 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IOS
    컴퓨터 네트워크
    SWIFT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iOS Developer
동기화(Synchronization)의 의미
상단으로

티스토리툴바