RCU 정리..

박경태 2007.10.21 03:35 조회 수 : 6824 추천:87

얼렁뚱땅 넘어가긴했네요.. ㅋㅋ
done_list가 필요하지 않은 데이터라는 걸 알아서,,
해제 부분은 잘 파고든거 같구요..
바빠서 언제 다시 정리할 수 있을지 잘 모르겠습니다.
우선 대충.... 써놓은거만 옮겨둡니다.

===========================================
<< 의문점 >>
배치는 무엇을 말하나....??

===========================================
<< 변수 >>
rcp->completed     // 마지막 배치가 완료된 숫자...

rdp->passed_quiesc // There was a quiescent state since grace period.
rdp->qs_pending    // Grace period already completed for this cpu.

cpus_empty 의 의미 : 모든 quienscent state를 지났으니, grace period를 종료한다.

done_list : old-data 를 의미..  더 이상 필요로 되지 않는 데이터..

===========================================
<< 함수 >>
rcu_do_batch : donelist의 x 변수를 모든 레벨의 캐쉬에 등록한 다음,
               donelist에 등록된 함수를 실행.. 리스트에 대해 반복 (최대 blimit만큼).
               (list에 등록된 함수는 free역할을 하는 콜백함수이다.)
               donelist에 남아있는 queue의 길이(qlen)을 갱신
               queue가 남아있으면, donetail에 남은 리스트를 보관하고,
               queue가 비어있게 되면, tasklet_schedule을 실행한다.
               이 함수는 tacklet context에서 __rcu_process_callbacks에서 호출된다.
               그리고 다시 그 함수는 tasklet_init 함수로 등록되어 있다.
                                        

call_rcu  : 지정한 오브젝트의 삭제를 요청하는 함수.. (오브젝트의 정지상태에서)

force_quiescent_state : call_rcu에서 callback 함수 queue가 많은 경우 호출되는 함수
                         코드에서는 단순히 need_resched를 셋 함.

===========================================
<< 요약 >>
Grace Period 시작   :   rcu_start_batch 를 호출..
(Grace Period = Quiescent Period)

그리고.. :
Period 시작을 BroadCase로 알려주지 않기 때문에...  
rcu_check_quiescent_state 호출을 최소 두번이상 하는 것으로 각 시나리오 케이스를 진행함..
첫번째 호출시 Grace Period 시작으로 인지 하고 모든 CPU마스크를 셋한다.
두번째 호출에서는... 해당 CPU 마스크를 클리어해준다.
CPU마스크가 모두 클리어되었다면... Grace Period의 종료 작업이 이루어진다..
필요한 경우, Grace Period가 종료될 때 다음 Grace Period를 위해 rcu_start_batch(0)을 호출한다.
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2201
1525 앞으로의 스터디 방향 [2] 서정민 2010.08.16 6879
1524 이번주 수고하셧습니다. ㅋㅋ [3] 강진성 2010.05.03 6861
1523 스터디 시간에 나왔던 ARM 어셈블러 시뮬레이션 방법을 한번 정리해보았습니다. [7] file 코로케 2013.07.02 6860
1522 likely/unlikely 사용시 차이점 [9] 박량우 2011.07.11 6839
» RCU 정리.. 박경태 2007.10.21 6824
1520 우분투 64bit에서 32bit 어셈블리 컴파일하기 신C 2013.06.28 6801
1519 10차 ARM-A팀 8/17 후기는 절 기다리지 마세요 [3] K 2013.08.17 6783
1518 쫑파티 합니다. ^^ [2] file 석헌영 2010.08.04 6770
1517 Clone flag- 스터디중에 어떤분이 질문했던 내용입니다. 황의순 2011.04.04 6763
1516 switch_to() 매크로 [2] 김병희 2008.08.27 6756
1515 SSE register 설명 및 Hammer Family(AMD 64bit 초기 processor) 관련 기사 [2] 최희욱 2007.11.18 6740
1514 저번주에 했던 커널정리PPT입니당 + 요번주 스터디참석여부! [4] file 조은지 2010.07.21 6733
1513 [ARM중] domain 과 AP 비트 필드를 이용한 메모리 접근 권한 제어 [3] file 홍문화 2011.10.10 6710
1512 arm 자료 올립니다 [2] file 지승화 2010.04.11 6700
1511 device mapper관련 문서 [1] file 오시리스 2011.07.25 6697
1510 Cortex™-A9 MPCore Technical Reference Manual [4] file 박대원 2010.04.05 6677
1509 ARM 아키텍쳐 관련 기초 쌓기(임베디드 레시피) [2] 차상우 2013.05.07 6672
1508 금일 스터디중 의문사항.. [7] 박은병 2007.11.11 6635
1507 Setup.S 후반부 정리내용입니다. [2] file 박경태 2007.05.15 6608
1506 리눅스 커널 내부구조 책 [5] file 어선택 2012.04.08 6608
XE Login