易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux内存管理 内存分配函数的选择

内存分配函数的选择
 
如果你需要连续的物理页,就可以使用某个低级页分配器或者kmalloc()。这是内核中内存分配的常用方式,也是大多数情况下你自己应该使用的内存分配方式。传递给这些函数最常用的两个标志是GFP_AUTOMIC和GFP_KERNEL。GFP_AUTOMIC表示进行不睡眠的高优先级分配。这是中断程序和其他不能睡眠的代码段的需要。对于可以睡眠的代码,比如没有持自旋锁的进程上下文代码,则应该使用GFP_KERNEL获取所需内存。这个标志表示,如果有必要,分配时可以睡眠。
 
如果想从高端内存进行分配,就使用alloc_pages()。alloc_pages()函数返回一个指向struct page结构的指针,而不是指向某个逻辑地址的指针。因为高端内存很有可能并没有被映射,因此访问它的唯一方式是通过相应的struct page结构。为了获得真正的指针,应噶调用kmap(),把高端内存映射到内核的逻辑地址空间。
 
如果你不需要物理上连续的页,而仅仅需要虚拟地址上连续的页, 那么就使用vmalloc()(不过要记住vmalloc()相对kmalloc()有一定的性能损失)。vmalloc()分配的内存虚拟地址式是连续的,但它本身并不能保证物理上的连续。这与用户空间的分配非常类似,它也是把物理内存块映射到连续的逻辑地址空间上。
 
如果你要创建和销毁很多较大的数据结构,那么应该考虑建立slab高速缓存。Slab层会给每个处理器维持一个对象高速缓存(空闲链表),这种高速缓存会极大的提高对象分配和回收的性能。Slab层不是频繁地分配和释放内存,而是为你把事先分配好的对象存放到高速缓存中,当你需要一块新的内存来存放数据结构时,slab层一般无需另外去分配内存,而只需从高速缓存中得到一个对象就可以了。
 


相关文档:

本机linux访问本机windows内容

fedora linux 几乎支持任何格式的文件系统 ntfs也能支持
装linux  时选择定制分区  在磁盘设置下记录你的各个盘符的情况
例如我的机子硬盘分区的挂载情况是这样的,每个人都不同  装机子的时候注意记下来
     我的机子:   /dev/sda 1     对应的 ......

linux inittab详解

一、什么是init
  init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。
  内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以,init始终是第一个进程(其PID始终为1)。
  内核 ......

Linux的十项重要进展






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
       十年以来,全球
Linux
界有哪些重要进展,人们应该知道?对此,人们可以有不同的看法,但是,大家总得有个大致相同的认识。实际情况怎样呢?
 
......

linux Bell 报警声音

Console 修改/etc/inputrc文件

set bell-style off
VIM 如果是在 console 模式下使用 vi/vim,一旦按错键会发出 bi 的一声,这样做可以提醒我们,但是很多时候会影响其他人工作、学习或者休息,如何关闭呢?
可以在 vi/vim 中使用
:set noeb
命令(其中 noeb 是 noerrorbells 的缩写) ......

linux 之 ifconfig 命令!

一般在linux下查看网络配置可以使用ifconfig命令,可以显示当前网卡的基本配置信息。
终端输入ifconfig 会出现一下内容:
eth0
Link encap:Ethernet HWaddr 00:0C:29:0C:4B:0F
inet addr:192.168.37.128 Bcast:192.168.37.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33 er ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号