RCU에 대한 이해 Jan 6, 2009

RCU를 다룬 문서들이 많이 있다. Paul은 이미 많은 paper들을 작성해 왔으며, 많은 잡지의 기사들이 RCU에 대해 다뤄왔다. 그럼에도 불구하고 많은 사람들이 RCU를 정확히 이해하지 못하고 있다. 그것은 지금까지 우리가 자료구조 자체와 자료구조에 의해 관리되고 있는 데이터의 대한 동기화를 함께 생각하는 습관을 가지고 있기 때문이다.즉, 데이터를 보호하지 않고 항상 Code를 보호하는 습관을 들여왔기 때문이다.

RCU를 통해 보호되는 자료구조들은 자료 구조 자체에 있어서 well-define되어 있지만, 자료 구조에 의해 관리되는 데이터 중, stale한 데이터는 알고리즘에 의해 cover되어야 한다. RCU는 단연, stale한 데이터를 생성한다. 하지만 여러 알고리즘들은 이러한 데이터를 극복하고 있다.

아래 첨부는 그나마 RCU를 가장 쉽게 잘 설명한 LWN의 글을 의역한 것이다.
이 기사 또한 stale data에 대한 처리는 언급하지 않고 있다.
그러므로 읽는 사람들은 계속해서 혼동스러울 수 있다.

barrios는 앞으로 stale데이터에 대한 처리를 실제 kernel에서 구현된 예를 가지고 설명하려고 한다.
이 역시 시간이 있다면.. 하지만 이에 대한 이해 없이는 RCU를 절대 소화해 낼 수 없을 것이다.

RCU에 대한 이해

3 개의 덧글:

Sangman Kim said...

커널 뉴비인데 번역해주신 RCU관련 글이 RCU를 이해하는데 많은 도움되었습니다. Paul씨가 처음 논문쓰신뒤로 관련된 글을 참 많이도 쓰셨더군요. (심지어 Wikipedia RCU글까지...)

번역도 감사드리고요, 커널에서 구현된 RCU 예제와 관련되서도 앞으로 글 써주시면 좋겠습니다. 저는 RCU의 기본적 mechanism은 이해했지만, 앞으로 RCU를 이용해 어떤 것을 만들라고 했을 때 제대로 만들 수 있을지 모르겠네요. 특히 writer쪽은 sync에 많은 고려가 필요할 것 같은데요, 예제를 통해 설명해주시면 많은 도움이 될 것 같습니다.

Minchan Kim said...

도움이 되셨다니 감사합니다.
안 그래도 RCU를 이해하기 위한 예제를 하나 작성하려고 생각하고 있었는데..
조만간 작성을 완료하면 공유할 생각입니다.
감사합니다. - barrios

Gyu said...

큰 도움되었습니다. 감사합니다!