(정리중) 동기화 스핀락 뮤텍스 세마포

Jinhoon Yoon·2023년 8월 31일
0

운영체제

목록 보기
5/5

동기화(synchronization)를 위한 전략 3가지

스레드 또는 프로세스의 동기화를 위해 자주 사용되는 락 메커니즘
1. 스핀락(spinlock)
2. 뮤텍스(mutext)
3. 세마포(semaphore)

뮤텍스는 != 바이너리 세마포

00:00 오프닝
00:10 race condition, 동기화, 임계 영역 뜻
00:51 mutual exclusion 어떻게 보장할 수 있나?
01:19 spinlock (feat. CPU의 도움)
07:08 spinlock의 단점
07:31 mutex
11:12 mutex가 spinlock 보다 항상 좋은가?
13:05 semaphore
18:03 mutex와 binary semaphore는 같은가?
21:47 참고사항
22:13 클로징


용어 정리

경쟁 조건(race condition)

  • 여러 프로세스/스레드 가 동시에 같은 데이터를 조작할 때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황

동기화(synchronization)

  • 여러 프로세스/스레드 를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것

임계 영역(critical section)

  • 공유 데이터의 일관성을 보장하기 위해 [하나의 프로세스/스레드 만 진입해서 실행] (=mutual exclusion) 가능한 영역

어떻게 (mutual exclusion) 을 보장할 수 있을까?

락(lock)을 사용하자!

여러 프로세스/스레드 가 락(lock) 을 획득하기 위해 경합하고,
이긴 것만 임계 영역(critical section)에 들어가서 실행하고,
실행이 끝나면 임계 영역(critical section)을 빠져 나오면서 락(lock)을 반환한다


스핀락(spinlock)

  • 락을 가질 수 있을 때 까지 반복해서 시도
  • 단점: 기다리는 동안 CPU를 낭비한다

뮤텍스(mutex)

  • 락을 가질 수 있을 때 까지 휴식

아래의 두 조건을 만족할 경우,
스핀락(spinlock)이 뮤텍스(mutex)보다 이점이 더 크다.

1) 멀티 코어 환경 이고,
2) critical section 에서의 작업이 컨텍스트 스위칭보다 빨리 끝난다면,

0개의 댓글