¶进程的基本概念
¶进程与程序
¶进程的组成部分
- 指令段(Text)
- 程序的CPU指令代码,包括:主程序和子程序编译后的CPU指令代码, 以及调用的库函数代码
- 指令段的大小固定不变,只读
- 用户数据段
- 全局变量,静态(static)变量,字符串常数
- 允许数据段增长和缩小,实现内存的动态分配
- 系统调用sbrk()允许编程调整数据段的大小(调整单位为“页”)
- 内存管理库函数,如:malloc(),free()
- 用户栈段
- 程序执行所需要的栈空间,实现函数的调用
- 用于保存子程序返回地址
- 在函数和被调函数之间传递参数
- 函数体内部定义的变量(静态变量除外)
- main函数得到的命令行参数以及环境参数
- 存放在栈的最底部
- main函数运行之前,这些部分就已经被系统初始化
- 栈段的动态增长与增长限制
- 程序执行所需要的栈空间,实现函数的调用
- 系统数据段
- 上述三部分在进程私有的独立的逻辑地址空间内(CPU用户态访问)
- 系统数据段是内核内的数据,每个进程对应一套
- 包括页表和进程控制块PCB