mm_struct简要解析
http://blog.chinaunix.net/uid-20729583-id-1884615.html
struct mm_struct {
/*
指向线性区对象的链表头
*/
struct vm_area_struct *mmap;
/*
指向线性区对象的红-黑树
*/
struct rb_root mm_rb;
/*
指向最后一个引用的线性区对象
*/
struct vm_area_struct *mmap_cache;
/*
在进程地址空间中搜索有效线性地址区间的方法
*/
unsigned long (*get_unmapped_area)(struct file *filp,
unsigned long addr,unsigned long len,
unsigned long pgoff,unsigned long flags);
/*
释放线性区时调用的方法
*/
void (*unmap_area)(struct mm_struct *mm,unsigned long addr);
/*
标识第一个分配的匿名线性区或者是文件内存映射的线性地址
*/
unsigned long mmap_base;
/*
*/
unsigned long task_size;
unsigned long cache_hole_size;
/*
内核从这个地址开始搜索进程地址空间中线性地址的空闲区间
*/
unsigned long free_area_cache;
/*
指向页全局目录
*/
pgd_t *pgd;
/*
存放共享mm_struct数据结构的轻量级进程的个数
*/
atomic_t mm_users;
/*
内存描述符的主使用计数器,每次mm_count递减时,内核都要检查它是否变为0,如
果是,就要解除这个内存描述符,因为不再有用户使用它
*/
atomic_t mm_count;
/*
线性区的个数
*/
int map_count;
/*
*/
struct rw_semaphore mmap_sem;
/*
线性区的自旋锁和页表的自旋锁
*/
spinlock_t page_table_lock;
/*
存放链表相邻元素的地址,第一个元素是init_mm的mm_list字段
*/
struct list_head mmlist;
mm_counter_t _file_rss;
mm_counter_t _anon_rss;
/*
进程所拥有的最大页框数
*/
unsigned long hiwater_rss;
/*
进程线性区中的最大页数
*/
unsigned long hiwater_vm;
/*
进程地址空间的大小,"锁住"而不能换出的页的个数,共享文件内存映射中的页数,
可执行内存映射中的页数
*/
unsigned long total_vm,locked_vm,shared_vm,exec_vm;
/*
用户态堆栈中的页数,在保留区中的页数或者是在特殊线性区中的页数,线性区默认
的访问标志,this进程的页表数
*/
unsigned long stack_vm,reserved_vm,def_flags,nr_ptes;
/*
可执行代码开始地址,结束地址,已初始化数据的开始地址,结束地址
*/
unsigned long start_code,end_code,start_data,end_data;
/*
堆的起始地址,堆的当前最后地址,用户态堆栈的起始地址
*/
unsigned long start_brk,brk,start_stack;
/*
命令行参数的起始地址,命令行参数的最后地址,环境变量的起始地址,环境变量的最后地址
*/
unsigned long arg_start,arg_end,env_start,env_end;
/*
开始执行ELF程序时会使用到saved_auxv参数
*/
unsigned long saved_auxv[AT_VECTOR_SIZE];
/*
用于懒惰TLB交换的位掩码
*/
cpumask_t cpu_vm_mask;
/*
指向有关特定体系结构信息的表
*/
mm_context_t context;
/*
*/
unsigned int faultstamp;
/*
*/
unsigned int token_priority;
/*
*/
unsigned int last_interval;
/*
线性区默认的访问标志(访问设置相关位的时候,必须使用原子操作来解决)
*/
unsigned long flags;
/*
正在把进程地址空间的内容卸载到转储文件中的轻量级进程的数量
*/
int core_waiters;
/*
指向创建内存转储文件时的补充原语
*/
struct completion *core_startup_done,core_done;
/*
用于异步I/O上下文链表的锁
*/
rwlock_t ioctx_list_lock;
/*
异步I/O上下文链表
*/
struct kioctx *ioctx_list;
};
mm_struct简要解析的更多相关文章
- 简要解析XMPP框架及iOS-Objective-C的使用
前言:这两天看了XMPP框架,查阅了一些资料,写下这篇文章记录一下学习笔记 一.简要解析XMPP核心部分 XMPP框架分为两个部分 1.核心部分 2.扩展部分 扩展部分主要讲好友列表(roster). ...
- SQL查询多条不重复记录值简要解析【转载】
转载http://hi.baidu.com/my_favourate/item/3716b0cbe125f312505058eb SQL查询多条不重复记录值简要解析2008-02-28 11:36 以 ...
- java与C++之间进行SOCKET通讯要点简要解析
原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...
- NOIP 2018 提高组初赛试题 题目+答案+简要解析
一.单项选择题(共 10 题,每题 2 分,共计 20 分: 每题有且仅有一个正确选项) 1. 下列四个不同进制的数中,与其它三项数值上不相等的是( ). A. (269) 16 B ...
- SDP简要解析
1.概述SDP也是MMUSIC工作组的一个产品,在MBONE内容中用得很多.其目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话.SDP基本上在internet上工作.他定义了会话画 ...
- volatile简要解析
在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写.这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值 ...
- package.json字段简要解析
name 必填 应用名称 version 必填 应用版本 description 选填 应用描述,多用于搜索,在npm search 时可以用到 keywords 选填 应用关键字,也多用于搜索 sc ...
- NOIP2018初赛总结(提高组)(试题+答案+简要解析)
NOIP2018初赛总结(提高组) 更新完毕(纯手敲),如果有错误请在下面留言 单选题 T1.下列四个不同进制的数中,与其它三项数值上不相等的是 A.\((269)_{16}\) B.\((617)_ ...
- 有关LinkedList常用方法的源码解析
上文里解析了有关ArrayList中的几个常用方法的源码——<有关ArrayList常用方法的源码解析>,本文将对LinkedList的常用方法做简要解析. LinkedList是基于链表 ...
随机推荐
- Java的Protected
没想到接触Java这么多年,今天竟然才发现一直有一个误解 Proteced只能被同一个包内的或者子类的class访问 那么在另一个包的如下代码有问题吗? Sub sub = new Sub(); su ...
- java——利用生产者消费者模式思想实现简易版handler机制
参考教程:http://www.sohu.com/a/237792762_659256 首先说一下这里面涉及到的线程: 1.mainLooper: 这个线程可以理解为消费者线程,里面运行了一个死循环, ...
- JavaSE---NIO
1.概述 1.1 BIO的问题: 读取输入流中的数据时,如果没有读到有效数据,该线程将被阻塞: 传统输入.输出流都是阻塞式的: 传统的输入.输出流都是通过字节移动处理: 面向流的输入.输出一次只能处理 ...
- Murano Weekly Meeting 2015.08.18
Meeting time: 2015.August.18th 1:00~2:00 Chairperson: Nikolay Starodubtsev, from Mirantis Meeting s ...
- gcc标准,c++中的inline
1. GCC的inlinegcc对C语言的inline做了自己的扩展,其行为与C99标准中的inline有较大的不同. 1.1. static inlineGCC的static inline定义很容易 ...
- SQL命令行操作
命令行操作(mysql.exe) 0.登录 : mysql -u root -p 1.显示数据库列表: show databases; 2.选择数据库: ...
- HDU 5412——CRB and Queries——————【线段树套Treap(并没有AC)】
CRB and Queries Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- promise之nodejsQ的详细用法总结
这里主要讲node.js中Q的各种用法及说明总结,不详细介绍promise及原理.关于promise介绍可以查看我的另一篇文章: https://www.cnblogs.com/yzeng/p/976 ...
- 未能解析引用的程序集......因为它对不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中的
解决方法:资源管理器下点击项目名(右键)属性--将.NET Framework 4 Client Profile改成.NET Framework 4 . 传送门:http://bbs.csdn.net ...
- java 模拟实现消费者和生产者问题
题目要求 用java代码模拟实现:一个人不断往箱子里放苹果,另一个人不断从箱子里取苹果,箱子只能放5个苹果,苹果数量无限.要求不使用java.util.concurrent包中的类. 思路 这道题主要 ...