Mutual Exclusion Hardware Instructions

이희제·2021년 9월 26일
2

Operating System

목록 보기
11/12

Dekker, peterson, dijkstra 알고리즘은 소프트웨어적으로 Mutual Exclusion을 하는 방법이다.

  • 속도가 느리다
  • 상호 배제를 하는 로직 실행 중에 선점될 수 있다. (interrupt)
  • Busy waiting

Mutual Exclusion을 Hardware 명령으로 어떻게 처리할 수 있는지 보자.

Hardware Support for ME

➡️ Spcial machine instructions (atomicity, indivisibility)

  • TS (Test and Set) instruction
  • Swap instruction

Definition of TS() instruction (정의)

  • target 값을 로컬 변수에 할당하고 이를 리턴한다.
  • target을 무조건 true로 바꾼다.
function TestAndSet(boolean *target) {
    boolean rv = *target;
    *target = true;
    return rv;
}

  • lock이 false이면 false가 리턴되어 CS에 접근이 되고 lock은 true가 된다.
  • CS를 빠져나오면 lock을 다시 false로 만들어준다.

Definition of swap() instruction (정의)

  • 두 개의 변수를 서로 바꿔준다.

void swap(boolean *a, boolean *b){
    boolean temp = *a;
    *a = *b;
    *b = temp;
}

  • 각 프로세스는 key라는 로컬 변수를 각각 가지고 있다.
profile
오늘만 열심히 살고 모든 걸 남기되 후회는 남기지 말자

0개의 댓글