[완료] 임계구역문제의 요건에 대해
글쓴이: dalmagi / 작성시간: 월, 2008/07/14 - 5:11오후
안녕하세요
공부하다가 모르는게 있어서요
공룡책 중에 하나인데 임계구역문제의 해결안이 갖춰야할 요건중에 "진행(progress)" 이라는게 있는데
설명이
"임계구역에서 실행되는 스레드가 없고 그리고 임계 구역으로 진입하려고 하는 스레드들이 있다면, 임계 구역이 아닌 곳에서 실행중이 아닌 스레드들만 다음에 누가 그 임계 구역으로 진입할 수 있는 지를 결정하는 데 참여할 수 있으며, 이 선택은 무한히 연기될 수 없다"
라고 되어있습니다.
그런데 말이 너무 이상해서 혹시 잘못 번역된 문장은 아닌지 의심됩니다. 거의 이해가 안되는데 설명 좀 해주실 분 있나요
Forums:
임계구역(critical region)에서 발생할 수 있는 문제를 해결하기 위한 좋은 조건들 중 두가지에 대해서
설명하고 있는 글입니다. 한글판은 안봐서 어딘지 잘 모르겠네요.
"임계구역에서 실행되는 스레드가 없고 그리고 임계 구역으로 진입하려고 하는 스레드들이 있다면, 임계 구역이 아닌 곳에서 실행중이 아닌 스레드들만 다음에 누가 그 임계 구역으로 진입할 수 있는 지를 결정하는 데 참여할 수 있으며"
A, B, 그리고 C 세개의 쓰레드는 모두 임계구역 T를 한번씩 거치도록 프로그래밍 되어있다고 가정합시다. A, B, C 모두 임계구역에 진입하지 않았다면 그 세개 중 어떤 쓰레드가 먼저 임계구역에 진입할 지 결정합니다. 만약 A가 먼저 임계구역에 들어가서 작업을 하고 있다면, 당연히 B나 C는 임계구역에 진입하지 못합니다. A가 임계구역을 빠져나가게 되면 B 또는 C 둘중 하나가 임계구역이 진입을 해야 하는데, 이 때 임계구역을 이미 진입했다가 빠져나온 쓰레드로써 B와 C가 내려야 하는 결정에 방해가 되면 안됩니다. 쉽게 얘기해서 T 지역에 진입할 때 lock을 걸고 빠져나올때 lock을 풀어야 하는데, A가 임계구역을 빠져나오면서 lock을 풀지않고 그냥 다른 일을 해버리면 B와 C는 아무것도 못하는 상태가 되겠죠. 임계구역과 관계있는 B와 C만이 lock을 가지고 다투는 상황이 되어야 합니다.
"이 선택은 무한히 연기될 수 없다"
deadlock을 말하는 것 같은데요. 위에서 A가 lock을 가지고 다른 일을 해버리는 것과 비슷한 상황이라고 생각하면 될 것 같습니다.
이해가 조금
되는 것 같네요 감사합니다.
그런데 "임계구역이 아닌 곳에서 실행중이 아닌 스레드들만" 이라는 문장은
다시말해 임계구역으로 들어가기위해 '대기중인' 스레드들을 지칭하기 위해 쓰인 말인가요?
좀 헷갈리네요
화이팅(fighting) 말고 화이트닝(whitening) 하면 안되나요.
그렇겠죠
전혀 관계없는 애들이 참가한다는건 의미가 없죠.
댓글 달기