如何去理解Linux中进程,线程等概念

http://tech.ddvip.com   2007年03月11日    社区交流

本文详细介绍如何去理解Linux中进程,线程等概念

  1 基本概念

  1.1. 进程和线程

  可执行文件由指令和数据组成。进程就是在计算机上运行的可执行文件针对特定的输入数据的一个实例,同一个可执行程序文件如果操作不同的输入数据就是两个不同的进程。

  线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享其所附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一物理内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。

  Linux在核外采用1:1线程模型,即用一个核心进程(轻量进程)对应一个线程,将线程调度等同于进程调度,交给核心完成,而其它诸如线程取消、线程间的同步等工作,都是在核外线程库中完成的。因此可以把进程看作一组线程,这组线程拥有相同的线程组号(TGID),这个TGID就是这组线程序所附属的进程的ID号,每个线程的ID号就是我们用ps命令所看到的LWP号。

  为了方便,从现在起我们用任务来代替进程和线程,即每提到任务,我们就是指线程和进程,除非要强调线程和进程之间的不同之处。任务的周期从被fork开始一直到给任务从进程表中消失。一个进程包括:正文段(text),数据段(data),栈段(STACK)和共享内存段(SHARED MEMORY)。

  1.2. 中断和信号

  (1)中断

  中断通常定义为用来改变CPU执行的指令的顺序的事件。对于其分类可谓是仁者见仁,智者见智,但毕竟有胜于无,这里给出一种分类:硬中断、异常中断和软中断。硬中断也称为外部中断,分为两类,可屏蔽和不可屏蔽。/proc/interrupts列出了当前系统定义的所有硬中断。

来源:linuxeden.com    作者:纳斯    责编:豆豆技术应用

正在加载评论...