姓名:慕永利
班级:软件11-2班
学号:23号
日期:2013年11月1日
摘要
在操作系统中引入线程,能够减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
线程是进程的一个实体,是独立调度和分配的基本单位。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看作多个独立的应用,来实现进程的调度和管理以及资源分。
总而言之,线程是进程内的一个执行单元,也是进程内的可调度实体。
关键字:OS(操作系统),TCB(线程控制块),进程,线程
目录
1 引言 (4)
1.1 线程问题的引入 (4)
1.2 线程和进程的比较 (4)
2线程理论基础 (5)
2.1线程属性 (5)
2.2线程的状态 (5)
2.3线程的创建和终止 (6)
2.4线程之间的同步和通信 (6)
2.5线程的实现方式 (6)
3线程新技术(超线程技术) (6)
参考文献 (7)
1 引言
1.1线程问题的引入
在早期OS中一直以进程作为能拥有资源和独立运行的基本单位,现在可以有比进程更小的独立运行的基本单位线程。
可以用它来提高系统内程序并发执行的程度,从而进一步提高系统的吞吐量。
由于近年来多处理及系统得到迅猛发张,线程能比进程更好的提高程序的并发执行程度,充分地发挥多处理机的优越性,所以在多处理机OS中引入线程能够改善OS的性能。
1.2 线程和进程的比较
线程具有许多传统进程所具有的特性,所以又称为轻型进程或进程元,相应的把传统进程称为重型进程,传统进程相当于只有一个线程任务。
在引入了线程的OS中通常一个进程都拥有若干个线程,至少也有一个线程。
下面我们从调度性、并发性、系统开销和拥有资源等方面对线程和进程进行比较:(1)调度
在传统的操作系统中,作为拥有资源的基本单位和独立调度、分派
的基本单位都是进程。
而在引入线程的操作系统中,则把线程作为
调度和分派的基本单位,而进程作为资源拥有的基本单位。
把传统
进程的俩个属性分开,使线程基本上不拥有资源,这样线程就能轻
装前行,从而显著的提高系统的并发程度。
在同一进程中,线程的
切换不会引起进程的切换,但从一个进程中的线程切换到另一个进
程中的线程时,将会引起进程的切换。
(2)并发性
在引入线程的OS中,不仅进程之间可以并发执行,而且一个进程
的多个线程之间也可以并发执行,使得OS具有更好的并发性,从
而能更加有效的提高系统资源的利用率和系统的吞吐量。
(3)拥有资源
不论是传统的OS,还是引入了线程的OS,进程都可以拥有资源,
是系统中拥有资源的一个基本单位。
(4)系统开销
在创建或撤销进程时,系统都为之创建和回收进程控制块,分配和回收资源,如内存空间和IO设备等,操作系统所付出的开销明显大于
线程创建和撤销时的开销。
就切换而言,进程切换的开销高于线程。
此
外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的
实现方面线程比进程容易。
在一些OS中,线程的切换、同步、通信都
无需操作系内核的干预。
2线程理论基础
2.1线程属性
在多线程OS中,通常是在一个进程中包含多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。
线程具有下属特性:(1)轻型实体。
线程中的实体基本上不拥有系统资源,只是有一点是必不可少的、能保证其独立运行的资源,比如在每个线程中都应该具
有一个控制线程运行的线程控制块TCB,用于指示被执行指令序列的
程序计数器,保留局部变量、少数状态参数和返回地址等的一组寄存器
的堆栈。
(2)独立调度和分派的基本单位。
在多线程OS中,线程是独立运
行的基本单位,因而也是调度和分派的基本单位。
由于线程很轻,故线
程的切换非常迅速且开销小。
(3)可并发执行。
在一个进程中的多个线程之间可以并发执行。
甚
至允许在一个进程中的多个线程都能并发执行;同样,不同进程中的线
程也能并发执行。
(4)共享进程资源。
在一个进程中的各个线程都可以共享该进程所
拥有的资源,这首先表现在所有的线程都具有相同的地址空间。
这意味着线程可以访问该地址空间中的每个虚地址;此外,还可以访问进程所
拥有的已打开文件、定时器、信号量机构等。
2.2线程的状态
(1)状态参数:
○1寄存器状态,它包括程序计数器PC和堆栈指针中的内容。
○2堆栈,在堆栈中通常保存有局部变量和返回地址。
○3线程运行状态,用于描述线程正处于何种运行状态。
○4优先级,描述线程执行的优先程度。
○5线程专用寄存器,用于保存线程自己的局部变量拷贝。
○6信号屏蔽,及对某些信号加以屏蔽。
(2)线程运行状态
○1执行状态,表示线程正获得处理机运行。
○2就绪状态,指线程已具备了各种执行条件,获得CPU就可执行的状态。
○3阻塞状态,指线程在执行中因某件事而受阻,处于暂停执行时的状态。
2.3线程的创建和终止
在多线程的OS环境下,应用程序在启动时,通常仅有一个线程在执行,该线程被人们称为“初始化线程”。
它根据需要再去创建若干个线程。
在创建新线程时需要利用一个线程创建函数,并提供相应参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。
在线程创建完后,将返回一个线程标识符供以后使用。
如同进程一样,线程也具有生命期。
终止线程的方式有俩种:
○1在线程完成了自己的工作后自愿退出。
○2线程在运行中出现错误或由于某种原因而被其它线程强行终止。
2.4线程之间的同步和通信
为使系统中的多线程能有条不紊的运行,在系统中必须提供用于实现线程间同步和通信的机制。
为了支持不同频率的交互操作和不同程度的并发性,在多线程OS中通常提供多种同步机制,如互斥锁、条件变量、计数信号量以及多读、单写锁等。
2.5线程的实现方式
在不同的系统中线程实现的方式并不完全相同。
以下列举几种:
○1内核支持线程
○2用户级线程
○3组合方式
3线程新技术(超线程技术)
超线程技术的原理很简单,以前的单核心处理器,在同一时间内只可以处理一项工作 (线程,Thread),如果要处理一项以上的工作时,以前的单核心处理器是不可行的,所以英特尔就开发了超线程技术,以一个单核心的处理器,去模拟出双核心的环境,但这并非能够把处理器的效能提升双倍,原因在于实体的核心始终只有一个,而效能有约百分之至二十至三十增长。
在奔腾四时代INTEL
就已经引入了人超线程技术,而特意的加长的流水线反而成了HT技术的累赘。
所以推出奔腾D及后来的酷睿2系列时,英特尔并没有加进超线程技术,因为奔腾D及酷睿2处理器已支援双核心处理器的运作,而且INTEL也在默默的钻研指令预测技术减少流水线。
在酷睿2后期英特尔推出了酷睿2四核心处理器,因为有用户反映双核不足以应付手头的工作,再到后来,英特尔酷睿i7出现了,他带着 Intel 全新的超线程技术,很短的流水线这得益于他的指令分支预测技术,拥有着奔腾四无法企及的效率,它是四核心处理器加进了超线程技术,处理器同时支持处理八个线程的工作,在这种环境下电脑可挂很多应用程序,支持多线程的应用,因此即使N多程序同时运行,电脑也没有运行减慢的感觉,操作起来依然是流畅如行云流水。
其实超线程技术拥有最高的功耗效能比,加入超线程技术所增加的晶体管数目及功耗并不多,但却相比增加一颗完整的核心更具性价比,加上酷睿i7微架构拥有高带宽及高容量三级高速缓存的优势,更能将超线程技术的功效发挥到极致。
要打开超线程技术,很简单,一般而言,在BIOS内就可以设定超线程技术的启动与否。
当设定完成后,进入Windows的“我的电脑”,查看处理器,就能看出八个线程的工作情况。
加入超线程技术的英特尔酷睿i7处理器在多任务应用时最能发挥它的潜能,它可以同时处理N个的游戏及多媒体软件,而不会出现慢式死机。
参考文献
计算机操作系统(第三版),多核多线程技术。