리눅스 커널 RCU 에 대해 질문입니다.

trymp의 이미지

RCU 에 대해서 공부하고 있는데요.

제가 알고 있는 lock 메카니즘은 해당 자료구조를 보호하기 위해 존재하잖아요.
그래서 아래와 같이

read_lock(&st->lock);

이런식으로 st 구조체를 보호하기 위해 전용 락변수를 두잖아요.

그러면 RCU 의 경우에는 rcu_read_lock() 할때 어떤 변수에 대한 참조카운트를 증가시키는지
어떻게 알죠..

rcu_read_lock();
aobj = rcu_dereference(AA);
rcu_read_unlock();

다른 모듈에서
rcu_read_lock();
bobj = rcu_dereference(BB);
rcu_read_unlock();

위와 같이 BB 에 대한 참조 카운트가 0가 된것인지 AA에 대한 참조 카운트가 0가 된것인지
어떻게 판별하죠??

제가 RCU 에 대해 이해 안가는 부분이 있어서 고수님들께 질문드립니다.

답변주시면 감사하겠습니다.