Linux 内存与I/O访问

来源:互联网 发布:千图网淘宝工具 编辑:程序博客网 时间:2024/04/29 11:40
内存与I/O访问
kmalloc()  申请内存位于物理内存映射区域,物理上也是连续的。
kfree()


vmalloc()在虚拟内存空间给出一块内存区,连续的虚拟内存,物理内存不一定连续。


1.kmalloc()
void *kmalloc(size_t size, int flags); 
flags : GFP_KERNEL 、
GFP_ATOMIC  中断处理函数 tasklet 定时器等非进程上下文中不能阻塞
__GFP_DMA 要求能分配DMA功能的内存
GFP_USER 用来为用户空间分配内存。


vmalloc()
void *vmalloc(unsigned long size);
void vfree(void *addr);


vmalloc()不能用在原子上下文中,






4.slab与内存池






11.3.3虚拟地址与物理地址关系
virt_to_phys()  

phys_to_virt()



原创粉丝点击