커널 프로그래밍 중...
글쓴이: show4682 / 작성시간: 화, 2010/03/30 - 11:38오전
현재 다음과 같은 시스템에서 커널모듈프로그래밍 중입니다.
kernel version : kernel 2.6.29.3 x86_64
cpu 개수 : 2개(8코어) SMP
궁금한 점은 다음고 같습니다.
* 상황
1. A 전역변수가 있습니다.
2. 타이머 핸들러가 A1 스핀락을 잡고 빈번하게 A 전역변수를 접근합니다.
3. 워크큐가 B 전역변수를 모니터링하다가 변화가 있으면 A전역변수에 접근하기
위해 A1 스핀락을 잡고 A 전역변수에 접근합니다. 그러나 B 전역변수 상황에 따라 A1락을 잡고 있는 시간이
오래 걸립니다.(정확한 시간은 안 재 봤습니다.)
4. 위 같은 상황(락을 오래잡는 것)이 발생하면 데드락 걸립니다. 아마도 타이머 핸들러와 워크큐가 오버랩되면서
동기화 깨지는거 같습니다.
워크큐가 스케쥴링 당하는거 같아서 선점 잠그고 들어가면 워크큐루틴 오래걸리면 타이머 핸들러가 오래 걸린 시간 만큼
안 돕니다. ㅜㅜ
고수님들 워크큐에서 락을 오래 잡는 것 때문에 동기화가 깨지는 걸까요..
비슷한 경험 있으신 분들 꼭 답글 부탁드립니다.
수고하세요.. 꾸벅
Forums:
댓글 달기