设为首页 加入收藏

TOP

6.2.7 线程与进程的关键类似和差别
2013-10-07 12:57:09 来源: 作者: 【 】 浏览:58
Tags:6.2.7 线程 进程 关键 类似 差别

6.2.7  线程与进程的关键类似和差别

线程和进程有很多相似之处,也存在巨大的差别。线程和进程都有id、寄存器组、状态和优先级,而且都支持某种调度策略。与进程类似,线程也有一个环境来向操作系统描述实体,即进程上下文或线程上下文。上下文用来重新构建被抢占的进程或线程。尽管进程所需要的信息远多于线程所需要的信息,但它们的目的是相同的。

线程和子进程不需要额外的初始化或准备就能够共享父进程的资源。进程打开的资源对线程或子进程是立即可访问的。与内核实体类似,线程和子进程会竞争对处理器的使用。父进程对子进程或线程有一定的控制。父进程可以对子进程或线程进行如下操作:

取消

挂起

重新开始

改变优先级

线程或进程可以改变自身的属性和创建新的资源,但是它不能够访问属于其他进程的资源。

如同我们已经指出的那样,线程和进程之间最大的差别在于每个进程有自己的进程空间,而线程则包含在所属进程的地址空间内。这就是为何线程可以非常容易地共享资源,而且线程间通信如此简单的原因。子进程有自己的地址空间以及它的父进程的数据段的副本,所以当子进程改动它的数据时,不会影响父进程的数据。如果父进程同子进程期望共享数据,则需要创建一块共享内存区域。共享内存是进程间通信机制的一种类型,其中包含了管道以及先进先出(FIFO)调度策略。进程间通信机制用于在进程之间传递数据。

注意:

进程间通信将在第7章讨论。

尽管进程可以对它的子进程进行控制,对等线程却是处于相同的级别,无论是谁创建了它们。任意线程只要有权使用另一个对等线程的线程id,就能够对该线程进行取消、挂起、重新开始或改变优先级的操作。实际上,进程中的任意线程都可以通过取消主线程来删除进程,从而终止进程中的所有线程。对主线程的任何更改可能会影响进程中的所有线程。如果主线程的优先级发生了变化,则进程中继承该优先级的所有线程也都会发生变化。

表6-2汇总了线程与进程的关键类似和差别。

表6-2

线程与进程的类似< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

线程与进程的差别

都有id、寄存器组、状态、

优先级和调度策略

线程共享创建它的进程的地址空间,

进程有自己的地址空间

都有用于为操作系统

描述实体的属性

线程能够对所属进程的数据段进行

直接访问;进程有着父进程的数

据段的自己的副本

都包含一个信息块

线程可以同所属进程的其他线程直

接通信;进程必须使用进程间通

信才能够和兄弟进程进行通信

都与父进程共享资源

线程几乎没有开销,

进程则有相当大的开销

都可作为与父进程独立的实体

创建新的线程很容易,创建新的

进程则需要复制父进程

创建者可以对线程或进程

进行一些控制

线程可以对相同进程的其他线程

进行相当大的控制,进程只能

够对子进程进行控制


(续表)  

线程与进程的类似

线程与进程的差别

都可以改变它们的属性

对主线程的改动(取消、优先级改动等)

可能会影响到进程中其他线程的行为;

对父进程的改动不会影响到子进程

都可以创建新的资源

 

都不能够访问另一

个进程的资源

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.3.5 cache 下一篇2.2 经典的第一个程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: