Linux 2.6 커 널 의 새로운 잠 금 메커니즘 - RCU
Linux 원본 에 첨부 된 문서
http://www.ibm.com/developerworks/cn/linux/l-rcu
요약:
RCU(Read-Copy Update)。RCU 에 의 해 보 호 된 공유 데이터 구조 에 대해 독 자 는 어떠한 자물쇠 도 얻 지 않 아 도 접근 할 수 있 지만 작성 자 는 이 를 방문 할 때 먼저 복사 본 을 복사 한 다음 에 복사 본 을 수정 하고 마지막 으로 하나의 반전 (callback) 체 제 를 사용 하여 적당 한 시기 에 원래 의 수 거 를 가리 키 는 지침 을 새로운 수 정 된 데 이 터 를 다시 가리킨다.이 때 는 이 데 이 터 를 인용 한 모든 CPU 가 공유 데 이 터 를 종료 하 는 것 입 니 다.
독자 들 은 RCU 가 보호 하 는 공유 데이터 에 접근 하 는 동안 차단 되 어 서 는 안 된다.
작성 자 는 RCU 가 보호 하 는 공유 데 이 터 를 방문 할 때 독자 와 어떠한 자물쇠 도 경쟁 할 필요 가 없 으 며, 한 명의 작성 자 보다 많은 경우 에 만 어떤 자 물 쇠 를 얻어 다른 작성 자 와 동기 화 해 야 한다.작성 자 는 데 이 터 를 수정 하기 전에 먼저 수 정 된 요소 의 사본 을 복사 한 다음 에 사본 에서 수정 을 한 다음 에 쓰레기 회수 기 에 리 셋 함 수 를 등록 하여 적당 한 시기 에 진정한 수정 작업 을 수행 하도록 한다.적절 한 시 기 를 기다 리 는 이 시 기 를 grace period 라 고 하 는데 CPU 에서 컨 텍스트 전환 이 발생 하면 quiescent state 라 고 합 니 다. grace period 는 모든 CPU 가 quiescent state 를 한 번 겪 는 데 필요 한 기다 림 시간 입 니 다.쓰레기 수집 기 는 grace period 이후 작성 자가 등록 한 리 셋 함 수 를 호출 하여 진정한 데이터 수정 이나 데이터 방출 작업 을 완성 하 는 것 입 니 다.
함수 요약:
/* RCU 。*/
rcu_read_lock()
/*
rcu_read_lock , 。 " "(read-side critical section)。 , 3, 2 1 。
*/
rcu_read_unlock()
/*
RCU , , grace period , , 。 RCU , grace period 。
*/
synchronize_rcu()
/*
call_rcu RCU , , softirq , synchronize_rcu、synchronize_kernel synchronize_shced 。 func RCU , 。 CPU , 。 head func, RCU , 。 , synchronize_rcu call_rcu。
*/
void fastcall call_rcu(struct rcu_head *head,
void (*func)(struct rcu_head *rcu))
/*
, p v。
*/
rcu_assign_pointer()
typeof(p) rcu_assign_pointer(p, typeof(p) v);
/*
p
*/
rcu_dereference()
typeof(p) rcu_assign_pointer(p, typeof(p) v);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.