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)
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] ep5) Concurrency: Deadlock and Starvation (0) | 2024.06.30 |
---|---|
[운영체제] ep4-3) Concurrency: Mutual Exclusion and Synchronization (0) | 2024.06.29 |
[운영체제] ep4-1) Concurrency: Mutual Exclusion and Synchronization (1) | 2024.06.29 |
[운영체제] ep3) 스레드(thread) (1) | 2024.04.08 |
[운영체제] ep2) 프로세스(process) (0) | 2024.04.08 |