vmalloc
-
디바이스 드라이버 / 동적 메모리 할당Linux/Linux Device Driver 2020. 9. 1. 12:40
kmalloc() 연속된 물리 메모리를 연속된 가상 공간에 매핑하여 할당 받는다. GFP_KERNEL 플래그는 kmalloc() 함수에서 사용하는 대표적인 인자값으로 동적 메모리 할당이 항상 성공하도록 요구한다. 이 값으로 kmalloc() 함수를 사용하면 커널이 관리하는 메모리가 충분하지 않을 경우에는 디바이스 드라이버를 호출한 프로세스가 수행을 멈추고, 동적 메모리를 할당할 수 있는 상태가 될 때까지 잠든다. 그러다 다른 프로세스에서 메모리를 반환해 커널이 동적 메모리를 할당할 수 있는 상태가 되면 깨어난다. 그래서 kmalloc() 함수를 인터럽트 서비스에서 사용할 때는 이 값을 사용하면 안된다. GFP_ATOMIC 플래그를 사용하는 경우 슬립되지 않으므로 인터럽트 핸들러에서도 사용될 수 있다. v..