线程vs进程多线程vs多进程

上传人:公**** 文档编号:506110437 上传时间:2022-12-19 格式:DOCX 页数:5 大小:12.62KB
返回 下载 相关 举报
线程vs进程多线程vs多进程_第1页
第1页 / 共5页
线程vs进程多线程vs多进程_第2页
第2页 / 共5页
线程vs进程多线程vs多进程_第3页
第3页 / 共5页
线程vs进程多线程vs多进程_第4页
第4页 / 共5页
线程vs进程多线程vs多进程_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《线程vs进程多线程vs多进程》由会员分享,可在线阅读,更多相关《线程vs进程多线程vs多进程(5页珍藏版)》请在金锄头文库上搜索。

1、线程和进程都是现在电脑概念里比较时髦的用语,什么是多线程,什么是多进程?本文详细 的给您介绍一下,希望能增进您对当代电脑技术的了解,有不到之 处,还往高手予以更正。 进程(英语:Process,中国大陆译作进程,台湾译作行程)是计算机中已运行程序的实体。进 程本身不会运行,是线程的容器。程 序本身只是指令的集合,进程才是程序(那些指令)的 真正运行。若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或不同步(平 行)的方式独立运行。进程为现今分时系统的基本运作单位线程线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。 一个标准的线

2、程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进 程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥 有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全 部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行 三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成

3、不同的工 作,称为多线程。一个进程可以有很多线程,每条线程并行执行不同的任务。进程是资源分配的最小单位,线程是CPU调度的最小单位。周期1.新建2.就绪3.运行4.阻塞5.死亡线程和进程的区别在于子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自 己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用, 根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线 程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独 立调度的基本单位。由于

4、线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的 开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统 资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它 视为现代操作系统的一个重要指标。线程与进程的区别可以归纳为以下几点:1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。 某进程内的线程在其它进程不可见。2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通 信一一需要进程同步和互斥手段的辅助,以保证数据的一致性。3)调度和切换:线程上下文切换比进程上下文切

5、换要快得多。4)在多线程OS中,进程不是一个可执行的实体。多进程要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径 达到这个目的。最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身 支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并 行运算”状态。 从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了 多少个处理器。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器, 那么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处 理非常简单。但必须注意一个问题:共

6、享资源!如果有多个线程同时运行,而且它们试图 访问相同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台 打印机。为解决这个问题,对那些可共享的资源来说(比如打印机)它们在使用期间必须 进入锁定状态。所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁, 使其他线程可以接着使用同样的资源。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率 来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显 然,程序是死的(静态的),进程是活的(动态的)。进程可

7、以分为系统进程和用户进程。凡是 用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本 身;所有由用户启动的进程都是用户进程。进程是操作系统进行资源分配的单位。进程又 被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。在同一个时间里,同一 个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操 作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。多任务带来的好处是明 显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务 之间丝毫不会相互干扰。那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计

8、算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的 计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就 必须使用并发技术。实现并发技术相当复杂,最容易理解的是时间片轮转进程调度算法”, 它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个 进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为 多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且 仅有一个进程占有CPU。如果一台计算机有多个CPU,情况就不同了,如果进程数小于 CPU数,则不同的进

9、程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行 的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。进行CPU分配 是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如 下关系:总线程数=CPU数量:并行运行总线程数CPU数量:并发运行并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。 但是,如果在多CPU计算机中只运行一个进程(线程),就不 能发挥多CPU的优势。这里 涉及到多任务操作系统的问题,多任务操作系统(如Windows)的基本原理是:操作系统将CPU 的时间片分配给多个线程,每个线程在操作系统指定

10、的时间片内完成(注意,这里的多个线程 是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往 复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我 们看来,就好像是多个进程在同时执行,这样就实现了多任务计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通 过多种途径达到这个目的。最开始的时候,那些掌握机器低级语言的程序员编写一些中断 服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出 的程序很难移植,由此造成了另一类的代价高昂问题。中断对那些实时性很强的任务来说是 很有必要的。但

11、对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整 个程序能更迅速地响应用户的请求。最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身支 持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。 从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了 多少个处理器。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那 么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理 非常简单。但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问 相同的资源,就

12、会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台打印 机。为解决 这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入 锁定状态。所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个 锁,使 其他线程可以接着使用同样的资源。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率 来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用 了 CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体 运行效率得到较大提高,同时增

13、强了应用程序的灵活性。更为重要的是,由于同一进程的所 有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享 文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于 解决。ProcessThread #12Thread#2sssbsssb进程间通信(IPC, Inter-Process Communication),指至少两个进程或线程间传送数据或 信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部 分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作, 才有了进程间通信。这些进程可以运行在同一计算机上或网络连接的不同计算机上。进程间通信技术包括消息传递、同步、共享内存和远程过程调用。IPC是一种标准的 Unix通信机制。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号