첫번째 :
spin_lock 에 관한 질문입니다.
spin_lock 시 preempt_disable()하는 이유를 모르겠습니다.
두번째 :
numa 시스템(x86)에서 각노드마다 zone_dma , zone_normal, zone_highmem
이 존재 하는것인지 아니면 zone_dma는 하나의 node에만 존재하는 것인지 궁금합니다.
세번째 :
cgroup 관련 코드 분석중,
cgroup 컨셉이나, 왜 필요한지 , 어떻게 구현이 되었는지 크게
흐름을 알면 좋을거 같아 질문 드립니다.
1. spin_lock은 busy wait를 하기 때문에 lock을 잡은 태스크는 최대한 빨리 작업을 마치고 lock를 풀어줘야 합니다. 그런데 lock을 잡고 있는 도중 선점되어 다른 태스크가 먼저 실행된다면 안 되겠죠?
2. zone은 모든 node마다 동일하게 존재합니다만.. 실제로 zone 내에 page가 존재하지 않을 수도 있습니다. 메모리 구성에 따라 달라지겠지만요.. ;;
3. cgroup은 cpu나 메모리 등의 자원을 그룹 단위로 효과적으로 분배하기 위해 만들어진 것입니다. 커널 소스 내에 cgroup에 대한 문서가 잘 정리되어 있으니 참고하시면 될 것 같습니다.