linux下的进程
来源:互联网 发布:数据中心网络布线方式 编辑:程序博客网 时间:2024/05/16 00:24
+--------------------------------------+
| ...... | ... 省略了一些我们不需要关心的区
+--------------------------------------+
| env strings (环境变量字串) | \
+--------------------------------------+ \
| argv strings (命令行字串) | \
+--------------------------------------+ \
| env pointers (环境变量指针) | SHELL的环境变量和命令行参数保存区
+--------------------------------------+ /
| argv pointers (命令行参数指针) | /
+--------------------------------------+ /
| argc (命令行参数个数) | /
+--------------------------------------+
| main 函数的栈帧 | \
+--------------------------------------+ \
| func_1 函数的栈帧 | \
+--------------------------------------+ \
| func_2 函数的栈帧 | \
+--------------------------------------+ \
| func_3 函数的栈帧 | Stack (栈)
+......................................+ /
| | /
...... /
| | /
+......................................+ /
| Heap (堆) | /
+--------------------------------------+
| Uninitialised (BSS) data | 非初始化数据(BSS)区
+--------------------------------------+
| Initialised data | 初始化数据区
+--------------------------------------+
| Text | 文本区
+--------------------------------------+
上图为进程数据内存分配图,底端为内存低地址,文本区存放只读程序代码,由fork创建的子进程共享该段代码,而其他数据区则从新开辟。Data段(初始化数据区)为数据分配空间,BSS段只记录数据所需内存大小,不为其分配空间。
进程:进程是一个运行程序并为其提供执行环境的实体,它包括一个地址空间和至少一个控制点,进程在这个地址空间上执行单一指令序列。进程地址空间包括可以访问或引用的内存单元的集合,进程控制点通过一个一般称为程序计数器(program counter,PC)的硬件寄存器控制和跟踪进程指令序列。进程作为分配资源的基本单位,而线程作为独立运行和独立调度的基本单位。
线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。
| ...... | ... 省略了一些我们不需要关心的区
+--------------------------------------+
| env strings (环境变量字串) | \
+--------------------------------------+ \
| argv strings (命令行字串) | \
+--------------------------------------+ \
| env pointers (环境变量指针) | SHELL的环境变量和命令行参数保存区
+--------------------------------------+ /
| argv pointers (命令行参数指针) | /
+--------------------------------------+ /
| argc (命令行参数个数) | /
+--------------------------------------+
| main 函数的栈帧 | \
+--------------------------------------+ \
| func_1 函数的栈帧 | \
+--------------------------------------+ \
| func_2 函数的栈帧 | \
+--------------------------------------+ \
| func_3 函数的栈帧 | Stack (栈)
+......................................+ /
| | /
...... /
| | /
+......................................+ /
| Heap (堆) | /
+--------------------------------------+
| Uninitialised (BSS) data | 非初始化数据(BSS)区
+--------------------------------------+
| Initialised data | 初始化数据区
+--------------------------------------+
| Text | 文本区
+--------------------------------------+
上图为进程数据内存分配图,底端为内存低地址,文本区存放只读程序代码,由fork创建的子进程共享该段代码,而其他数据区则从新开辟。Data段(初始化数据区)为数据分配空间,BSS段只记录数据所需内存大小,不为其分配空间。
进程:进程是一个运行程序并为其提供执行环境的实体,它包括一个地址空间和至少一个控制点,进程在这个地址空间上执行单一指令序列。进程地址空间包括可以访问或引用的内存单元的集合,进程控制点通过一个一般称为程序计数器(program counter,PC)的硬件寄存器控制和跟踪进程指令序列。进程作为分配资源的基本单位,而线程作为独立运行和独立调度的基本单位。
一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat()按下述步骤创建一个新进程。
1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
2) 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需要的内存大小。
3) 初始化进程控制块。PCB的初始化包括:
①初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中。
②初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶。
③初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。
4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。
在android系统中发生段错误时可通过PC地址查询段错误发生所对应的源码。
线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。
0 0
- linux下的进程
- Linux下的 进程
- Linux下的进程
- linux下的进程
- linux下的进程之-----守护进程
- Linux下进程的创建
- linux下的deamon进程
- linux下的进程通信
- Linux下的进程控制
- linux下的deamon进程
- Linux下的僵尸进程
- linux下的进程通信
- Linux下的进程实例
- linux下的deamon进程
- linux下的deamon进程
- Linux下的进程环境
- linux下的进程通信
- [Lab2]linux下的进程
- Mysqlbinlog工具及导出数据并转换编码导入
- Service接口
- 手机网站开发(WAP网站)第一篇
- 常用的 cocos2d-x 游戏开发工具
- 管理经济学概述
- linux下的进程
- mailto 参数讲解
- 王垠:《程序员的心理疾病》
- 数据挖掘--贝叶斯Bayes算法实现
- endeca studio安装部署指南
- NYOJ 156 Hangover
- 使用JmsTemplate发送持久化和非持久化消息
- Can't locate JSON/SL.pm in @INC 解决方法
- JAVA基础——API(StringBuffer)