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

Linux内存:内存管理的实质

1. 内核初始化:
    * 内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;
    * 内核建立一个page数组,page数组和物理页面系列完全是线性对应,page用来管理该物理页面状态,每个物理页面的虚地址保存在page->virtual中;
    * 内核建立好一个free_list,将没有使用的物理页面对应的page放入其中,已经使用的就不用放入了;   2. 内核模块申请内存vaddr = get_free_pages(mask,order):
    * 内存管理模块从free_list找到一个page,将page->virtual作为返回值,该返回值就是对应物理页面的虚地址;
    * 将page从free_list中脱离;
    * 模块使用该虚拟地址操作对应的物理内存;

3. 内核模块使用vaddr,例如执行指令mov(eax, vaddr):
    * CPU获得vaddr这个虚地址,利用建立好的页目录页表数据库,找到其对应的物理内存地址;
    * 将eax的内容写入vaddr对应的物理内存地址内;
  4. 内核模块释放内存free_pages(vaddr,order):
    * 依据vaddr找到对应的page;
    * 将该page加入到free_list中;   5. 用户进程申请内存vaddr = malloc(size):
    * 内存管理模块从用户进程内存空间(0--3G)中找到一块还没使用的空间vm_area_struct(start--end);
    * 随后将其插入到task->mm->mmap链表中;
  6. 用户进程写入vaddr(0-3G),例如执行指令mov(eax, vaddr):
    * CPU获得vaddr这个虚地址,该虚地址应该已经由glibc库设置好了,一定在3G一下的某个区域,根据CR3寄存器指向的current->pgd查当前进程的页目录页表数据库,发现该vaddr对应的页目录表项为0,故产生异常;
    * 在异常处理中,发现该vaddr对应的vm_area_struct已经


相关文档:

Linux 下自动备份MYSQL数据库的shell 脚本

MySQL :: Linux 下自动备份数据库的 shell 脚本
Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。
脚本内容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME=" ......

mysql在红旗linux下全程安装配置祥解

1、下载MySQL的安装文件
安装MySQL需要下面两个文件:
MySQL-server-5.0.46.i386.rpm   
MySQL-client-5.0.46.i386.rpm

2、安装MySQL
rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是
ivh
,其中i表示将安装指定的rmp软件包,V表 ......

Linux常用基础命令

Linux常用基础命令
      1.man 对你熟悉或不熟悉的命令提供帮助解释
  eg:man ls 就可以查看ls相关的用法
  注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行
  2.ls 查看目录或者文件的属*,列举出任一目录下面的文件
  eg: ls /usr/man
  ls -l
  a.d ......

Linux内核DRM实现分析——基于i915

1  接口
     我们先看看i915_drv.c里面申明的driver变量:
static struct drm_driver driver = {
 /* don't use mtrr's here, the Xserver or user space app should
  * deal with them for intel hardware.
  */
 .driver_features =
     DRI ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号