当前位置: 技术问答>linux和unix
一个linux初学者关于mm的一些问题。
来源: 互联网 发布时间:2016-05-26
本文导语: 我是linux的初学,下面有一些关于memory management的问题,请各位高手不吝赐教。 1.是不是其它所有程序(比如,slab cache, swapping)都要借助buddy system提供的_get_free_pages/alloc_pages 来获得page frame? 高端的内存映射是例外...
我是linux的初学,下面有一些关于memory management的问题,请各位高手不吝赐教。
1.是不是其它所有程序(比如,slab cache, swapping)都要借助buddy system提供的_get_free_pages/alloc_pages 来获得page frame? 高端的内存映射是例外吗?
2.mm_struct, thread_info, task_struct应当是分配在kernel address space里的吗? 如果是哪么是属于DMA, NORMAL (用alloc_pages, kmalloc, 还是 kmem_cache_alloc)还是 HIGH (用vmalloc)?
3.user address space里的heap(data)或stack内存区满的时候可以扩展,但是当无法扩展时如何处理,是relocate吗?
4.但物理内存小于896是vmalloc的do_page_fault从那里分配page frame?
5.当struct page的count大于0是,如何知道该page frame是被内核使用还是被那几个process使用?
6.用vmalloc申请的page frame是可交换的吗?
就先是这么多,可能有些问题和概念本身就不对,都请指出来吧!谢谢了!
1.是不是其它所有程序(比如,slab cache, swapping)都要借助buddy system提供的_get_free_pages/alloc_pages 来获得page frame? 高端的内存映射是例外吗?
2.mm_struct, thread_info, task_struct应当是分配在kernel address space里的吗? 如果是哪么是属于DMA, NORMAL (用alloc_pages, kmalloc, 还是 kmem_cache_alloc)还是 HIGH (用vmalloc)?
3.user address space里的heap(data)或stack内存区满的时候可以扩展,但是当无法扩展时如何处理,是relocate吗?
4.但物理内存小于896是vmalloc的do_page_fault从那里分配page frame?
5.当struct page的count大于0是,如何知道该page frame是被内核使用还是被那几个process使用?
6.用vmalloc申请的page frame是可交换的吗?
就先是这么多,可能有些问题和概念本身就不对,都请指出来吧!谢谢了!
|
建議樓主下載一下,然後看MM部分就行了
這個實在不是一句兩句能說得清楚的
這個實在不是一句兩句能說得清楚的
|
讀內核不需要對系統有了解的,呵呵
看你問的問題,能感覺出以你的基礎,絕對夠讀0.11的linux內核了
看你問的問題,能感覺出以你的基礎,絕對夠讀0.11的linux內核了
|
6.不是可交换的。
|
5.单从这个很难判断.
|
,书挺好
能解决你的所有问题
能解决你的所有问题