vmalloc
2021. 9. 21. 22:12ㆍLinux
- 목차
반응형
물리적으로 연속될 필요없이 가상적으로 연속된 memory 영역을 할당한다는 점을 제외하면 kmalloc()과 유사한 방식으로 동작
malloc()함수가 반환하는 page는 process의 가상 주소 공간에서 연속된 공간이지만,
kmalloc 함수는 할당된 page가 물리적으로도 (그리고 가상적으로도) 연속된 공간이라는 것을 보장
많은 architecture에서 hardware 장치는 memory 관리 장치가 없는 곳에 살고 있어서, 가상 주소를 처리할 수 없다. (no IOMMU)
특정한 경우에만 물리적으로 연속된 memory가 필요함에도 불구하고
kernel에서는 메모리를 할당할 때 대부분 vmalloc이 아닌 kmalloc을 사용
이는 주로 성능 때문
vmalloc은 상당량의 page table 항목 조정 작업을 수행
또한 계속 물리적 page가 변경될 수 있기에 TLB 를 휠씬 많이 사용
이런 문제로 vmalloc 함수는 절대적으로 필요한 경우에만 사용
보통 큰 영역의 memory를 할당하는 경우가 이에 해당
mm/vmalloc.c
void * vmalloc(unsigned long size)
휴면 상태로 전환이 가능
ISR등 interrupt context에서 사용 불가
void vfree(const void *addr)
반응형
'Linux' 카테고리의 다른 글
input driver (0) | 2021.09.27 |
---|---|
System call (0) | 2021.09.27 |
Ioremap 코드 분석 (0) | 2021.09.27 |
Linux의 kmalloc과 vmalloc에 대해서 (0) | 2021.09.27 |
pthread_barrier_t 사용법 (pthread barrier) (0) | 2021.09.27 |