代码改变世界

linux进程和线程

2009-11-05 15:35  cesc711  阅读(196)  评论(0编辑  收藏  举报

这两天一直在看linxu进程和线程的东西,总是效率比较低,这么一点基础的东西还看了这么久。该自我反省一下。

首先来看看进程。进程分为三个部分,进程控制块,程序段和数据段。进程是一个有生命的实体,程序是一个没有生命的实体。只有CPU赋予程序生命的时候,程序才成为一个活动的实体,我们称之为“进程”。每一个进程都有自己的地址空间。一般包括文本区(代码区),数据区,堆栈。文本区存储程序执行的代码;数据区存储变量和动态分配的内存;栈区存储活动过程调用的指令和局部变量。进程是资源管理的最小单元。

再来看看线程。线程又被称为轻量级进程。不同的进程之间有不同的代码空间和数据空间,但是同一个进程之内的线程却共享该进程的数据空间和代码空间。不仅如此,它们还共享进程打开的文件描述符,信号句柄,信号处理器和当前目录状态,以及进程ID和进程组ID。但是每个线程也有自己独占的资源,包括:线程ID,线程堆栈,程序计数器和错误返回码,线程优先级,信号屏蔽码等。