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

linux内存管理重要的数据结构

这里只列举几个比较麻烦的数据结构
struct list_head {
    struct list_head *next, *prev;
} //linux通用的双向链队列,下面多处用到,这里列出源代码
linux对内存再用页式管理,对于页,就有个数据结构page加以描述。在内核中有个全局量mem-map指向的是一个page的数组,整个数组描述了整个物理内存,大家注意32位地址线,内存大小是2的32次方。由于页大小是4k也就是2的12次方。每4K的页就有一个page。那么2的32次方共有2的20次方个页,则mem-map指向的数组大小就是2的20次方。其中明显对于页的物理地址,一定是4K的倍数,因为它大小是4K,那么这个数组就有个对应,数组下标后面12个0(2进制)对应了页面的物理地址,他们在数值上是相等的。那么我们在page数据结构中就没有必要存贮它的物理地址。page数据结构定义位置include/linux/mm.h
struct page{
struct list_head list;   //通过使用它进入下面的数据结构free_area_struct结构中的双向链队列
struct address_space * mapping;   //用于内存交换的数据结构
unsigned long index;//当页面的内容来自一个文件时,index代表着该页面在文件中的序号,当页面的内容被换出到交换设备上、但还保留着内容作为缓冲时,则index指明了页面的去向,各位的含义同于swp_entry_t中的val含义。
struct page *next_hash; //自身的指针,这样就可以链接成一个链表
atomic t count; //用于页面交换的计数,若页面为空闲则为0,分配就赋值1,没建立或恢复一次映射就加1,断开映射就减一
unsigned long flags;//反应页面各种状态,例如活跃,不活跃脏,不活跃干净,空闲
struct list_head lru;
unsigned long age; //表示页面寿命
wait_queue_head_t wait;
struct page ** pprev_hash;
struct buffer_head * buffers;
void * virtual
struct zone_struct * zone; //指向所属的管理区
}
(对于每个项的说明,我会慢慢补上)
对内存,仅仅用page数据结构来描述肯定远远不够,对于整个内存,我们在此之上分了管理区的概念,每个管理区管理数个页面。这个数据结构是 zone_struct定义位置是在include/linux/mmzone.h
typedef struct free_area_struct {
    struct list_head free_list;   //linux 中通用的双向链队列
    unsigned int * map;
} free_area_t;
typedef struct zone_struct{
    sp


相关文档:

linux mysql 开发环境

安装mysql
sudo apt-get install mysql-servel-5.0 mysql-client-5.0
下载安装过程中,会提示输入root密码
安装C语言编程接口:
 sudo apt-get install libmysqlclient15-dev
更多api 查看:http://dev.mysql.com/doc/refman/5.0/en/c.html
相关mysql头文件和库文件安装在/usr/include/mysql/和/usr/lib/mysql目 ......

Linux 安装 Mysql

 一、引言
  想使用Linux已经很长时间了,由于没有硬性任务一直也没有系统学习,近日由于工作需要必须使用Linux下的MySQL。本以为有
Windows下使用SQL
Server的经验,觉得在Linux下安装MySql应该是易如反掌的事,可在真正安装和使用MySQL时走了很多弯路,遇见很多问题,毕竟Linux
和Windows本身就有很大区别。为了让 ......

Linux 平台下 MYSQL安装 启动 mysql命令

MYSQL安装
//解压编译安装
# tar xzvf mysql-5.0.27.tar.gz
# cd mysql-5.0.27
# ./configure -prefix=/home/redadmin/mysql
# make
# make install
# cd /home/redadmin/mysql/
# cp share/mysql/my-medium.cnf ./
# mv my-medium.cnf my.cnf
// my.conf文件修改
# vi my.cnf
修改前:
port  &nb ......

Linux中Kill命令的进程调度讲解_转

  kill命令
当需要中断一个前台进程的时候,通常是使用< Ctrl+c >组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原 因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。
kill命 ......

浅析linux下鼠标驱动的实现

对于鼠标驱动和前面分析过的键盘驱动都是共用input模型,所以,对于事件上报和处理的方式都没有区别,只是mouse鼠标驱动当上报完dx,dy,left,middle,right之后,需要调用input_sync(),将前面上报的仅仅填充在缓冲区中的数据,通过mousedev_notify_readers()发送给open了的挂接在mousedev->client_list链表上等待获取鼠标信息的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号