易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

remote desktop, linux >windows

学校服务器的一个windows虚拟机开启了Desktop共享,这样可以在配置不高的终端使用高性能的机器,除了windows客户端访问外,在Ubuntu里可以通过自带的 rdesktop访问,该程序为命令行形式。参数较多,比较有用的是提供远程与本地交互的-r参数。
如:
rdesktop -r disk:floppy=/home/xiajing/t  192.168.111.111 ......

Linux驱动开发学习步骤

1. 学会写简单的makefile
    2. 编一应用程序,可以用makefile跑起来
    3. 学会写驱动的makefile
    4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。
  &n ......

linux驱动程序实例

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

Linux下加挂文件系统

Linux下加挂文件系统的小结
学习操作系统时我们都了解到文件系统是操作系统的重要组成部分之一。文件系统有很多种类型,比
windows的fat、fat32;Linux的ext、ext2或ext3;FreeBSD的ufs等等。在使用Linux的过程,也常常Linux
操作系统使用虚拟文件系统VFS,通过VFS可以直接存取其它已被内核支持的各种文件系统,用起来就 ......

linux下nfs tftp 配置使用

linux下几种服务器的配置使用之一:nfs tftp 
安装nfs需要在服务器端关闭iptables防火墙,关闭方法如下
查看防火墙状态:
/etc/init.d/iptables status
暂时关闭防火墙:
/etc/init.d/iptables stop
禁止防火墙在系统启动时启动
/sbin/chkconfig --level 2345 iptables off
重启iptables:
/etc/init.d/iptabl ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号