반응형
공유 자원을 동시에 여러 프로세스가 사용하는 것을 통제하기 위해, '상호배제 기법'을 사용합니다. 운영체제에서 사용되는 상호배제 기법 중, 가장 일반적인 뮤텍스와 세마포어에 대해서 알아봅니다.
[ Contents ]
1. 뮤텍스 (Mutex)
단일 프로세스만 사용할 수 있는 공유 자원의 이용 여부
단순한 상호배제 기법입니다.
공유자원을 사용할 때 뮤텍스에 '사용중' 표기를 하고, 다 쓰고나면 '사용가능' 표기를 남깁니다. 만약 접근하려는 공유자원이 사용중이라면 기다려야 겠죠.
2. 세마포어 (Semaphore)
현재 사용가능한 공유자원의 수
세마포어는 공유자원이 여러 개일 때 사용합니다.
공유자원을 사용할 때 세마포어를 -1하고, 사용이 끝나면 +1을 합니다. 접근하려는 공유자원의 세마포어가 0이라면, 누군가 사용이 끝날 때까지 대기해야 겠죠.
뮤텍스(Mutex)는 공유자원의 개수가 1인 세마포어로 간주되며, 이진(Binary) 세마포어라고도 합니다.
P(S){
while(S==0){ } // 대기
lock();
S--; // 공유자원 1개 점유
unlock();
/* 작업 */
lock();
S++; // 공유자원 1개 반환
unlock();
}
세마포어(S)를 표현한 간단한 예제입니다.
세마포어 역시 공유자원이므로, DB 로킹과 비슷하게 lock, unlock을 이용해서 CPU가 다른 일을 하지 못하도록 묶어둡니다.
2023.04.25 - [Data Engineering] - [DB] 데이터베이스 병행(동시성) 제어 기법: 로킹, 기본적 2PL
반응형
'CS > OS' 카테고리의 다른 글
[OS] 교착상태 회복기법: 프로세스 종료/회복, 자원 선점 (ft. 희생자 선택의 원칙) (0) | 2023.08.02 |
---|---|
[OS] 교착상태 회피방법: 은행원 알고리즘(Banker's Algorithm) (0) | 2023.08.02 |
[OS] 교착상태(Dead Lock)의 정의와 발생조건 4가지: 상호배제, 점유와 대기, 비선점, 환형대기 (0) | 2023.07.31 |
[OS] 상호배제(Mutual Exclusion)와 임계구역(Critical Section) (0) | 2023.07.24 |
[OS] CPU 스케줄링 기법: FCFS, SJF, SRT, 라운드 로빈, Multi Level (Feedback) Queue (1) | 2023.07.21 |
댓글