동기화 기법의 종류
이전 게시물을 통해 동기화에
대한 개념을 알아보았다.
이번에는 동기화를 위한 기법의
종류에 대해서 알아보겠다.
뮤텍스 락
뮤텍스 락(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 |