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

Linux vmalloc的实现

内核版本:2.6.28
linux如何利用伙伴系统,slab分配器分配内存,用这些方法得到的内存在物理地址上都是连续的, 然而,有些时候,每次请求内存时,系统都分配物理地址连续的内存块是不合适的,可以利用小块内存“连接”成大块可使用的内存.这在操作系统设计中也被称为 “内存拼接”,显然,内存拼接在需要较大内存,而内存访问相比之下不是很频繁的情况下是比较有效的.
  在linux内核中用来管理内存拼接的接口是vmalloc/vfree.用vmalloc分配得到的内存在线性地址是平滑的,但是物理地址上是非连续的.
函数vmalloc列出如下:(mm/vmalloc.c)
size: 分配的虚拟空间的大小.
gfp_mask: 页级分配器的标志.
prot: 已分配的保护掩码.
void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
{
    return __vmalloc_node(size, gfp_mask, prot, -1,
                __builtin_return_address(0));
}
函数_vmalloc分配足够的页数与size相配,把它们映射进连续的内核虚拟空间,但分配的内存块不一定连续.在函数中第一步是在vmlist中寻找到一个大小合适的虚拟内存块(_get_vm_area_node(...)).
static void *__vmalloc_node(unsigned long size, gfp_t gfp_mask, pgprot_t prot,
                        int node, void *caller)
{
    struct vm_struct *area;
    //检查请求分配的内存大小有没有超过最大的物理页面数。如果超过返回 0 ,表示分配失败。
    size = PAGE_ALIGN(size);
    //有效性检查
    if (!size || (size >> PAGE_SHIFT) > num_physpages)
        return NULL;
    //取得一个有效的vma
    area = __get_vm_area_node(size, VM_ALLOC, VMALLOC_START, VMALLOC_END,
                        node, gfp_mask, caller);
    //如果申请的无效,返回一个NULL指针
&nb


相关文档:

简说linux内核编译(简单却很实用)

一、下载安装程序
1、  下载内核源码(linux-2.6.33.tar.bz2),位置:https://www.kernel.org
2、  下载最新版的module-init-tools(module-init-tools-3.8.tar.bz2)和modutils(modutils-2.4.26-1.src.rpm)的源码
位置:http://www.kernel.org/pub/linux/kernel/people/rusty/modules/
位置:http://www. ......

Linux环境下USB的原理、驱动和配置

什么是USB?
USB是英文Universal Serial Bus的缩写,意为通用串行总线。USB最初是为了替代许多不同的低速总线(包括并行、串行和键盘连接)而设计的,它以单一类型的总线连接各种不同的类型的设备。USB的发展已经超越了这些低速的连接方式,它现在可以支持几乎所有可以连接到PC上的设备。最新的USB规范修订了理论上高达480 ......

linux驱动程序实例

本例是冯国进的 《嵌入式Linux 驱动程序设计从入门到精通》的第一个例子
感觉真是好书   强烈推荐
注释是deep_pro加的 转载请注明!我的特点是文不加点!
这个驱动是在内存中分配一个256字节的空间,供用户态应用程序读写。
先是头文件 demo.h
#ifndef _DEMO_H_
#define _DEMO_H_
#include <linux/ioct ......

学习linux的苦恼

       接触Linux也是很久的事情了,不过自我感觉却从来没有揭开过它的真面纱。从我工作以来到现在,几乎总会用到linux或在linux系统上进行工作,也一直想把linux搞懂。但是,由于总感觉Linux的庞大,英文资料难以阅读,加上自身非常的懒散,因此几次下定决心,最终还是不了了之吧。 ......

Linux下创建与解压zip, tar, tar.gz和tar.bz2文件


在Linux下面去压缩文件或者目录。我们将学习zip, tar, tar.gz和tar.bz2等压缩格式的基本用法。
zip格式已成为压缩文件的标准选择,而且它在windows上也能使用。
经常用zip格式压缩那些需要共享给windows用户的文件。
如果只是共享给linux用户或者Mac用户,偏向于选择tar.gz格式。
ZIP
zip可能是目前使用得最多的文档 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号