线程进程多线程多进程和多任务之间的区别与联系Word格式.docx

上传人:b****1 文档编号:14591485 上传时间:2022-10-23 格式:DOCX 页数:8 大小:188.28KB
下载 相关 举报
线程进程多线程多进程和多任务之间的区别与联系Word格式.docx_第1页
第1页 / 共8页
线程进程多线程多进程和多任务之间的区别与联系Word格式.docx_第2页
第2页 / 共8页
线程进程多线程多进程和多任务之间的区别与联系Word格式.docx_第3页
第3页 / 共8页
线程进程多线程多进程和多任务之间的区别与联系Word格式.docx_第4页
第4页 / 共8页
线程进程多线程多进程和多任务之间的区别与联系Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

线程进程多线程多进程和多任务之间的区别与联系Word格式.docx

《线程进程多线程多进程和多任务之间的区别与联系Word格式.docx》由会员分享,可在线阅读,更多相关《线程进程多线程多进程和多任务之间的区别与联系Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

线程进程多线程多进程和多任务之间的区别与联系Word格式.docx

面粉、鸡蛋、糖、香草汁等。

在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法)计算机科学家就是处理器(CPU),而做蛋糕的各种原料就是输入数据。

进程就是厨师阅读食谱、取来各种原料以及烘制蛋糕等一系列动作的总和。

现在假设计算机科学家的儿子哭着跑了进来,说他的头被一只蜜蜂蛰了。

计算机科学家就记录下他照着食谱做到哪儿了(保存进程的当前状态),然后拿出一本急救手册,按照其中的指示处理蛰伤。

这里,我们看到处理机制是从一个进程(做蛋糕)切换到另一个高优先级的进程(实施医疗救治),每个进程拥有各自的程序(食谱和急救手册)。

当蜜蜂蛰伤处理完之后,这位计算机科学家又回来做蛋糕,从他离开时的那一步继续做下去。

2

线程线程是CPU调度的最小单位(程序执行流的最小单元),它被包含在进程之中,是进程中的实际运作单元。

一条线程是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

一个标准的线程有线程ID、当前指令指针(PC),寄存器集合和堆栈组成。

另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单元,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。

一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。

由于线程之间的相互制约,致使线程在运行中呈现处间断性。

线程也有就绪、阻塞和运行三种基本状态。

就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;

运行状态是指线程占有处理机正在运行;

阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。

每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

举例说明线程:

假设,一个文本程序,需要接受键盘输入,将内容显示在屏幕上,还需要保存信息到硬盘中。

若只有一个进程,势必造成同一时间只能干一样事的尴尬(当保存时,就不能通过键盘输入内容)。

若有多个进程,每个进程负责一个任务,进程A负责接收键盘输入的任务,进程B负责将内容显示在屏幕上的任务,进程C负责保存内容到硬盘中的任务。

这里进程A,B,C间的协作涉及到了进程通信问题,而且有共同都需要拥有的东西——-文本内容,不停的切换造成性能上的损失。

若有一种机制,可以使任务A,B,C共享资源,这样上下文切换所需要保存和恢复的内容就少了,同时又可以减少通信所带来的性能损耗,那就好了。

这种机制就是线程。

总的来说:

进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。

3

多进程进程是程序在计算机上的一次执行活动,当你运行一个程序,你就启动了一个进程。

显然,程序是死的(静态的),进程是活的(动态的)。

进程可以分为系统进程和用户进程,凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;

所有由用户启动的进程都是用户进程。

进程是操作系统进行资源分配的单位。

进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。

在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。

现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。

多任务带来的好处是明显的,比如你可以边听网易云音乐,一边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。

那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。

我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。

实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:

在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好像所有的进程都在不间断地运行一样。

但实际上在任何一个时间内有且仅有一个进程占有CPU。

如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。

并行处理(ParallelProcessing)是计算机系统中能同时执行两个或更多个处理的一种计算方法。

并行处理可同时工作于同一程序的不同方面。

并行处理的主要目的是节省大型和复杂问题的解决时间。

并发处理(concurrencyProcessing):

指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机(CPU)上运行

并发的关键是你有处理多个任务的能力,不一定要同时。

并行的关键是你有同时处理多个任务的能力。

所以说,并行是并发的子集。

4

多线程线程是程序中一个单一的顺序控制流程。

进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单元。

在单一程序中同时运行多个想成完成不同的工作,称为多线程。

多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。

线程是在同一时间需要完成多项任务的时候被实现的。

打个比方:

多进程是立体交通系统(近似于立交桥),虽然造价高,上坡下坡多耗点油,但是不堵车。

多线程是平面交通系统,造价低,但红绿灯太多,老堵车。

5

线程与进程的关系

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程;

(2)资源分配给进程,同一进程内的所有线程共享该进程的所有资源;

(3)线程在执行过程中需要协作同步。

不同进程中的线程之间要利用消息通信的方法实现同步;

(4)处理机分配给线程,即真正在处理机上运行的是线程;

(5)线程是进程的一个执行单元,也是进程内的可调用实体。

6

线程和进程的区别

(1)线程共享内存空间;

进程的内存是独立的;

(2)同一个进程的线程之间可以直接交流;

两个进程想通信,必须通过一个中间代理来实现;

(3)创建新进程很简单;

创建新进程需要对其父进程进行一个克隆;

(4)一个线程可以控制和操作同一进程里的其他线程;

但是进程只能操作子进程;

(5)改变注线程(如优先权),可能会影响其他线程;

改变父进程,不影响子进程。

(6)调度:

线程作为分配和调度的基本单位,进程作为拥有资源的基本单位(7)并发性:

不进进程之间可以并发执行,同一进程内的线程也可以并发执行(8)拥有资源:

进程是拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属于进程的系统资源(9)系统开销:

在创建和撤销进程的时候,系统都要分配和回收资源,导致系统的明显大于创建和撤销线程时的开销。

但进程有独立的地址空间,进程崩溃后,在保护模式的下不会对其他进程造成影响,而线程只是进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有独立的地址空间,一个线程死后就等于整个进程死掉,所以多进程程序要比多线程程序健壮,但是在进程切换的时候消耗的资源较大,效率差。

根本区别就一点:

用多进程每个进程有自己的地址空间(addressspace),线程则共享地址空间。

总结:

多线程执行效率高;

多进程耗资源,安全。

7

进程的优缺点7.1进程的优点1)顺序程序的特点:

具有封闭性和可再现性;

2)程序的并发执行和资源共享。

多道程序设计出现后,实现了程序的并发执行和资源共享,提高了系统的效率和系统的资源利用率。

7.2进程的缺点

操作系统调度切换多个线程要比切换调度进程在速度上快的多。

而且进程间内存无法共享,通讯也比较麻烦。

线程之间由于共享进程内存空间,所以交换数据非常方便;

在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

8

线程的优缺点8.1线程的优点1)它是一种非常"

节俭"

的多任务操作方式。

在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"

昂贵"

的多任务工作方式。

而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

当然,在具体的系统上,这个数据可能会有较大的区别;

2)线程间方便的通信机制,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便;

3)使多CPU系统更加有效。

操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上;

4)改善程序结构。

一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

8.2线程的缺点

1)调度时,要保存线程状态,频繁调度,需要占用大量的机时;

2)程序设计上容易出错(线程同步问题)。

9

多线程的优缺点9.1多线程的优点1)无需跨进程边界;

程序逻辑和控制方式简单;

2)所有线程可以直接共享内存和变量等;

3)线程方式消耗的总资源比进程方式好。

9.2多线程的缺点

1)每个线程与主程序共用地址空间,受限于2GB地址空间;

2)线程之间的同步和加锁控制比较麻烦;

一个线程的崩溃可能影响到整个程序的稳定性;

3)到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如WindowsServer2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;

4)线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU。

10

多进程的优缺点10.1多进程的优点1)每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;

2)通过增加CPU,就可以容易扩充性能;

3)可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;

4)每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。

10.2多进程的缺点

1)逻辑控制复杂,需要和主程序交互;

2)需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算多进程调度开销比较大。

最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理。

当然你也可以利用多线程+CPU+轮询方式来解决问题……方法和手段是多样的,关键是自己看起来实现方便有能够满足要求,代价也合适。

按照多个不同的维度(类别),来看看多线程和多进程的对比(注:

因为是感性的比较,因此都是相对的,不是说一个好得不得了,另外一个差的无法忍受)。

其实没有绝对的好与坏,只有哪个更加合适的问题。

我们来看实际应用中究竟如何判断更加合适。

1)需要频繁创建销毁的优先用线程这种原则最常见的应用就是Web服务器了,来一个连接建立一个线程,断了就销毁线程,要是用进程,创建和销毁的代价是很难承受的 

2)需要进行大量计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1