Computer Science

[운영체제] 프로세스 동기화

Supreme_YS 2022. 3. 4. 12:00
  • 프로세스 동기화란?
    • 서로 협력을 하는 프로세스들이 순서나 규칙을 통해서 공유자원의 일관성을 보장하는 것입니다.
    • 스타크래프트에서 한번 캐면 소멸되는 미네랄이 있습니다. 하지만 그 미네랄을 두고 착실한 2명의 scv가 서로 경쟁을 하면서 미네랄을 캐는데 프로세스 동기화가 되지 않아서 두명의 scv가 사이좋게 미네랄을 들고 있습니다. 이러한 문제를 해결하기 위해서 서로 규칙을 정해서 공유 자원의 신뢰성을 만드는것이 프로세스 동기화 라고 합니다.
  • 경쟁 조건 (Race Condition)이란?
    • 여러 프로세스가 공유 자원을 차지하려고 경쟁을 할때 프로세스가 공유 자원에 접근 순서에 따라 실행결과가 달라지는 경우입니다.
  • 임계 구역 (Critical Section)이란?
    • 프로세스간에 공유자원을 접근할떄 문제가 생기지 않게 한번에 하나의 프로세스만 접근하게 보장을 해줘야 하는 영역입니다.
    임계구역의 예.
    • 은행계좌문제
    • 부모는 은행계좌에 입금을 하고 자식은 은행계좌에서 출금을 한다.
    • 임계구역: 은행계좌
  • 임계구역을 해결하기 위한 조건3가지
    • 상호 배제 (Mutual Exclusion)
      • 어떤 프로세스가 임계구역에서 작업중일때에는 그누구(프로세스)도 못들어오게 한다.
    • 진행 (Progress)
      • 임계구역에서 진행중인 프로세스가 없다면 적절한 프로세스 하나를 골라서 들어오게한다.
    • 유한 대기 (Bounded Waiting)
      • 어느 프로세스더라도 기다리면 유한한 시간안에 임계구역에 들어가야한다.(기아 프로세스가 되는것을 방지하기위해서이다.)
  • 임계구역 문제 해결방법
    • 피터슨 알고리즘 소프트웨어적으로 해결을 한다. 하지만 프로세스가 몰리면 (while문으로 인한)Busy Waiting 상태가 된다.
    • 뮤텍스
      • “하나”의 열쇠 가지고 열쇠가 있어야 임계구역에 들어가고 나올때는 열쇠를 다른 프로세스에게 열쇠를 넘겨준다. (동기화 대상 1개)
    • 세마포어
      • 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것

면접시 예상 질문

뮤텍스와 세마포어의 차이?

세마포어는 공유 자원에 세마포어의 변수만큼의 프로세스(또는 쓰레드)가 접근할 수 있습니다.

반면에 뮤텍스는 오직 1개만의 프로세스(또는 쓰레드)만 접근할 수 있습니다.

현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다.

하지만 뮤텍스는 락(lock)을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.

 

뮤텍스

뮤텍스

세마포어

세마포어