kmalloc() 함수는 할당 크기가 제한되어 있지만, vmalloc() 함수는 가상 공간이 허용하는 한 크기 제한 없이 할당받을 수 있다. 그래서 큰 메모리 공간을 할당할 때 주로 사용한다.

vmalloc() 함수에서 할당받은 주소와 kmalloc() 함수에서 할당받은 주소는 디바이스 드라이버에서 사용할 때 차이가 없다. 하지만 해당 주소의 실제(물리) 주소를 얻고자 한다면 vmalloc() 함수는 가상 주소 공간에서 할당받기 때문에 해당 주소의 영역이 하드디스크에 있을 수도 있어 실패할 수 있다.

vmalloc() 함수는 커다란 연속 공간을 할당하기 위해 가상 메모리 관리 루틴이 수행되기 때문에 kmalloc() 함수보다 할당 속도가 매우 느리다. 또한 vmalloc() 함수는 인터럽트 서비스 함수 안에서는 사용할 수 없다.

 

+ Recent posts