多线程与进程

转载 2011年01月16日 11:16:00
多线程技术有何优越性
[ 2007-11-19 17:04:00 | By: 扬扬 ]
 
0

多任务指的是系统可以同时运行多个进程,每个进程又可以同时执行多个线程.进程是应用程序的运行实例,拥有自己的地址空间.每个进程拥有一个主线程,同时还可以建立其他线程.线程是操作系统分配CPU时间的基本实体,每个线程占用的CPU时间由系统分配,系统不停地在线程之间切换.进程中的线程共享进程的虚拟地址空间可以访问进程的资源,处于并行执行状态,这就是多线程的基本概念.

进程与线程的概念

进程是可以与其他程序并发执行的一次执行过程,是系统进行资源分配和调度的基本单位.进程是一个程序关于某个数据集的一次运行.也就是说,进程是运行中的程序,是程序的一次运行活动.进程是动态的概念,而程序是静态的概念是指令的集合.因此,进程具有动态性和并发性.

   从静态的角度看,进程实体由程序块、进程控制块(PCB)和数据块3部分组成,程序块描述该进程所要完成的任务;数据块包括程序在执行时所需要的数据和工作区。进程控制块包括进程的描述信息、控制信息、资源管理信息和CPU现场保护信息等,反映了进程的动态特性。

PCB是进程存在的唯一标志,PCB描述了进程的基本情况系统根据PCB感知进程的存在,系统还通过PCB中所包含的各项变量的变化,来掌握进程所处的状态,以达到控制进程活动的目的。在创建一个过程时,首先应创建其PCB,然后才能根据PCB中的信息对进程实施有效的管理和控制。当一个进程完成其功能后,系统则释放PCB,进程也随之消亡。一般情况下,进程的PCB结构都是全部或部分常驻内存的。

  进程的状态如下:

就绪状态:是指进程分配到除处理机以外的必需资源(已具备了执行的条件)的状态。进程被创建后处于就绪状态,处于就绪状态的进程可以有多个。

执行状态:是指进程占有处理机正在CPU上执行的状态。在单CPU系统中,每一时刻只有一个进程处于执行状态。

 阻塞状态:是指进程因等待某个事件的发生而放弃处理机进入等待处理机进入等待状态。系统中处于这种状态的进程可以有多个。

 进程的状态随着自身的推进和外界的变化而变化。比如就绪状态的进程被进程调度程序选中进入执行状态;执行状态的进程因等待某一事件的发生转入等待状态;等待状态的进程所等待事件来到便进入就绪状态。进程的状态可以动态地相互转换,但阻塞状态的进程不能直接进入执行状态,就绪状态可以动态地相互转换,但阻塞的进程不能直接进入执行状态,就绪状态的进程不能直接进入阻塞状态。在任何时候,任何进程都处于且只能处于某一状态。

  在支持线程的操作系统中,纯种是进程中的一个实体,是系统实施调 度的独立单位。线程只拥有一些在运行中必不可少的资源,它与属于同一个进程的其他纯种共享该进程所拥有的资源。各纯种之间可以并发地运行。线程切换时只需保存和设置少量寄存器的内容这,而并不涉及存储器管理方面的操作,所以线程切换的开销远远小于进程的切换(进程状态的要引起资源转移及现场保护等问题)。同一个进程的多个线程共享同一个地址空间,这使得纯种之间同步和通信的实现也比较容易。

进程与线程的比较

进程和线程都是由操作系统所管理的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发笥。进程和线程的区别如下:

   简而言之,一个程序至少要有一个进程,一个进程至少要有一个线程。线程划分尺度小于进程,使得多线程程序的并发性高。

另外,进程在执行过程中拥有独立的内在单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

  线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

  从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理,以及资源分配。这就是进程和线程的重要区别。

多线程技术的优越性

1.快速的关联切换

由于操作系统级的进程独占自己的虚地址空间,调度进程时,系统必须交换地址空间,因而进程切换时间长。在同一程序内的多个线程共享同一地址空间,因而能使线程快速切换。例如,10个进程,每个进程10个线程的系统与100个进程、每个进程1个进程1个线程的系统相比,前者的运行速度要快于后者。

2.系统额外开销小

对多个进程的管理(创建、调度等)有比较大的系统开销。在需要动态创建新进程的应用中,比如在响应与每个客户的请求而建立一个新的服务进程的服务器应用程序中,这种开销比较显著。而对线程的管理虽然也会有系统开销,但比进程的小得多。

3.通信很容易实现

为了实现协作,进程或线程之间需要进行数据交换。对于自动共享同一地址空间的各线程来说,所有的全局数据都可以访问,因而不需要什么特殊手段就能自动实现数据共享。而进程之间的通信则要复杂得多。

4.线程个数比进程个数多得多

许多多任务操作系统限制用户进程总数,如不少UNIX版本的典型值为40-100,这对许多并发应用来说远远不够。在多线程系统中,虽存在线程总数限额,但个数多得多(OS/2支持4096个线程)

 

 

 

http://blog.csai.cn/user1/39172/archives/2007/20031.html

编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程

线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念。大部分操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执...
  • luoweifu
  • luoweifu
  • 2015年06月22日 20:05
  • 53246

进程、线程与多线程概念详解

一、概述 在windows中,每一个打开运行的应用程序或后台程序,比如运行中的QQ、谷歌浏览器、网易云音乐、资源管理器等都是一个进程。我们感觉这些程序是“同时”运行的,但实际上,一个处理器同一时刻只...
  • zhangliangzi
  • zhangliangzi
  • 2016年04月24日 21:33
  • 2314

线程 应用程序域 进程 比较区别

进程是个管理单元,管理着应用程序的多个线程,其中有个默认的主线程,其他线程都是从其他线程中派生出来的。线程一旦被创建,主线程是无法干涉它的。线程的销毁在.net中是通过抛出一个异常,来终止这个线程的。...
  • wl_ldy
  • wl_ldy
  • 2010年07月31日 14:17
  • 956

Linux C进程与多线程

进程和程序的区别进程和程序的区别可以理解为,进程是活动的程序,而程序是一个代码的集合。进程是加载到内存中的程序,而程序没有加载到内存中,之在磁盘上保存着。下图是进程的结构,而程序进包含代码段 +--...
  • viewsky11
  • viewsky11
  • 2016年11月15日 16:42
  • 624

c++的进程和线程【windows】

前几天搞定了C++的多线程编程,今天闲来无事小做总结! 【线程的概念】 为了了解线程的概念,我们必须先讨论一下进程的概念。   一个进程通常定义为程序的一个实例。在Win32中, 进...
  • u014511737
  • u014511737
  • 2015年07月13日 15:40
  • 1044

线程与进程的区别以及对多线程并发的理解

转自: http://blog.sina.com.cn/s/blog_12f5264ff0102v8eq.html http://blog.csdn.net/suxinpingtao51/ar...
  • z69183787
  • z69183787
  • 2016年10月24日 11:49
  • 6833

编程思想之多线程与多进程(4)——C++中的多线程

《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,《编程思想之多线程与多进程(2)——线程优先级与线程安全》一文讲了线程安全(各种...
  • luoweifu
  • luoweifu
  • 2015年07月10日 21:48
  • 17395

有关linux下多进程与多线程的区别总结

谈谈dpdk应用层包处理程序的多进程和多线程模型选择时的若干考虑 看到知乎上有个关于linux多进程、多线程的讨论:链接地址 自己项目里也对这个问题有过很多探讨和测试,所以正好开贴整理一下,题目...
  • benpaobagzb
  • benpaobagzb
  • 2016年01月08日 11:15
  • 2417

多任务、进程与线程

进程: 进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。操作系统执行的一个任务就是一个进程。当运行一个程序时,就启动了一个进程。比如,打开一个记...
  • SGZ_06_666666
  • SGZ_06_666666
  • 2016年12月08日 16:55
  • 367

多进程与多线程的优劣 与 共享内存的同步问题

通常会说: 进程之间的地址空间是独享的,而线程是共享进程的地址空间,线程的资源比进程小,创建线程比创建进程快,线程间切换快,线程间通信快,线程资源利用率好. 下面做个补充: 1,线程挂则可能...
  • u011570492
  • u011570492
  • 2016年12月03日 21:28
  • 516
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多线程与进程
举报原因:
原因补充:

(最多只允许输入30个字)