第六章 进程总结
Posted EasternCabbage
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六章 进程总结相关的知识,希望对你有一定的参考价值。
进程是可执行程序的实例
程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程,有如下信息
1:二进制格式标识符:执行方式 2:机器语言指令:对程序算法进行编码 3:程序入口地址:标识程序执行时的起始指令位置 4:数据:各种变量和常量 5:符号表和重定位表 6:共享库和动态链接库 7:许多其他信息
每个进程有一个进程号PID,每个进程有自己父进程号,getppid()可以获取父进程号。
子进程的父进程终止,子进程就会变成“孤儿”,pstree可以查看“家族书“(family tree)
进程内存布局
每个进程分配的内存由很多部分组成,通常称之为”段(Segment)“
文本段:包含了程序运行的程序机器语言指令。
初始化数据段:包含显式初始化的全局变量和静态变量
未初始化数据段:包含了未显式初始化的全局变量和静态变量(BSS段)
栈(Stack):是一个动态增长收缩的段,由栈帧(stack frames)组成。系统会为每个当前调用的函数分配一个栈帧。栈帧中储存了函数的局部变量,实参和返回值
堆(heap):是运行时为(变量)动态进行内存分配的一块区域。
虚拟内存(6.4节的讲解实在牛b,看的我十分佩服,对虚拟内存有了更深入的理解)
上述的进程内布局忽略了一个事实,内存布局是存在虚拟内存中的。
linux,像大多数现代内核一样,采用了虚拟内存管理技术,此技术利用了大多数程序共有的典型特性,即局部访问性,以求高效使用CPU和RAM(物理内存)。有这两种类型的局部性。
以上是关于第六章 进程总结的主要内容,如果未能解决你的问题,请参考以下文章