Linux内存描述符mm_struct初窥

news/2024/7/3 14:35:49 标签: struct, linux, list, cache, token, each
  本文出自: http://blog.csdn.net/hongchangfirst

        上次讲了Linux进程描述符,这次我们在讲讲内存描述符,Linux的内存描述符也用一个结构体来表示,具体是mm_struct结构体,在linux/mm_types.h里定义。Linux操作系统就是用这个结构体实现内存的管理,我们先看一下具体的字段情况。

 

struct mm_struct {

//拥有该结构体的进程的虚拟地址空间的大小
 unsigned long task_size;  

/* if non-zero, the largest hole below free_area_cache */
 unsigned long cached_hole_size; 

/* first hole of size cached_hole_size or larger */
  unsigned long free_area_cache; 

//在用户空间下有多少用户使用该内存

 atomic_t mm_users;   /* How many users with user space? */


//该结构体的引用计数值
 atomic_t mm_count;  
 

/*又出现了list_head,详情请参考,简单来讲,list_head和list_for_eachlist_entry共同实现了其“包含体”的链表。*/

 struct list_head mmlist;  


/*以下是关于代码段、数据段,栈、环境变量、参数的起始地址或结束地址等*/
 unsigned long total_vm, locked_vm, shared_vm, exec_vm;
 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;

  /*
  * Last value of global fault stamp as seen by this process.
  * In other words, this value gives an indication of how long
  * it has been since this task got the token.
  * Look at mm/thrash.c
  */
 unsigned int faultstamp;
 unsigned int token_priority;
 unsigned int last_interval;

};


       该结构体可以通过进程描述符来得到,比如current是当前进程的描述符,则current->mm是指向内存的指针。mm是指向struct mm_struct的指针。若还想对Linux的进程描述符有一定了解,可以参考task_struct


http://www.niftyadmin.cn/n/748373.html

相关文章

shell入门(三)——四则运算与流程控制

目录1、简单的四则运算2、四则运算符号3、了解i和|i4、条件判断语法结构4.1、 条件判断语法格式4.2、条件判断相关参数判断文件类型判断文件权限判断文件新旧判断整数判断字符串多重条件判断5、流程控制语句1、if结构2、if...else结构3、if...elif...else结构4、层层嵌套结构6、…

Linux内核源码中container_of详解

本文出自:http://blog.csdn.net/hongchangfirst 关于container_of的用法,可参考http://blog.csdn.net/hongchangfirst/article/details/7076225。其实就是解决了”如何通过结构中的某个变量的地址获取结构本身的指针“这样的问题。container_of实现了根据一个结构…

shell入门(四)——循环语法结构

目录1、for循环语法结构列表循环不带列表循环类C风格的for循环循环控制语句2、应用案例1、脚本计算1-100奇数和2、判断所输整数是否为质数3、批量创建用户4、局域网内脚本检查主机网络通讯3、while循环语句1. while循环语法结构2.应用案例4、until循环1. until语法结构1、for循…

Linux内核中list_head、list_for_each、list_entry、container_of之间的关系

原文:http://blog.csdn.net/hongchangfirst/article/details/7076225 作者:hongchangfirst Linux内核需要经常用到链表,所以为了避免重复的代码,就自己实现了一个循环双向链表。 首先我们先看一下list_head的定义,该结构体在linux/types.h中定…

什么是yaml

YAML(IPA: /ˈjməl/,尾音类似camel骆驼)是一个可读性高,用来表达资料序列的 编程语言。YAML参考了其他多种语言, 包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。Clark Evans在2001年在首次发表了…

yaml语言简介

阮一峰的网络日志 首页 档案上一篇:谷歌的代码管理 下一篇:如何识别图像边缘? 分类: 开发者手册YAML 语言教程 作者: 阮一峰 日期: 2016年7月 4日 编程免不了要写配置文件,怎么写配置也是…