운영체제

세마포어

뮤텍스는 한 번에 하나의 스레드만 임계 영역에 진입할 수 있습니다. 하지만 때로는 N개까지 동시 접근을 허용해야 합니다.

카운팅 세마포어와 바이너리 세마포어를 중심으로 세마포어의 판단 흐름을 읽습니다.

핵심 흐름

1

세마포어의 동작

세마포어는 음이 아닌 정수 값과 두 가지 원자적 연산으로 구성됩니다.

2

생산자-소비자 문제

생산자-소비자(Producer-Consumer)는 동기화의 가장 대표적인 고전 문제입니다.

3

독자-저자 문제

독자-저자(Readers-Writers) 문제는 데이터베이스, 파일 시스템, 캐시에서 자주 만나는 패턴입니다.

4

세마포어의 구현: 바쁜 대기 vs 큐 기반

세마포어를 바쁜 대기(스핀)로 구현하면 CPU를 낭비합니다.