CS 상식 - 운영체제

[CS 상식 - 운영체제] 동기화

beginner-in-coding 2025. 2. 19. 17:24

01. 동기화(synchronization)의 의미

  • 필요한 이유: 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기 때문
  • 프로세스의 동기화: 프로세스 사이의 수행 시기를 맞추는 것
    • 실행 순서 제어: 프로세스를 올바른 순서대로 실행
    • 상호 배제: 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
  • 실행의 흐름을 갖는 모든 것들이 동기화의 대상(스레드 포함)
  • 실행 순서 제어를 위한 동기화
    • 한 프로세스의 결과값을 가지고 작업을 하는 경우, 선실행되어야 함
  • 상호 배제를 위한 동기화(mutual exclusion)
    • 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘

02. 생산자와 소비자 문제

  • 생산자: 물건을 계속해서 생성하는 역할
  • 소비자: 물건을 계속해서 소비하는 역할
  • 생산자와 소비자는 총합이라는 데이터를 공유하고 있음
    • 동기화를 제대로 하지 않으면 총합이라는 공유 정보에 오류가 발생함

03. 공유 자원과 임계 구역

  • 공유 자원(shared resources): 공동으로 사용하는 자원들을 의미
  • 임계 구역(critical section): 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
    • 임계 영역에서 이미 다른 프로세스가 사용중이면 대기해야함
  • 레이스 컨디션(race condition): 임계 영역은 두 개 이상의 프로세스가 동시에 실행되면 안되는 영역이지만, 잘못된 실행으로 인해 여러 프로세스가 동시다발적으로 임계 구역의 코드를 실행하여 문제가 발생하는 경우
    • 데이터의 일관성이 깨짐
    • 발생하는 이유: 고급 언어를 저급 언어로 바뀌어 실행하는데, 여러 줄의 저급 언어로 변환된 고급 언어 한 줄을 실행하는 과정에서 문맥 교환이 일어날 수 있음
  • 임계 구역 문제 해결 방안 세가지
    • 상호 배제(mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 임계 구역에 들어올 수 없음
    • 진행(progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 함
    • 유한 대기(bounded waiting): 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 함