프로세스 동기화

do_it·2025년 10월 16일

os

목록 보기
9/13

1. 동기화의 개념 & 필요성

공동의 목적을 위해 동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받음
이 과정에서 자원의 일관성을 보장해야 함 => 동기화 방식
프로세스 & 스레드 모두 동기화의 대상임

1-1. 프로세스 동기화란?

image.png

프로세스 동기화 (Process Synchronization)란
다중 프로세스 환경에서 프로세스 / 스레드의 공유 자원 접근 순서를 제어하여, 데이터 불일치, Race Condition, 교착 상태 등의 문제를 방지하고 일관성을 유지하는 기술

[동기화의 목적]
1. 실행 순서 제어: 프로세스를 올바른 순서대로 실행
e.g. Reader Writer Problem
2. 상호 배제: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기
e.g. Bank account Problem, Producer Consumer Problem

1-2. 공유 자원과 임계 구역

공유 자원 (Shared Resource)

여러 프로세스가 동시에 접근할 수 있는 자원

  • 공유 자원은 여러 프로세스 / 스레드가 동시에 접근할 수 있지만
    동시에 접근하면 문제를 일으킬 수 있으므로 동기화와 접근 제어가 반드시 필요
  • e.g. 변수, 메모리, 파일, 입출력 장치,…

임계 구역 (Critical Section)

스크린샷 2025-10-16 14.51.42.png

공유 자원에 접근하는 코드 중에서 동시에 실행되면 문제가 발생하는 코드 영역 (Mutual Exclusion 위반)

1-3. 경쟁 조건 (Race-Condition)

스크린샷 2025-10-16 14.57.17.png

입계 구역에 두 개 이상의 실행 흐름이 같은 자원을 동시에 다루어 결과가 실행 순서에 의존하게 되는 상태

서로 다른 프로세스가 임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있음

1-4. 임계 구역 문제를 해결하기 위한 3가지 원칙

여러 프로세스가 공유 자원에 접근할 때 데이터의 일관성과 실행의 공정성을 보장하는 것

이를 달성하기 위해 OS는 다음 3가지 조건을 만족시켜야 함

  1. 상호 배제 (Mutual Exclusion)
    한 시점에 오직 하나의 프로세스만 임계 구역(Critical Section) 에 진입할 수 있음
    동시에 여러 프로세스가 공유 자원을 변경하면 데이터 불일치 (Race Condition) 문제가 발생할 수 있음
  2. 진행 (Progress)
    임계 구역에서 실행 중인 프로세스가 없을 때 (비어있을 때)
    진입을 요청한 프로세스 중 하나는 불필요한 지연 없이 결정되어야 함
  3. 유한 대기(Bounded Waiting)
    한 프로세스가 임계 구역에 진입하려는 요청을 한 후부터 언젠가는 임계 구역에 들어올 수 있어야 함
    특정 프로세스가 무한히 대기하는 기아상태(Starvation) 방지

기아 (Starvation)

어떤 프로세스가 계속해서 자원을 얻지 못 해 무한히 기다리는 상태 (공정성 결여)
시스템은 전체적으로 돌아가지만, 해당 스레드가 작업을 완료하지 못하는 상태

  • 주로 우선순위 기반 스케줄링 환경에서 발생함
    높은 우선순위의 스레드가 계속 자원을 선점하여, 낮은 우선순위의 스레드가 자원을 요청해도 응답받지 못하고 영원히 대기

0개의 댓글