灵魂腐蚀 发表于 2015-1-16 12:47:06

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

初学阶段只要把上课时候学习过的命令练熟就可以了.单靠学习各种命令而成为高手是不可能的。
*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应具备的。[书籍+网络资源]

若天明 发表于 2015-2-6 13:59:53

这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

变相怪杰 发表于 2015-3-5 05:49:18

首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。

小魔女 发表于 2015-3-11 23:56:03

了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。

再见西城 发表于 2015-3-19 17:11:46

清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。

蒙在股里 发表于 2015-3-29 22:28:23

直到学习Linux这门课以后,我才知道,原来我错了。?
页: [1]
查看完整版本: 来讲讲:Linux平台上几个罕见内核内存分派函数