운영 체제(OS) 수준에서 제공하는 쓰레드(Thread) 동기화 정책

KKH_94·2023년 9월 4일
0

Reactive_Programming

목록 보기
14/18

뮤텍스(Mutex)

뮤텍스는 상호 배제(mutual exclusion)를 위한 동기화 기법 중 하나로, 공유 리소스에 대한 접근을 제어하는데 사용됩니다.
오직 하나의 쓰레드만 뮤텍스를 소유하고 공유 리소스에 접근할 수 있으며, 다른 쓰레드들은 뮤텍스를 획득하기 위해 대기해야 합니다.

세마포어(Semaphore)

세마포어는 뮤텍스와 유사하게 공유 리소스에 대한 접근을 제어하는 데 사용됩니다. 그러나 세마포어는 뮤텍스와 달리 여러 쓰레드가 동시에 리소스에 접근할 수 있도록 허용하는 경우도 있습니다.
세마포어의 값은 사용 가능한 리소스의 수를 나타내며, 이 값을 조절하여 리소스의 사용을 제어합니다.

조건 변수(Condition Variables)

조건 변수는 쓰레드 간의 통신과 동기화를 위해 사용됩니다. 주로 원하는 조건이 충족되었을 때 쓰레드를 깨워 작업을 수행하도록 할 때 사용합니다.
대기 중인 쓰레드는 조건 변수의 신호를 기다리며, 다른 쓰레드가 신호를 보내면 대기 중인 쓰레드 중 하나가 깨어나 작업을 시작합니다.

스핀락(Spinlock)

스핀락은 뮤텍스와 유사한 동기화 메커니즘으로, 쓰레드가 리소스에 접근하려고 시도할 때 리소스가 사용 가능할 때까지 무한 대기합니다.
스핀락은 대기 시간이 짧은 경우에 유용하며, 무한 루프에 빠질 가능성이 있으므로 주의해야 합니다.

바리어(Barrier)

바리어는 여러 쓰레드가 동시에 특정 지점에서 만날 수 있도록 하는 동기화 메커니즘입니다. 주로 병렬 처리 작업을 동기화하기 위해 사용됩니다.

스레드 우선순위

OS는 쓰레드의 우선순위를 관리하며, 우선순위가 높은 쓰레드에게 CPU 시간을 할당하는 방식으로 동기화를 제어할 수 있습니다.

profile
_serendipity

0개의 댓글