반응형

동기화 기법의 종류

 

12 - 동기화

동기화(Synchronizarion) 동시다발적으로 실행되는 프로세스들을 올바르게 수행하기 위해서는 실행 순서와 자원의 일관성을 보장할 수 있는 동기화 작업이 필요하다. 프로세스 동기화란 프로세스들

jschan0911.tistory.com

이전 게시물을 통해 동기화에

대한 개념을 알아보았다.

 

이번에는 동기화를 위한 기법의

종류에 대해서 알아보겠다.

 

뮤텍스 락

뮤텍스 락(MUTual EXclusion lock)은

탈의실을 이용하는 것과 같이

한 번에 하나의 프로세스만 임계 구역에

진입할 수 있는 기법이다.

 

이는 하나의 전역 변수와

두 개의 함수로 구현할 수 있다.

 

종류 설명
lock 전역 변수 프로세스들이 공유하는 전역 변수로 임계 구역에 진입 가능 여부를 나타낸다.
acquire 함수 임계 구역에 진입하기 전에 호출하는 함수로, 임계 구역을 잠그는 역할을 한다.
release 함수 임계 구역에서의 작업이 끝나고 호출하는 함수로, 임계 구역의 잠금을 해제하는 역할을 한다.

 

이때, acquire 함수 내부에는

전역 변수 lock을 통해

임계 구역 진입 가능 여부를

쉴 새 없이 반복하며 확인하는데

이를 바쁜 대기(Busy wait)라고 한다.

 

세마포

세마포(Semaphore)는

뮤텍스 락과 비슷하지만

조금 더 일반화된 동기화 도구다.

 

이는 탈의실이 여러 개 있는 상황과 같이

공유 자원이 여러 개 있을 경우에

각 프로세스가 임계 구역에

적절히 진입할 수 있는 기법이다.

 

이 방식도 뮤텍스 락과 마찬가지로

하나의 전역 변수와

두 개의 함수로 구현할 수 있다.

 

종류 설명
S 전역 변수 사용 가능한 공유 자원 개수를 나타낸다. (임계 구역 진입이 가능한 프로세스의 개수)
wait 함수 임계 구역 진입 가능 여부를 알려주는 역할을 한다.
signal 함수 임계 구역 진입을 기다리는 프로세스에게 진입하라는 신호를 주는 역할을 한다.

 

세마포를 이용하면

상호 배제를 위한 동기화 뿐 아니라

실행 순서 제어를 위한 동기화도 만족할 수 있다.

 

S를 0으로 두고 먼저 실행할 프로세스 뒤에

signal함수, 다음 프로세스에 wait함수를 붙인다.

 

모니터

모니터(Monitor)는 공유 자원과

공유 자원에 접근하기 위한 통로인

인터페이스를 묶어서 관리하며,

프로세스는 반드시 인터페이스를 통해서만

공유 자원에 접근하도록 하는 기법이다.

 

모니터는 조건 변수(Condition variable)

이용하여 특정 조건을 바탕으로

프로세스를 실행하고 일시 중단한다.

 

조건 변수란

프로세스나 스레드의 실행 순서를

제어하기 위해 사용하는 특별한 변수이다.

 

모니터 또한 세마포와 마찬가지로

실행 순서 제어를 위한 동기화도 제공한다.

 

 

반응형

'개인 학습 > 운영체제' 카테고리의 다른 글

15 - 교착 상태 발생 조건  (0) 2023.02.09
14 - 교착 상태  (0) 2023.02.09
12 - 동기화  (0) 2023.02.09
11 - CPU 스케줄링 알고리즘  (0) 2023.02.09
10 - CPU 스케줄링  (0) 2023.02.09

+ Recent posts