本文是个人分析《Linux内核设计与实现》而写的总结,欢迎转载,请注明出处:

http://blog.csdn.net/dlutbrucezhang/article/details/13621133



struct mm_struct
{struct vm_area_struct *mmap;     //list of VMArb_root_t mm_rb;                     //指向vma段红黑树的指针struct vm_area_struct *mmap_cache;   //last find_vma result  存储上一次查询的操作的结果pgd_t *pgd;                            //进程页目录的起始地址atomic_t mm_users;                    //how many users with user spaceatomic_t mm_count;                    //how many reference to "struct mm_struct"int map_count;                        //Number of VMAstruct rw_semaphore mmap_sem;        //对mmap操作的互赤信号量spinlock_t page_table_lock;            //Protects task page tables and mm->rssstruct list_head mmlist;            //list of all active mm's. These are globally together off init_mm.mmlist,and are protected by mmlist_lockunsigned 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;unsigned long rss,total_vm,locked_vm;     //rss进程内容驻留在物理内存的页面地址unsigned long def_flags;unsigned long cpu_vm_mask;unsigned long swap_address;     //页面换出过程用到交换空间地址unsigned dumpable:1;//Architecture-specific MM contextmm_context_t context;                //存放着当前进程使用的段起始地址
};

从中我们可以看出,进程中确实包含了代码段,数据段,bss端,栈等内存区域。对于每一个内存区域,都有着一致的属性描述,例如,映射的物理内存,权限(可读,可写,可执行)等。


      3.mm_struct 和内核线程
      由于内核线程不会访问用户的地址空间,所以,它并不存在地址空间,但是这个字段又不能为空,所以,为了效率,Linux的设计方案是一旦内核线程执行,那么它就用前一个执行进程的地址空间字段,这当然包含了进程的页表,内核线程虽然不会访问用户地址空间,但是仍然需要与内核交互。
      

Linux内核探讨-- 第七章相关推荐

  1. Linux内核探讨-- 第六章

    本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/130 ...

  2. Linux内核探讨-- 第五章

    本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/123 ...

  3. Linux内核探讨-- 第四章

    本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处: http://blog.csdn.net/dlutbrucezhang/article/details/122 ...

  4. Linux内核探讨-- 第三章

    本文是个人分析<Linux内核设计与实现>而写的总结,欢迎转载,请注明出处:                                                         ...

  5. 十天学Linux内核之第七天---电源开和关时都发生了什么

    十天学Linux内核之第七天---电源开和关时都发生了什么 原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差 ...

  6. Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—日志分析平台...

    Linux与云计算--第二阶段Linux服务器架设 第七章:网站WEB服务器架设-日志分析平台 日志分析:AWstats 安装AWstats分析http日志信息. [1] Install AWstat ...

  7. linux内核测试指南 第一章

    linux内核测试指南 第一章 内核,补丁,内核树 和 编译 1.1 内核 Linux内核的当前版本通常可以从linux内核档案网站(http://www.kernel.org/)以一个大的压缩文件的 ...

  8. Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—电子邮件WEB端搭建SquirrelMail...

    Linux与云计算--第二阶段Linux服务器架设 第七章:网站WEB服务器架设-电子邮件WEB端搭建SquirrelMail WEBMAIL:SquirrelMail 使用SquirrelMail配 ...

  9. Linux内核分析 第七周 可执行程序的装载

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七 ...

最新文章

  1. Ubuntu下eclipse indigo版在线安装struts插件
  2. POJ 1287 Prim算法模板
  3. android 数据库 字节数组,Android上的GreenDAO:字节数组作为主键/构建包含字节数组属性Where子句的查询...
  4. “财务自由的15个阶段!说说你到哪个阶段了?”
  5. 【lora无线数传通信模块】亿佰特E22串口模块用于物联网地震预警传感通信方案
  6. java闰年的年份,Java案例-判断给定年份是闰年
  7. [周赛第200场][Leetcode][第5477题][第5478题][JAVA][双指针][贪心]
  8. python from import什么意思_Python 引用From import介绍
  9. C语言(面积计算器)不能输入负数[程序以要求]
  10. OpenWrt无线AP+STA配置
  11. 网页被劫持怎么修复?主页被劫持修复方法
  12. Python3+Selenium3+Pycharm自动化环境搭建(四):运行unittest时报错,unhandled inspector error
  13. python获取列表数字的下标
  14. 在python做对应分析_案例6:SPSS--对应分析
  15. 2020年复旦电子信息专硕考研初试经验贴
  16. 使用anaconda配置python3.6环境安装pyltp超详细教程,使用pycharm调用
  17. 自学渗透第四天--中国菜刀
  18. SVN 具体某一行代码是谁添加的
  19. RC4 python实现
  20. 单位丢失员工档案赔偿问题

热门文章

  1. gcc创建静态库和共享库
  2. 了解一些多线程相关的知识
  3. Windows XP SP3远程桌面连接支持网络级身份验证配置
  4. Newtonsoft.Json高级用法
  5. ListView自动滚到底部
  6. jQuery 调用jsonp实现与原理
  7. [WebApp]定宽网页设计下,固定宽度布局开发WebApp并实现多终端下WebApp布局自适应...
  8. iOS应用:成功就像中彩票,大半开发者亏本
  9. 使用WC“.NET研究”F实现SOA面向服务编程——简单的WCF开发实例
  10. paperclip的id partition功能还是相当的给力,省得我们实现了,这个功能之前连想都没想到,...