본문 바로가기

mutex

모니터(monitor)(sub: 그 모니터 아닙니다 ㅋㅋ) 모니터 1. mutual exclusion을 보장 2. 조건에 따라 스레드가 대기(waiting) 상태로 전환 가능 모니터는 언제 사용되나? 1. 한번에 하나의 스레드만 실행돼야 할 때(mutual exclusive) 2. 여러 스레드와 협업(cooperation)이 필요할 때! 모니터의 구성 요소 1.mutex 2.condition variable(s) : waiting queue를 가지며, 그 안에 조건이 충족되길 기다리는 스레드들이 대기 상태로 머무는 곳! condition variable에서 주요 동작(operation) 1. wait : thread가 자기 자신을 condition variable의 waiting queue에 넣고 대기 상태로 전환 2. signal : waiting queue에.. 더보기
스핀락(spinlock) 뮤텍스(mutex) 세마포(semaphore) 임계 영역 공유 데이터의 일관성을 유지하기 위해, 하나의 프로세스/스레드만 진입할 수 있는 코드 영역!! Q. 그럼 어떻게 하나의 프로세스/스레드만 진입(mutual exclusive)시킬까? A. Lock을 활용! 참고로, lock은 모든 프로세스/스레드에서 동시 접근이 가능해야 하기에, 전역(global)으로 선언을 해야 한다. while(test_and_set(&lock) == 1) ; -> lock==1인 동안에는 무한 루프를 계속 돌며, critical section에 진입하기 못하게 한 다. (mutual exclusive 해결) ( 위 코드에서 만약 T1이 Critical Section 도중에 context switching이 일어났다고 해도, 다른 프로세스/스레드들은 T1이 다시 재실행되어.. 더보기