Mutex Locks
앞에서 제시한 하드웨어 기반 해결책은 응용 프로그래머는 사용할 수 없다.
따라서 임계구역 문제를 해결하기 위한 상위 수준 소프트웨어 도구들을 개발했는데, 그중 하나가 mutex lock이다.
프로세스는 임계구역에 들어가기 전에 반드시 lock을 획득해야 하고, 임계구역을 빠져나올 때는 lock을 반환해야 한다.
mutex lock은 available이라는 boolean 변수를 가지는데 이 변수는 lock이 available 한 지 표시해준다.
acquire()과 release()는 다음과 같이 정의된다.
위의 구현 방식은 busy waiting이라는 문제를 발생시킨다.
busy waiting이란 한 프로세스가 임계구역에 있는 동안 다른 프로세스가 계속 조건을 확인하며 루프를 실행하는 것을 의미한다.
이는 CPU cycle의 낭비이다.
이러한 mutex lock은 spin lock이라고도 하는데, lock을 사용할 수 있을 때까지 프로세스가 회전하기 때문이다.
하지만 spin lock은 프로세스가 lock을 기다려야 하고, 문맥 교환에 상당한 시간이 소요될 때 문맥 교환이 필요하지 않다는 장점이 있다.
따라서 한 스레드가 잠시 임계구역에서 실행되는 경우에는 spin lock이 유리하다.
'전공 > 운영체제' 카테고리의 다른 글
[운영체제] 동기화 도구들: 모니터 (0) | 2021.12.17 |
---|---|
[운영체제] 동기화 도구들: 세마포 (0) | 2021.12.17 |
[운영체제] 동기화 도구들: 동기화를 위한 하드웨어 지원 (0) | 2021.12.16 |
[운영체제] 동기화 도구들 - (2) (0) | 2021.12.16 |
[운영체제] 동기화 도구들 - (1) (0) | 2021.12.16 |