티스토리 뷰
### Mutex Lock ###
: S/W수준의 synchronization tool
: critical section에서 mutual exclusion을 해결하기 위해 rock변수를 사용한다.
: busy waiting 문제 발생
(busy waiting - 권한을 얻을 때까지 확인하는 것(원하는 자원을 얻기 위해 기다리는 것 x) => cpu 자원 낭비)
acquire() {
while (!available);
// busy wait
available = false;
}
release() {
// lock을 풀어주는 function
available = true;
}
while true{
// acquire lock{
//critical section
}
// release lock{
// remainder section
}
}
### Semaphore ###
: mutex lock의 일반적인 형태
: wait() -> P(), signal() -> V()
wait(S){
while (S <= 0);
//busy wait
S--;
}
signal(S){
S++;
}
(resouce)를 해제하기 위해 signal() 사용 => lock 푸는 것과 유사
< 종류 >
< Binary semaphore >
: 0,1 만 사용
: mutex lock과 같다
(while 문으로 무한 루프 => busy waiting 문제 발생
(busy waiting - 권한을 얻을 때까지 확인하는 것(원하는 자원을 얻기 위해 기다리는 것 x) => cpu 자원 낭비))
< Counting semaphore >
: 범위 제약 없는 semaphore
< Busy waiting problem >
: mutex lock의 구현에서 발생
: spinlock(busy waiting이 굉장히 긴 경우 사용 => busy waiting에 제한을 걸어 사용)
< Busy waiting을 almost 발생시키지 않는 semaphore >
(내부적을 h/w기반의 synchronize tool을 사용해야한다 => busy waiting이 포함되어 있어서 almost이다.)
반응형
'운영체제 > 이론' 카테고리의 다른 글
(34) Bounded Buffer Problem (Synchronization Problems) (0) | 2020.09.24 |
---|---|
(33) Synchronization Problems (0) | 2020.09.24 |
(31) Hardware Support Synchronization (0) | 2020.09.23 |
(30) Critical Section(임계구역) (0) | 2020.09.23 |
(29) Synchronization Tools - 2 (0) | 2020.09.21 |
공지사항
최근에 올라온 글