2025-12-17

오늘 배운 것

12-1 동기화란

동기화의 의미

  • 프로세스 동기화
    • 특정 자원에 접근 할 때 한개의 프로세스만 접근하게 하거나, 프로세스를 올바른 순서대로 실행하게 하는 것

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

  • 동시에 실행되는 프로세스를 올바른 순서대로 실행

상호 배제를 위한 동기화

  • 상호배제
    • 공유가 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘
  • 동시에 접근해서는 안 되는 자원에 동시에 접근하지 못하게 하는 것

생산자와 소비자 문제

  • 생산자와 소비자는 총합이라는 데이터를 동시에 사용
  • 동시에 접근해서는 안되는 자원에 동시에 접근하여 발생하는 문제

공유 자원과 임계 구역

  • 공유 자원
    • 전역 변수, 파일, 입출력 장치, 보조 기억 장치 등 프로세스가 공유하는 자원
  • 임계 구역
    • 동시 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
  • 레이스 컨디션
    • 임계 구역에 잘못된 실행으로 인해 여러 프로세스가 동시 다발적으로 임계 구역의 코드를 실행하여 문제가 발생
    • 데이터의 일관성이 깨짐
  • 상호배제를 위한 동기화 원칙
    • 상호 배제 : 한 프로세스가 임계 구역에 진입 했다면 다른 프로세스는 임계 구역에 들어올 수 없다
    • 진행 : 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야 한다
    • 유한 대기 : 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가는 임계 구역에 들어올 수 있어야 한다

12-2 동기화 기법

뮤테스 락

  • 상호 배제를 위한 동기화 도구
  • 구현
    • 자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock
    • 임계 구역을 잡그는 역할 : acquire 함수
      • 프로세스가 임계 구역에 진입하기 전에 호출하는 함수
      • lock이 false가 될때까지 임계 구역을 반복적으로 확인하다가 열리면 lock을 true로 바꿈
    • 임계 구역의 잠금을 해제하는 역할 : release 함수
      • 임계 구역에서의 작업이 끝나고 호출하는 함수
  • 바쁜 대기
    • 잠금을 반복하여 확인하는 대기 방식

세마포어

  • 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구
  • 구현
    • 전역 변수 S : 임계 구역에 진입할 수 있는 프로세스의 개수
    • wait 함수 : 임계 구역에 들어가도 좋은지, 기다려야 할지를 알려주는 함수
      • S ≤ 0 : 사용할 수 있는 자원이 있는지 반복적으로 확인
      • S > 0 : S를 1 감소시키고 임계 구역 진입
    • signal 함수 : 임계 구역 앞에서 기다리는 프로세스에 이제 가도 좋다고 신호를 주는 함수
      • 임계 구역에서의 작업을 마친 뒤 S를 1 증가시킴

모니터

  • 공유 자원과 공유 자원에 접근하기 위한 인터페이스를 묶어 관리
  • 프로세스는 반드시 인터페이스를 통해서만 공유 자원에 접근
  • 모니터는 공유 자원에 접근하고자 하는 프로세스를 큐에 삽입
  • 큐에 삽입된 순서대로 하나씩 공유 자원을 이용
  • 조건 변수
    • 프로세스나 스레드의 실행 순서를 제어하기 위해 사용하는 특별한 변수
    • wait와 signal 연산을 수행할 수 있음
      • wait : 호출한 프로세스의 상태를 대기 상태로 전환하고 일시적으로 조건 변수에 대한 대기 큐에 삽입하는 연산
      • signal : 특정 프로세스가 실행될 조건이 충족되었을 때 signal을 통해 재개

results matching ""

    No results matching ""