[关闭]
@cxm-2016 2016-11-28T10:06:48.000000Z 字数 1098 阅读 2520

C++多线程编程(一)——进程与线程

C++多线程编程

版本:3
作者:陈小默
声明:禁止商业,禁止转载


一、进程与线程

为了理解多线程,掌握什么是线程(Thread)和进程(Process)以及它们之间的关系很重要。

1.1 什么是进程

进程与程序的主要区别:

1.2 进程的特征

1,结构特征:

进程实体 = 程序段 + 数据段 + PCB

其中PCB是进程控制块,其中包含进程的名字(进程ID)、内存和分配资源的指针、寄存器保存区以及进程的优先权。

2,动态性

3,并发性

4,独立性

5,异步性

1.3 进程状态

进程的状态 描述
就绪态(ready) 进程已获得除CPU以外的所有必要资源。
运行态(running) 进程获得CPU并正在执行。
阻塞态(blocked) 由于发生某些事件导致暂时无法执行,于是放弃CPU。
备用(standby) 从就绪队列中挑选出在处理器上运行的进程,每个处理器同一时刻只能有一个进程处于该状态。
空闲/新建(idle/new) 新创建但是不可运行的进程。
挂起(suspend) 进程被置于静止状态,就绪的进程不接受调度,即使被阻塞的进程的阻塞事件释放仍然不能运行。
终止(terminated) 进程完成任务,并释放资源。

1.3-进程状态切换图

1.3.1 挂起状态

进程被置于静止状态,就绪的进程不接受调度,即使被阻塞的进程的阻塞事件释放仍然不能运行。

引入挂起的原因:

1.3.2 创建和终止状态

创建状态
首先为新进程分配PCB,并写入管理信息;其次,将该进程转换为就绪态并插入就绪队列。
终止状态
进程终结后,将PCB清零并返还给操作系统。

1.4 线程和进程的比较

1)调度
当从一个线程切换到另一个线程时不会引起进程调度,除非这两个线程不属于同一个进程。
2)并发性
一个进程中的多个线程之间可以并发执行,能够有效的提高系统资源利用率和吞吐量。
3)拥有资源
进程是资源分配的基本单位,线程是执行的基本单位。


[1]C++面向对象多线程编程.人民邮电出版社.2003-4

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注