线程与进程区别

上传人:ji****72 文档编号:39531329 上传时间:2018-05-16 格式:DOC 页数:24 大小:84.17KB
返回 下载 相关 举报
线程与进程区别_第1页
第1页 / 共24页
线程与进程区别_第2页
第2页 / 共24页
线程与进程区别_第3页
第3页 / 共24页
线程与进程区别_第4页
第4页 / 共24页
线程与进程区别_第5页
第5页 / 共24页
点击查看更多>>
资源描述

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

1、线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多

2、个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独

3、立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.线程和进程都是现在电脑概念里比较时髦的用语,什么是多线程,什么是多 进程?本文详细的给您介绍一下,希望能增进您对当代电脑技术的了解,有不到 之处,还往高手予以更正。进程(英语:Process,中国大陆译作进程,台湾译作 行程)是计算机中已运行程序的实体。进程本身不会运行,是线程的容器。程序 本身只是指令的集合,进程才是程序(那些指令)的真正运行。若

4、干进程有可能 与同一个程序相关系,且每个进程皆可以同步(循序)或不同步(平行)的方式独立 运行。进程为现今分时系统的基本运作单位线程(英语:thread,台湾译为运行绪),操作系统技术中的术语,是操作系 统能够进行运算调度的最小单位。它被包涵在进程之中,一条线程指的是进程 中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行 不同的任务。在 Unix System V 及 SunOS 中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。线程是独立调度和分派的基本

5、单位。线程可以操作系统内核调度的内核线 程,如 Win32 线程;由用户进程自行调度的用户线程,如 Linux Portable Thread; 或者由内核与用户进程,如 Windows 7 的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间, 文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。在多核或多 CPU,或支持 Hyper-threading

6、的 CPU 上使用多线程程序设计 的好处是显而易见,即提高了程序的执行吞吐率。在单 CPU 单核的计算机上, 使用多线程技术,也可以把进程中负责 IO 处理、人机交互而常备阻塞的部分与 密集计算的部分分开来执行,编写专门的 workhorse 线程执行密集计算,从而 提高了程序的执行效率进程是资源分配的最小单位,线程是 CPU 调度的最小单位。线程和进程的 区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每 个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约 CPU 时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资 源和 CP

7、U。多进程: 进程是程序在计算机上的一次执行活动。当你运行一个程序,你 就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可 以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系 统进程,它们就是处于运行状态下的操作系统本身;所有由用户启动的进程都是 用户进程。进程是操作系统进行资源分配的单位。 进程又被细化为线程,也就 是一个进程下有多个能独立运行的更小的单位。在同一个时间里,同一个计算 机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。 多任务 带来的好处是明显的,比如你可

8、以边听 mp3 边上网,与此同时甚至可以将下载 的文档打印出来,而这些任务之间丝毫不会相互干扰。那么这里就涉及到并行 的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个 CPU 只能分 配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个 CPU, 也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发 技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”, 它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用 CPU,每个进程允许占用 CPU 的时间非常短(比如 10 毫秒),这样用户根本感觉 不出来 CPU 是在轮流为多个进程

9、服务,就好象所有的进程都在不间断地运行 一样。但实际上在任何一个时间内有且仅有一个进程占有 CPU。 如果一台计 算机有多个 CPU,情况就不同了,如果进程数小于 CPU 数,则不同的进程可 以分配给不同的 CPU 来运行,这样,多个进程就是真正同时运行的,这便是并 行。但如果进程数大于 CPU 数,则仍然需要使用并发技术。 进行 CPU 分配是 以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单 地说,有如下关系:总线程数 CPU 数量:并发运行并行运行的效率显然高于并发运行,所以在多 CPU 的计算机中,多任务的 效率比较高。但是,如果在多 CPU 计算机中只运行一个进程

10、(线程),就不能发 挥多 CPU 的优势。 这里涉及到多任务操作系统的问题,多任务操作系统(如 Windows)的基本原理是:操作系统将 CPU 的时间片分配给多个线程,每个线程在 操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作 系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来, 就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看 来,就好像是多个进程在同时执行,这样就实现了多任务多线程:在计算机编程中,一个基本的概念就是同时对多个任务加以控制。 许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题, 再返回

11、主进程。可以通过多种途径达到这个目的。最开始的时候,那些掌握机 器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的 中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了 另一类的代价高昂问题。中断对那些实时性很强的任务来说是很有必要的。但 对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程 序能更迅速地响应用户的请求。最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操 作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真 正进入“并行运算”状态。从程序设计语言的角度看,多线程操作最有价值的特 性之一就是程序员不

12、必关心到底使用了多少个处理器。程序在逻辑意义上被分 割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需 作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理非常简单。但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相 同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送 给一台打印机。为解决这个问题,对那些可共享的资源来说(比如打印机),它 们在使用期间必须进入锁定状态。所以一个线程可将资源锁定,在完成了它的 任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了

13、提高 资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候 实现的。一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势 在于充分利用了 CPU 的空闲时间片,可以用尽可能少的时间来对用户的要求做 出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活 性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特 殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之 间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间

14、传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。 每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的 进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行在 同一计算机上或网络连接的不同计算机上。进程间通信技术包括消息传递、同步、共享内存和远程过程调用。IPC 是 一种标准的 Unix 通信机制。使用 IPC 的理由:信息共享加速;模块化;方便; 以及私有权分离.主要的 IPC 方法方法 提供方(操作系统或其他环境)文件 多数操作系统信号 多数操作系统Socket 多数操作系统消息队列(en:Message queue) 多数操作系统管道(e

15、n:Pipe) 所有的 POSIX systems, Windows.具名管道(en:Named Pipe) 所有的 POSIX 系统, Windows.信号量(en:Semaphore) 所有的 POSIX 系统, Windows.共享内存 所有的 POSIX 系统, Windows.Message passing(en:Message passing) 用于 MPI 规范,Java RMI, CORBA, MSMQ, MailSlot 以及其他.进程和线程的区别进程和线程的区别收藏收藏 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发

16、性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极 大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入 口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用 程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同 时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调 度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系 统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独 立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可 少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线 程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执 行.进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程

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

当前位置:首页 > 行业资料 > 其它行业文档

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