프로세스 동기화는 어떻게 이뤄질까

동기화의 대표적 도구

  1. 뮤텍스 락
  2. 세마포
  3. 모니터

뮤텍스 락

뮤텍스 락은 하나의 공유 자원에 접근하는 프로세스들의 실행순서를 보장하는 방식

예) 탈의실(임계구역)에는 한 명만(하나의 쓰레드)만 들어갈 수 있음

이 때, 이용하고 싶은 손님은 탈의실이 잠기면 안에 손님이 있다고 판단하고 기다림

→ 자물쇠 기능을 뮤텍스 락

임계구역에 진입하는 프로세스는 뮤텍스 락으로 임계구역을 이용 중인걸 표현함

대기하는 프로세스들은 계속 임계구역의 lock의 플래그가 바뀌었는지를 확인하는데, 이를 바쁜 대기(busy wait)이라고 함

세마포(카운팅 세마포)

뮤텍스 락과 비슷하지만 세마포 중 카운팅 세마포는 공유 자원이 여러 개 있는 상황에서도 적용이 가능한 동기화 도구

세마포는 바쁜 대기로 자원이 낭비하는걸 막고자 임계구역을 기다리는 프로세스 상태를 대기 상태로 만들고,

그 프로세스의 PCB를 세마포를 위한 대기 큐에 집어넣음

다른 프로세스가 임계 구역에서의 작업이 끝나고 signal 함수를 호출 시,

대기 중인 프로세스를 대기 큐에서 제거하고 프로세스를 깨운 후 준비 큐로 옮겨줌