hyojeonglee / osfall2019

Undergraduate Operating Systems course (2019 fall)
17 stars 8 forks source link

lock의 중첩/다중 호출 관련 #43

Open Namnamseo opened 5 years ago

Namnamseo commented 5 years ago

한 thread가, 이미 한 range의 lock을 잡은 상태로 (그와 겹치지 않는) 다른 range의 lock을 잡으려고 시도하는 경우가 가능하다고 생각하고 고려해야 하나요?

hyojeonglee commented 5 years ago

네, 고려하셔야합니다. 추가로, readlock의 경우 아래와 같이 한 thread가 여러 개의 겹치는 range에 대한 lock을 잡는 경우도 가능해야합니다.

readlock(30, 30) /* 0 to 60 */
readlock(40, 20) /* 20 to 60 */
...
readunlock(40, 20)
readunlock(30, 30)
kjp4155 commented 5 years ago

아래 두 상황처럼 잡은 lock을 일부분만 unlock 하는 경우는 가능한가요?

readlock(30, 30) /* 0 to 60 */
...
readunlock(40, 10) /* 30 to 50 */
readlock(30, 30) /* 0 to 60 */
readlock(40, 20) /* 20 to 60 */
...
readunlock(40, 10) /* 30 to 50 */
lynring24 commented 5 years ago

전체를 unlock해주셔야 합니다. 즉 lock 잡은 범위와 정확히 같은 범위에 대한 unlock만 고려하시면 됩니다.