Synchronization
- Shared data : 여러 프로세스들이 공유하는 데이터 (Critical data)
- Critical section (임계구역): 공유 데이터를 접근하는 고드 영역
- Mutual exclusion : 둘 이상의 프로세스가 동시에 임계구역에 진입하는 것을 막는것
- 임계 구역 문제
- 누가 먼저 공유데이터에 접근?
- 공유 데이터에 누가 접근하고 있는지?
- 공유 데이터를 어떤 순서로 접근할지?
- 솔루션
- Mutual Exclusion - 쓰고있으면 다른 프로세스는 못 들어옴
- Progress - 누군가 기다린다면, 대기 시간이 무한이되면 안됨
- Bounded Waiting - 임계 구역 진입 횟수를 제한하여 독점하지 못하도록
Peterson's Solution
- sw 수준
- two process solution (다중 프로세스에서 보장 X)
- turn : 차례가 된 프로세스, flag : 준비가 되었는지
- turn과 flag는 서로 다른 프로세스를 가리킴
- 다중 프로세서 보장 X, 할당 받기 전에 무한루프를 돎 (busy-waiting 비효율적)
동기화를 위한 하드웨어 지원
- locking : 내가 진입하는 임계구역에 lock을 걸어 다른 프로세스가 못 들어오게
- test_and_set(TAS)
- acquire lock (잠금), release lock(해제)
- lock이 true면 접근 못함.
- 다중 프로세서 보장 X, 할당 받기 전에 무한루프를 돎 (busy-waiting 비효율적)
- 누가 대기하고 있는지 알 수 없음 (bounded-waiting 미충족)
- 해결 : cmpare_and_swap
뮤텍스락과 세마포어
- Mutex Locks
- OS에서 하는 lock
- acquire(), release()
- 멀티프로세서에서 유용함
- Context switching을 하지않아도 됨 ( 정보를 갖고있는 채로 spinlcok 하며 기다리기 때문)
- Semaphores
- binary semaphore : mutex lock과 같음
- counting semaphore : 유한한 개수를 가진 자원 에 대한 접근 제어
- 자원을 반납(signal)하면 +1, 사용하면(wait) -1
- wait와 signal 을 같은 S에 대해 동시에 수행하지 않는 것을 보장해야함
모니터
- 프로그래밍 언어 수준
- 이전의 내용들은 다른 프로세스 간 동기화, 모니터는 한프로세스에서 스레드 간 동기화임
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
[운영체제] 가상 메모리 (Virtual memory) (0) | 2021.01.22 |
---|---|
[운영체제] 메인 메모리 (Main memory) (0) | 2021.01.21 |
[운영체제] 교착상태 (Deadlocks) (0) | 2021.01.20 |
[운영체제] 스케줄링 (Scheduling) (0) | 2021.01.18 |
댓글