본문 바로가기
CS/OS

[OS] 병행성 제어: 뮤텍스(Mutex)와 세마포어(Semaphore)

by jangThang 2023. 7. 24.
반응형

 공유 자원을 동시에 여러 프로세스가 사용하는 것을 통제하기 위해, '상호배제 기법'을 사용합니다. 운영체제에서 사용되는 상호배제 기법 중, 가장 일반적인 뮤텍스와 세마포어에 대해서 알아봅니다.

 

[ 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

     

    [DB] 데이터베이스 병행(동시성) 제어 기법: 로킹, 기본적 2PL

    데이터베이스 병행 작업 시 문제점을 해결하기 위한 로킹과 기본적 2PL에 대해서 알아보겠습니다. [ Contents ] 1. 병행작업의 문제점 운영체제에서 같은 자원을 쓰는 프로세스를 병렬 처리할 때 교

    star7sss.tistory.com

     

    star가 되고나서 Tistory

    반응형

    댓글