ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 뮤텍스 락
    운영체제/프로세스 동기화 2018. 2. 4. 00:32

    임계 구역 문제에 대한 하드웨어 기반 해결책은 복잡하고, 응용 프로그래머는 사용할 없다.

    이때문에 소프트웨어 기반 해결책들이 사용되는데 가장 간단한 것이 뮤텍스 이다.

    뮤텍스 락을 사용하게 되면 프로세스가 임계 구역에 들어가기 반드시 락을 획득해야 하고

    임계 구역을 빠져나올 락을 반환해야 한다.

     

     

    뮤텍스 락을 이용한 임계 구역 문제 해결 방안

    do {

        acquire() // 락을 획득

        // 임계 구역

        release() // 락을 반환

        // 나머지 구역

    } while (true);

    acquire() {

        while (!available)

            //바쁜 대기

        available = false;

    }

    release() {

        available = true;

    }

    뮤텍스 락은 available 이라는 boolean 변수를 가진다.

    변수가 lock 사용될 있는지를 표시한다.

    Lock 사용되면 acquire() 호출은 성공하고 lock 사용불가 상태가 된다.

    acquire() 함수나 release() 함수는 원자적으로 실행되어야 하기 때문에 하드웨어 기법 하나를 사용해서 구현된다.

     

    지금까지 설명한 구현 방식의 단점은 바쁜 대기 해야 한다는 것이다.

    이러한 유형의 뮤텍스 락은 락이 사용 가능해지기를 기다리면서

    프로세스가 계속 회전을 하고 있기 때문에 spinlock 이라고도 불린다.

     

    바쁜 대기 CPU 사이클을 낭비하게 된다.

    하지만 락을 기다리는 동안 문맥 교환을

    전혀 필요로 하지 않는 것이 spinlock 장점이다.


    '운영체제 > 프로세스 동기화' 카테고리의 다른 글

    고전적인 동기화 문제들  (0) 2018.02.04
    세마포어  (0) 2018.02.04
    동기화 하드웨어  (0) 2018.02.04
    피터슨의 해결안  (0) 2018.02.04
    임계구역 문제  (0) 2018.02.03

    댓글