深入理解Linux内核个人小结9---进程地址空间
2012-10-02 11:05
639 查看
主要包括两部分: 进程地址空间的结构,进程动态内存的推迟分配(通过请求调页与缺页中断来实现的)。
推迟分配:用户态进程请求动态内存时,并未立即获得请求的页框,而是仅仅获得对一个线性区的访问权,仅当要用此区域时才真正通过缺页中断分配页框;通过这增加了系统中空闲页框的平均数,从而能够更好的利用空闲内存。
一. 进程的地址空间:
每个用户态进程都拥有自己的进程地址空间(0-3G),而内核地址空间(第4G)是所有进程所共享的(通过中断或系统调用来使用)。
进程描述符--->内存描述符--->线性区--->线性地址空间 : 注意后三者间的对应关系(本节核心)
无效线性地址的两种情况: 编程错误引发的无效地址, 由缺页引发的无效地址。
内核线程不使用线性区,故而其对应的进程描述符字段为NULL。但是其active_mm字段会被初始化为前一个运行进程的内存描述符。
线性区:
两种组织结构: 链表(顺序扫描用)与红黑树(快速确定指定地址的线性区)。进程内线性区不会发生重叠。若其相邻且权限一致则可进行合并操作。
相关权限:线性区的访问权限,页表访问权限,页描述符的flag字段标志。
线性区的创建及删除等操作及相应的辅助函数。
二. 缺页异常:
一个流程图:
三. 进程地址空间的创建爱你及删除,堆的管理
堆: 每个Unix进程都拥有一个特殊的线性区(堆),通过其用于满足进程动态内存的的请求。
推迟分配:用户态进程请求动态内存时,并未立即获得请求的页框,而是仅仅获得对一个线性区的访问权,仅当要用此区域时才真正通过缺页中断分配页框;通过这增加了系统中空闲页框的平均数,从而能够更好的利用空闲内存。
一. 进程的地址空间:
每个用户态进程都拥有自己的进程地址空间(0-3G),而内核地址空间(第4G)是所有进程所共享的(通过中断或系统调用来使用)。
进程描述符--->内存描述符--->线性区--->线性地址空间 : 注意后三者间的对应关系(本节核心)
无效线性地址的两种情况: 编程错误引发的无效地址, 由缺页引发的无效地址。
内核线程不使用线性区,故而其对应的进程描述符字段为NULL。但是其active_mm字段会被初始化为前一个运行进程的内存描述符。
线性区:
两种组织结构: 链表(顺序扫描用)与红黑树(快速确定指定地址的线性区)。进程内线性区不会发生重叠。若其相邻且权限一致则可进行合并操作。
相关权限:线性区的访问权限,页表访问权限,页描述符的flag字段标志。
线性区的创建及删除等操作及相应的辅助函数。
二. 缺页异常:
一个流程图:
三. 进程地址空间的创建爱你及删除,堆的管理
堆: 每个Unix进程都拥有一个特殊的线性区(堆),通过其用于满足进程动态内存的的请求。
相关文章推荐
- 深入理解Linux内核个人小结3--进程
- 读深入理解Linux内核 (第9章 进程地址空间, 第二部分 ---- 内存区域)
- 读深入理解Linux内核 (第9章 进程地址空间, 第一部分 ---- 概念)
- 深入理解Linux内核个人小结10---系统调用
- 深入理解Linux内核-进程地址空间
- 深入理解Linux内核个人小结4---中断和异常
- 深入理解Linux内核个人小结5---内核同步
- 深入理解Linux内核个人小结12---虚拟文件系统
- 深入理解Linux内核个人小结1---绪论
- 深入理解Linux内核个人小结2---内存寻址
- 深入理解Linux内核个人小结8---内存区管理
- 深入理解Linux内核(3)---进程
- 可重入内核和进程地址空间--深入理解linux内核
- 读深入理解Linux内核 (第7章 进程调度)
- 深入理解Linux内核-第七章 进程调度
- 深入理解Linux内核-第七章 进程调度 http://blog.csdn.net/sailor_8318/article/details/2460177
- Linux内核进程调度schedule深入理解
- 深入理解Linux内核-进程调度
- 深入理解Linux内核---进程
- 深入理解Linux内核-进程