나는 주변을 훑어 본 결과 kmalloc
, 연속적인 물리적 메모리 블록을 확보 할 수 있으므로. 그러나 원하는 kmalloc
연속 물리적 블록을 찾을 수없는 경우 에도 실패 할 수있는 것처럼 보입니다 .
연속적인 메모리 블록을 사용하면 어떤 이점이 있습니까? 특히, 시스템 호출 에서 연속적인 물리적 메모리 블록 이 필요한 이유는 무엇입니까? 그냥 사용할 수없는 이유가 있나요 ?
마지막으로 시스템 호출을 처리하는 동안 메모리를 할당하려면 어떻게 지정해야 합니까? 시스템 호출이 원자 적 컨텍스트에서 실행됩니까?vmalloc
GFP_ATOMIC
GFP_ATOMIC
할당은 우선 순위가 높고 잠들지 않습니다. 이것은 인터럽트 핸들러, 하반부 및 잠을 잘 수없는 기타 상황에서 사용할 플래그입니다.
GFP_KERNEL
이것은 정상적인 할당이며 차단 될 수 있습니다. 수면에 안전 할 때 프로세스 컨텍스트 코드에서 사용할 플래그입니다.
vmalloc
Kernel 5.2 (2019 년 2 분기)에서 더 빠름