仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 952|回复: 8
打印 上一主题 下一主题

[其他Linux] 来讲讲:Linux平台上几个罕见内核内存分派函数

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 12:47:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
初学阶段只要把上课时候学习过的命令练熟就可以了.单靠学习各种命令而成为高手是不可能的。
*kmalloc
  Prototype:
  #include<linux/slab.h>
  void*kmalloc(size_tsize,intflags);
  Kmalloc分派一段未清0的一连物理内存页,并前往虚存地点。有点是快,而且可指定flag,如DMA内存,洼地址地区内存等。弱点是不克不及分派年夜于128KB(处于跨平台思索),几个主要的flag:
  GFP_ATOMIC
  Usedtoallocatememoryfrominterrupthandlersandothercodeoutsideofaprocesscontext.Neversleeps.
  GFP_KERNEL
  Normalallocationofkernelmemory.Maysleep.
  GFP_USER
  Usedtoallocatememoryforuser-spacepages;itmaysleep.
  GFP_HIGHUSER
  LikeGFP_USER,butallocatesfromhighmemory,ifany.Highmemoryisdescribedinthenextsubsection.
  *slaballocator(lookasidecache)
  从Memcached的完成晓得有这么一个内存办理战略,其光鲜明显特性是分派一组不异巨细的内存块作为内存池,实在现对应于源代码中的<linux/slab.h>和mm/slab.c。
  Prototype:
  #include<linux/malloc.h>
  kmem_cache_t*kmem_cache_create(char*name,size_tsize,size_toffset,
  unsignedlongflags,constructor(),destructor());
  intkmem_cache_destroy(kmem_cache_t*cache);
  /proc/slabinfo
  Avirtualfilecontainingstatisticsonslabcacheusage.
  *__get_free_pages
  Prototype:
  __get_free_pages(unsignedintflags,unsignedintorder);
  前往2^order个未清0一连物理页面,flags与kmalloc中flags分歧,同意的最年夜order值为10大概11(依据系统布局分歧)
  *alloc_pages
  Prototype:
  structpage*alloc_pages_node(intnid,unsignedintflags,
  unsignedintorder);
  Kernel中页分派器完成,__get_free_pages即挪用alloc_pages完成的
  TherealcoreoftheLinuxpageallocatorisafunctioncalledalloc_pages_node:
  *vmalloc
  分派地点一连虚存,而不包管物理地点一连,年夜部分情形下合适“软件”,而不是驱动程序。绝对而言,kmalloc和__get_free_pages虚存map到物理内存只必要增减一个偏移,而利用vmalloc分派必要修正页表,故vmalloc的开支较年夜,分派多数几个页面的效力太低。
  *per-cpuvariables
  Eachcpuholdanindependantcopyintheirrespectiveprocessorscaches,sothereisnolockrequiredandimprovebetterperformance,implementedasalinux2.6feature.Definedin<linux/percpu.h>.
  DEFINE_PER_CPU(type,name);
  get_cpu_var(sockets_in_use)++;
  put_cpu_var(sockets_in_use);

</p>
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。
透明 该用户已被删除
沙发
发表于 2015-1-17 20:23:39 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
若相依 该用户已被删除
板凳
发表于 2015-1-21 10:52:43 | 只看该作者
要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
山那边是海 该用户已被删除
地板
发表于 2015-1-30 16:07:16 | 只看该作者
学习Linux应具备的。[书籍+网络资源]
若天明 该用户已被删除
5#
发表于 2015-2-6 13:59:53 | 只看该作者
这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。
变相怪杰 该用户已被删除
6#
发表于 2015-3-5 05:49:18 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
小魔女 该用户已被删除
7#
发表于 2015-3-11 23:56:03 | 只看该作者
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
再见西城 该用户已被删除
8#
发表于 2015-3-19 17:11:46 | 只看该作者
清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。
蒙在股里 该用户已被删除
9#
发表于 2015-3-29 22:28:23 | 只看该作者
直到学习Linux这门课以后,我才知道,原来我错了。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 21:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表