5636网吧资讯

Linux系统下内存申请使用的相关原理

来源:欣欣时间:2017-08-25 17:42

  前面的一篇文章中我们曾向大家介绍了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系统下内存申请使用的相关原理了,大家如果还有什么想知道的地方可以去本站的网吧系统栏目去查找,如果找不到相关内容,可以留言一起讨论,当然如果大家有什么好的资料也可以和我们一起分享哦!

 303
以上内容整理自互联网,如有侵权请与小编联系,QQ: 2850592923。欢迎加入网吧业主交流群:609150654(可加)614859884(可加) 加微信群请添加:wbzz5636
5636增值联盟
上一篇 :Fedora Linux9系统下如何创建vncserver 下一篇 :GhostXP系统远程桌面异常要怎么来解决

相关推荐

5636搜索一下
登录