Synchronization
통합 프로세스는 서로 영향 받거나 주거나 한다. 공유 데이터 허가되거나 논리적 주소 공간을 공유하지만 동시성 접근은 데이터 무결성 결과를 초래한다.
그러므로 순서대로 실행되도록 보장해야함
Race Condition
- 같은 데이터를 동시에 처리 및 접근하고 실행 결과가 access가 일어나는 특정 순서에 따라 달라지는 상황
int static number = 0;
Synchronization(동기화)
- race condition을 예방하기 위해 사용하는 동기화를 실행
- 시스템을 동시에 작동시키기 위해 여러 프로세스들을 조화
Critical Section Problem(임계 영역 문제)
- 경쟁 상태가 가장 많이 발생할 수 있는 곳
- 프로세스를 최소 하나만 독점적으로 처리, 업데이트 등 할 수 있게 보장해야 함
- 두 프로세스가 동시에 실행되지 않게 해야함
- 임계 영역 Required
1) Mutual Exclusion
▶ 한 프로세스를 독점적으로 실행되도록 보장
2) Progress(: avoid deadlock)
▶ 교착 상태에 빠지지 않도록 선택된 섹션이 다음 프로세스에 들어가도록 보장
3) Bounded Waiting(: avoid starvation)
▶ 무한대기 (기아)현상을 조절 및 제한 해줘야 함
Peterson's Solution
동기화를 위한 HW 지원
1) Atomicity
- 원자적 작업은 중단할 수 없는 작업 단위
- 원자적 작업 기능 두 종류 : test_and_set() & compare_and_swap()
1. test_and_set()
--> 원자적으로 수행한다는 것은 인터럽트 되지 않고 수행
--> lock이 false인 동안에 무한대기 걸어 놓고 true가 들어온다면 임계 영역 진입
2. compare_and_swap()
--> 위 명령어와 다르게 3개의 매개변수 사용
--> lock이 0이면 1반환, 1이면 0을 반환
Atomic Variable
- 상호 배제를 보장 (race condition을 동반한 단일 변수가 있을 수 있음)
Memories Barriers
- 메모리의 모든 변경사항을 다른 모든 프로세서로 전파하는 명령어를 제공하여 다른 프로세서에서 실행 중인 스레드에 메모리 변경 사항을 알림
교육출처
링크텍스트