首页 > 试题广场 >

内核程序中申请内存使用什么函数?

[问答题]
内核程序中申请内存使用什么函数?
kmalloc:申请区域在物理内存的映射区,物理连续,与真实地址固定一个偏移,大小限制128kb,使用_GFP_ZERO给内存清零,用于原子操作,速度快,kzmlloc,清零版本;;; vmalloc:在虚拟内存空间申请一片连续的地址,物理可能不连续,申请大小无限制,可能会陷入阻塞,与vfree一样可以睡眠,不能中断上下文调用;;; alloc_page:申请连续的物理页,可以通过page_arddress将物理页转化为逻辑地址。
编辑于 2022-06-25 22:03:28 回复(0)
一般用以下三个函数:kmalloc()函数:表示物理内存映射,在实际内存中有一个固定的偏移,最大只能申请128kb。kzalloc()表示kmalloc强制清零版, vmalloc表示在虚拟内存使用,可以申请大内存。 记忆方法:记住第一个kmalloc,kzalloc可以表示kmalloc+zero。vmalloc可以表示virtual(虚拟)+kmlloc
编辑于 2022-11-16 17:52:38 回复(0)
kmalloc:申请区域在物理内存的映射区,物理上连续,但与真实地址有一个固定的偏移,最大申请128kb。kzalloc为强制清零版本的kmalloc。vmalloc在虚拟内存空间申请一片连续的地址,物理不一定连续,申请大小无限制,可能陷入阻塞,与vfree一样可以睡眠,不能中断上下文调用
发表于 2024-04-27 15:35:05 回复(0)
kmalloc和vmalloc是内核内存的分配,malloc是用户内存的分配。vmalloc保证虚拟地址上的连续,kmalloc保证物理地址上的连续;vmalloc(虚拟连续地址)要比kmalloc要慢
发表于 2023-03-07 20:55:25 回复(0)
kmalloc:申请区域在物理内存的映射区、物理连续,与真实地址固定一个偏移,大小限制128kb,使用GFP_ZERO给内存清零,用与原子操作,速度快,速度快;vmalloc:在虚拟内存空间申请一片连续的地址,物理可能不连续
发表于 2025-04-04 11:45:46 回复(0)
kmalloc:申请在物理内存的映射区 vmalloc:申请在虚拟内存的区域
发表于 2025-03-29 20:50:42 回复(0)
kmalloc,kcalloc,vmalloc
发表于 2024-09-16 11:24:14 回复(0)
kmalloc:虚拟地址连续,申请的物理地址是连续的,大小有限,不能超过128K vmalloc:虚拟内存是连续的,申请的物理地址是不连续的,大小没有限制 alloc_page():用于申请连续的物理页
编辑于 2024-04-12 14:55:02 回复(0)
kmalloc
发表于 2023-11-09 17:12:27 回复(0)
vmalloc 和 kmalloc 。其中vmalloc用于申请非连续的物理内存空间,而kmalloc用于申请非连续的物理空间,其最大的申请大小为128kb。
发表于 2023-10-13 20:45:21 回复(0)
在内核程序中申请内存kmalloc()、vmalloc()和kzalloc()
发表于 2023-08-22 15:53:28 回复(0)
kmalloc:申请的物理地址不连续,大小限制为128kb,kzalloc清零版本 vmalloc:在虚拟内存空间申请一片连续的地址,物理可能不连续 alloc_page:申请连续的物理页
发表于 2023-08-08 10:21:33 回复(0)
malloc
发表于 2023-07-26 12:20:38 回复(0)
kmalloc,从物理地址的映射区域申请一段连续的内存,物理上也是连续的,跟实际物理地址只有一个固定的偏移,通常不能超过128kb,kzalloc,申请一段内存并清零,相当于kmalloc的清零版,vmalloc,申请一段连续的虚拟内存,对大小没有限制
发表于 2023-06-16 09:46:00 回复(0)
kmaloc
发表于 2022-12-28 10:14:40 回复(0)
kmalloc kzalloc vmalloc alloc_page kmalloc申请的内存空间是有物理地址映射而来的,所以内存空间是连续的,但是和物理地址有一定的偏移量,所以开辟的空间大小有限制,最大为128kb,kmalloc可用于原子操作,速度快,kzalloc是kmalloc的升级版,唯一不同点是kzalloc在开辟内存时会把开辟的内存清零。vmalloc是在虚拟内存空间申请一片连续的空间,但在物理地址上可能不连续。但好处再于比kmalloc申请的空间大,没有限制,可能会阻塞,和vfreee一样可以睡眠,不能终端上下文调用,alloc_page可以申请连续的物理页,可以通过page_address将物理页转化为逻辑地址。
发表于 2022-12-06 17:04:56 回复(0)
kmalloc(),vmalloc(),alloc_page
发表于 2022-11-30 19:31:10 回复(0)
应用程序的内存申请,例如C/C++可以使用malloc函数,与内核的kmalloc(),kzalloc(), vmalloc(), alloc_page()等函数相比,比较像vmalloc机制,即虚拟地址申请,物理地址不一定连续,区别在于,应用程序malloc不会做分配物理页的动作,交由内核去申请,而vmalloc本身在内核中会执行这个动作。
编辑于 2022-10-25 17:13:33 回复(0)
一般使用kmalloc、kzalloc,kmalloc申请的内存区域位于物理内存的映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,存在比较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。 kzalloc() 函数与 kmalloc() 额外附加了 __GFP_ZERO 标志,所以它除了申请内核内存外,还会对申请到的内存内容清零。
发表于 2022-10-07 10:46:09 回复(0)