5636联盟 2

网吧系统

Linux系统下内存申请使用的相关原理
2017-08-22 作者:欣欣 点击: 222次

  前面的一篇文章中我们曾向大家介绍了GhostXP系统远程桌面异常的解决方法,不知道大家觉得怎么样呢!现在我们要向大家介绍的一下Linux系统下内存申请使用的相关原理!下面大家还是跟着我们5636网吧联盟的网吧系统栏目一起去看看吧!
  1.关于地址空间的管理,一般情况下,物理地址都是有内核管理的,node-->zone-->mem_map-->page,所有的物理页面都在mem_map数组中的页帧对应,然后不同的page有分为DMA,normal,highmem三个zone。
  内核线性地址空间,实际上只是低端内存才有线性地址,0---896MB部分。内核虚拟地址,低端内存的虚拟地址与线性地址是一样的。高端内存只有在映射了以后才有虚拟地址
  用户空间地址,tast_struct--->mmap-->mm_struct--->vm_area_struct
  2.再来说说内存的申请或使用!物理内存的分配,在内核中最终都要调用__alloc_pages().它是最核心的分配函数,申请大小最大不超过2的MAX_ORDER次幂,在现在好像最大定义为4MB。
  线性地址,kmalloc和get_free_pages,线性地址,对应的物理内存就是低端内存,kmalloc是基于slab的分配技术,最大不能超过128KB。
  虚拟地址,vmalloc申请,他只是在内核中建立类似与用户空间的vm_area的一个虚拟内存空间到vmlist中,最终的物理内存分配还是基于缺页的。
  用户空间的虚拟内存,malloc之类的,最终在内核中都是do_map()和do_brk()。实际上也只是建立了一块虚拟空间,最终的物理内存还是在缺页异常时分配的。
  3.关于内存的交换问题,一般在page结构和用户层的vm_area_struct结构中,都包含locked和reserved标志。通过合适的途径设置这些标志,可以是页面锁存在物理内存中,不被交换出去。
  4.通常设备内存可以通过ioremap映射到内核虚拟地址空间,也可以通过mmap方法映射到用户空间。
  以上就是Linux系统下内存申请使用的相关原理了,大家如果还有什么想知道的地方可以去本站的网吧系统栏目去查找,如果找不到相关内容,可以留言一起讨论,当然如果大家有什么好的资料也可以和我们一起分享哦!

以上内容整理自互联网,如有侵权,请立即与小编联系,小编将及时处理。转载或引用本网版权所有之内容请注明来源,感谢您对本站的支持! 联系QQ:2850592923 欢迎加入网吧业主 交流群:614859884(已满)397580722(可加)

点击排行榜