读深入理解Linux内核 (第9章 进程地址空间, 第一部分 ---- 概念)
2016-10-21 18:02
543 查看
进程地址空间的概念
不同于内核态,用户态进程请求内存,并不立即分配页面,而是得到一段线性地址,这些地址被访问时内核才分配页面。一个进程的地址空间包括所有它可以使用的线性地址,每个进程的地址空间不相同,内核可以动态增加或删除进程的线性地址区间。
内核用内存区域(MemoryRegion)来表述一段线性地址区间,以下是创建内存区域的典型情景。
1. 当用户在控制台敲下命令时,shell进程创建一个新的进程,该进程共用shell进程的地址空间
2. 新进程装载程序时,释放旧的地址空间,创建新的内存区域,比如代码区,堆栈区
3. map文件时
4.用户态的堆栈扩张时
5.进程间内存共享
6.malloc()
内存描述符(mm_struct)
进程的地址空间用mm_struct描述,存放在进程描述符的mm字段内核线程的内存描述符
内核线程只在内核态运行,它们从不访问小于TASK_SIZE(0xC0000000)的地址空间。事实上,大于TASK_SIZE的线性地址区域对应的页表是相同的,也就是说,无论进程怎么切换,它们在这部分区域的页表是相同的(映射高端内存时会改变)。因此切换到内核线程时,会沿用之前进程的页表和内存描述符,这样避免了页表更新。相关文章推荐
- 读深入理解Linux内核 (第9章 进程地址空间, 第二部分 ---- 内存区域)
- 深入理解Linux内核-进程地址空间
- 深入理解Linux内核个人小结9---进程地址空间
- 读深入理解Linux内核 (第7章 进程调度)
- 深入理解Linux内核-进程
- 深入理解Linux内核 chap 7 进程调度
- 深入理解Linux内核 chap 3 进程
- 读书笔记--深入理解Linux内核-第七章 进程调度
- 读深入理解Linux内核 (第三章 进程)
- 深入理解Linux内核(3)---进程
- Linux内核进程调度schedule深入理解
- Linux内核进程调度schedule深入理解
- 深入理解Linux内核-第七章 进程调度 http://blog.csdn.net/sailor_8318/article/details/2460177
- 深入理解linux内核---进程(上)
- 深入理解Linux内核-进程调度
- 深入理解Linux内核(1)---基本概念
- 深入理解LINUX 内核 之 进程学习
- Linux内核-深入理解Linux内核几个概念
- 读深入理解Linux内核 (第8章 内存管理, 第一部分 --- 页的管理)
- 深入理解Linux内核(1)---基本概念