본문 바로가기
Computer Science/운영체제

[운영체제] ep4-2) Concurrency: Mutual Exclusion and Synchronization

by 클레어몬트 2024. 6. 29.

Concurrency 방안 3가지

1. Software Approaches - 알고리즘을 잘 설계

2. HW instruction을 이용

3. OS가 제공하는 동기화 툴 이용 (e.g. 세마포, 모니터)

저번 1번에 이어 2번에 대해서 알아보자

 

2. HW instruction을 이용 - 수정이 불가능하며 중간에 인터럽트로 중단되지도 않는다 HW적으로 움직인다

2가지 HW instruction이 있다

① Compare & Swap Instruction: 비교하고 같으면 swap

// word: 어떠한 저장공간의 주소
// 같다면 word를 newval로 swap한다
// compare_and_swap 실행 전 word에 저장되어 있던 값을 return
int compare_and_swap(int* word, int testval, int newval) {
    int oldval;

    oldval = *word;
    if (oldval == testval) *word = newval;
    return oldval;
}

※ 이해를 돕기 위한 코드이다

함수가 아니다! 프로그램도 아니다! HW instruction이다

 

 

 Exchange Instruction: swap

// memory값과 register값을 swap
void exchange(int* register, int* memory) {
    int temp;

    temp = *memory;
    *memory = *register;
    *register = temp;
}

※ 역시 이해를 돕기 위한 코드이다

함수가 아니다! 프로그램도 아니다! HW instruction이다

 

 

 

(n개의 프로세스 사이의 mutual exclusion 예제)

중간에 인터럽트로 중단되지 않는다! 이 실행을 하는 데에 있어서 방해받지 않는다

 

parbegin = parallel begin

병행 프로그래밍에서 여러 프로세스나 스레드를 동시에 실행하기 위한 명령어이다

 

 

 

 

 

(2. HW instruction을 이용 정리)

 Compare and Swap instruction

 Exchange instruction

[장점]

3개 이상 process 가능

간단하다

multiple c.s.에 사용 가능

 

[단점]

busy-waiting O

Starvation O

multiple c.s.을 사용하는 경우에 데드락 O

 

 

 

 

 

 

 

 

 

참고 및 출처: Operating Systems: Internals and Design Principles(William Stalling), Operating System Concepts(Silberschatz, Abraham)