Conurrent-Readers/Exclusive-Writers Problem

June Lee·2021년 4월 15일
0

운영체제

목록 보기
17/25

shared resource에 대한 접근 패턴은 read/write 두 가지로 나뉜다. 따라서, read/write에 다 mutual exclusion을 하는 것은 퍼포먼스를 떨어뜨릴 수 있다.그래서 Reader's Lock과 Writer's Lock을 나누는 것이다.

1. Reader's Lock = Shared Lock
: Reader가 임계 구역에 들어가서 락을 걸면, 같은 Reader는 들어갈 수 있지만 Writer는 들어올 수 없다.

2. Writer's Lock = Exclusive Lock
: Writer's Lock을 걸면 다른 쓰레드(프로세스)가 들어올 수 없다.


Starvation(무기한 연기, 기아)

starvation은 unfair & indefinite waiting을 의미한다.
위에서 말한 Reader's Lock과 Writer's Lock을 쓰는 경우, shared resource를 reader가 점유하고 있을 때 Reader는 꼬리를 물고 계속 들어올 수 있다. 그렇기 때문에 Writer는 언제까지 기다려야할 수 없고, 자원 점유에 대한 빈부격차가 커지게 된다.

기아 상태를 해결하는 방법에는 Aging이 있다. Aging은 Reader's Lock을 수정하여 Reader가 자원을 점유한 상태에서 Writer가 이를 기다리고 있다면, 더 이상 다른 Reader가 들어갈 수 없도록 수정하는 것이다.

그러나 Startvation 문제는 해결하지 않는 경우 쓸 데 없는 정지를 멈춰서 더 효율성이 좋기도 하다.

profile
📝 dev wiki

0개의 댓글