多核和单核中多线程及单线程的特点

来源:互联网 发布:手机淘宝如何上架宝贝 编辑:程序博客网 时间:2024/05/26 02:53

关键词:单线程;多线程;线程同步;优先级  
“Andy Grove giveth, and Bill Gates taketh away”是流行在业界的一句谚语,它描述了一个有趣的现象:无论处理器能够提供多高的性能,软件都能够将它们统统“消化”掉。在过去几十年里,被处理器技术领域奉为金科玉律的“摩尔定律”一直处于雷打不动的地位。但就在近两年,传统处理器体系结构技术面临着性能的瓶颈。人们逐渐发现过去惯常的技术方案已经不能够在处理器设计领域获得更高的收益。处理器的设计者们开始思考新的技术架构,试图推动处理器的性能能够遵照“摩尔定律”得到继续提高。处理器的硬件架构作为计算机系统中最核心的技术,它的变革势必会导致业界的一系列动荡。特别是软件开发者们就首当其冲地迎来了新的契机与挑战。为了能够享受到新的处理器技术带来的这场“盛宴”,就必须迎接一场具有颠覆性的革命。 
 
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。  
进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。  
  线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈),进程并不真正得运行程序,他只是分配资源得单位,只有线程才是真正得运行体 ,所以一个进程最少有一个主线程。 
 
进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。 
  
    线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。   
传统的应用程序都是单线程的,即在程序运行期间,由单个线程独占CPU的控制权,负责执行所用任务。在这种情况下,程序在执行一些比较费时的任务时,就无法及时响应用户的操作影响了应用程序的实时性能。在监控系统,特别是远程监控系统中,应用程序往往不但要及时把监控对象的最新信息反馈给监视客户(通过图形显示),还要处理本地机与远程机之间的通信以及対控制对象的实时控制等任务,这时,仅仅由单个线程来完成所用任务,显然无法满足监控系统的实时性要求。在DOS系统下,这些工作可以由中断来完成。而在Windows NT下,中断机制対用户是不透明的。为此,可引进多线程机制,主线程专门负责消息的响应,使程序能够响应命令和其他事件。辅助线程可以用于完成其他比较费时的工作,如通信和后台打印等,这样就不至于影响主线程的运行。 
在新一代处理器体系结构的研究中,各种新技术层出不穷。在当前逐渐趋于成熟的技术当中,有三项技术已经被应用于新一代处理器当中。它们分别是:单核多线程技术、单片多核(CMP)技术和Cache技术。  
单核多线程技术是指在单个处理器核上同时运行两个或更多个线程。目前已经应用在具有超线程结构的奔腾4处理器当中。  
CMP技术是指在单个芯片内集成两个或更多个真正的处理器核,不同的线程同时运行在不同的处理器核上。采用CMP的芯片有很多,比如Sparc和PowerPC都已经有了产品,Intel和AMD也在今年推出了各自的多核芯片。  
Cache技术作为处理器关键技术中的“常青树”,仍旧会有长足的发展,这主要是因为Cache不命中导致的访存延迟代价实在太高。未来Cache技术的发展方向主要体现在容量的增加上。  
过去所有在单核处理器上开发的串行应用软件仍旧可以在新一代处理器体系结构上运行。但仅这样不能充分利用新一代处理器架构带来的性能优势,是一种“暴殄天物”的做法。可以毫不夸张地说,新一代处理器体系结构给软件产业带来的将是一场革命:它要求软件设计者们务必摒弃之前传统的串行编程方法,去掌握多线程并行的编程理念。 
多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。  
    多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。
0 0
原创粉丝点击