三十讲第十讲内容概要_第1页
三十讲第十讲内容概要_第2页
三十讲第十讲内容概要_第3页
三十讲第十讲内容概要_第4页
三十讲第十讲内容概要_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——三十讲第十讲内容概要2.7线程的根本概念,2.7.1线程的引入1.进程的两个根本属性构成进程并发执行的根基:

独立的资源拥有者:

给每个进程调配一虚拟地址空间,保存进程映像操纵一些资源(内存,文件,I/O设备)独立调度和分派的根本单位:

进程是一个独立调度的执行轨迹2.程序并发执行所需付出的时空开销创造进程、撤消进程、进程切换系统完成上述操作时既要重新调度,又要反复的调配资源,时空开销太大,限制了并发度的进一步提高。,3.线程——作为调度和分派的根本单位从不同的角度启程可以有多种理解:★线程是进程内的一个可执行单元。

★进程内的一个线程是进程内的一个可调度实体。

★线程是进程中相对独立的一个操纵流序列。

★线程是进程内可以并发执行的一个根本单位。

综上所述可定义为:线程是进程内的一个处理机的根本调度单位,或进程内的一个执行体;

一个进程可含有多个线程,它们可以并发执行,共享进程的全部资源。,2.7.2线程与进程的对比(1)调度的根本单位同一进程的多线程间调度时,不引起进程的切换不同进程的线程间调度,需要进程切换(2)并发性一个进程的多个线程之间可并发执行(3)拥有资源线程自己不拥有系统资源,只拥有一点儿在运行中必不成少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。,(4)独立性同一进程中的不同线程之间的独立性比不同进程间的独立性低的多。

(5)系统开销线程:系统仅为其保存少量寄放器内容进程:整个当前CPU环境,资源清单等(6)支持多处理机系统传统进程,即单线程进程一个进程的多个线程可调配到多个处理机上,,,引入线程的好处:

占用较少的系统资源,线程的创造、撤销和切换花费的时空间开销都小。

同一进程内的线程共享内存和文件,它们之间相互通信无须调用内核,效率高。

提高应用程序的性能,如:web页面的多幅图像被同时传送。

使多处理机效率更高,多个线程可以同时在不同的处理器上运行,如:矩阵乘法多线程进程中,当一个线程因I/O阻塞时,可以切换到同一进程的另一个线程,进程不被阻塞,例子:,LAN中的文件服务器文件服务进程在一段时间内需要处理几个文件苦求,假设仍采用传统的单线程的进程来执行该任务,那么每次只能为一个用户服务。

但假设在一个进程中可以设置多个线程,将其中一个特意用于监听用户苦求,每当有一个用户苦求时,便马上创造一个线程来处理该用户的苦求。

因此有效的方法是:为每一个苦求创造一个线程。,1.线程的三种根本状态:

①执行状态,表示线程正获得处理机而运行;

②就绪状态,指线程已具备了各种执行条件,一旦获得CPU便可执行的状态;

③阻塞状态,指线程在执行中因某事情而受阻,处于暂停执行时的状态。例如,当一个线程执行从键盘读入数据的系统调用时,该线程就被阻塞。,2.7.3线程的状态,,PCB,,多线程进程模型(其中TCB线程操纵块),各线程共享地址空间,TCB,,TCB,,TCB,2.线程操纵块进程不再是一个可执行的实体,它仅是系统资源调配的根本单位,进程可包括多个线程(至少包括一个),进程为这些线程供给资源和运行环境,全体线程都属于某特定进程,线程是独立运行的根本单位。,线程操纵块通常有这样几项:

①线程标识符②一组寄放器状态,它包括程序计数器PC和堆栈指针中的内容;

③线程状态,用于描述线程正处于何种状态;

④优先级,描述线程执行的优先程度;

⑤线程专有存储器,用于保存线程自己的局部变量拷贝;

⑥信号屏蔽,即对某些信号加以屏蔽;

⑦堆栈,在堆栈中通常保存有局部变量和返回地址。,3.多线程OS中的进程属性,在多线程OS中,进程是作为拥有系统资源的根本单位,通常的进程都包含多个线程并为它们供给资源,但此时的进程就不再作为一个执行的实体。多线程OS中的进程有以下属性:

(1)作为系统资源调配的单位。

(2)多个线程可并发执行。

(3)进程不是一个可执行的实体。,2.8.1线程的实现方式,内核支持线程调度以线程为单位用户级线程调度以进程为单位两者组合方法,2.8线程的实现,在OS中的全体进程,无论是系统进程还是用户进程,都是在操作系统内核的支持下运行的,是与内核精细相关的。

而内核支持线程KST同样也是在内核的支持下运行的,它们的创造、阻塞、撤消和切换等,也都是在内核空间实现的。为了对内核线程举行操纵和管理,在内核空间也为每一个内核线程设置了一个线程操纵块,内核根据该操纵块而感知某线程的存在,并对其加以操纵。,1.内核支持线程(KST),内核支持线程的优点:,(1)对多处理器,内核可以同时调度同一进程的多个线程,多个线程能同时运行于多个处理器上。

(2)阻塞是在线程一级完成的。假设进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理器运行,也可以运行其它进程中的线程;

(3)内核支持线程具有很小的数据布局和堆栈,线程的切换对比快,切换开销小;

(4)内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。,内核支持线程的缺点:,对于用户的线程切换,需要从用户态转到核心态。用户进程的线程在用户态运行,而线程的调度和管理在内核实现的。在同一进程内的线程切换要调用内核,导致速度下降。,2.用户级线程ULT(UserLevelThreads),用户级线程是在用户空间中实现的。对线程的创造、撤消、同步与通信等功能,都无需内核的支持,即用户级线程是与内核无关的。

在一个系统中的用户级线程的数目可以达成数百个至数千个。由于这些线程的操纵块都是设置在用户空间,而线程所执行的操作也无需内核的扶助,因而内核完全不知道用户级线程的存在。,说明:对于设置了用户级线程的系统,其调度依旧是以进程为单位的。,使用用户级线程方式有大量优点:

(1)线程切换不需要转换到内核空间。

(2)调度算法可以是进程专用的。

(3)用户级线程的实现与OS平台无关,由于对于线程管理的代码是属于用户程序的一片面,全体的应用程序都可以对之举行共享。,而用户级线程方式的主要缺点那么在于:(以进程为单位调度,可以理解以下缺点)(1)系统调用的阻塞问题。在基于进程机制的OS中,大多数系统调用将使进程阻塞,因此,当线程执行一个系统调用时,不仅该线程被阻塞,而且,进程内的全体线程会被阻塞。而在内核支持线程方式中,那么进程中的其它线程依旧可以运行。,(2)在单纯的用户级线程实现方式中,多线程应用不能利用多处理机举行多重处理的优点,内核每次调配给一个进程的仅有一个CPU,因此,进程中仅有一个线程能执行,在该线程放弃CPU之前,其它线程只能等待。,有些OS把用户级线程和内核支持线程两种方式举行组合,供给了组合方式ULT/KST线程。在组合方式线程系统中,内核支持多个内核支持线程的建立、调度和管理,同时,也允许用户应用程序建立、调度和管理用户级线程。,3.组合方式,图2-18多线程模型,图2-18多线程模型,将用户线程映射到一个内核操纵线程。用户线程,运行在进程的用户空间。当用户线程需要访问内核时,才将其映射到一个内核操纵线程。每次只允许一个线程映射。

优点:开销小。

缺点:一个线程访问内核时阻塞,整个进程阻塞,图2-18多线程模型,将每一个用户线程映射到一个内核操纵线程。

优点:一个线程阻塞,允许调度另一个线程运行。

缺点:每创造一个用户线程,就要创造一个内核操纵线程,开销大。,图2-18多线程模型,将大量用户线程映射到同样数量或更少数量的内核操纵线程上。,1.内核支持线程的实现(以线程为单位调度),2.8.2线程的实现,在仅设置了内核支持线程的OS中,一种可能的线程操纵方法是,系统在创造一个新进程时,便为它调配一个任务数据区PTDA(PerTaskDataArea),其中包括若干个线程操纵块TCB空间。

线程操纵块被保存在内核空间中。,2.用户级线程的实现(以进程为单位调度)1)运行时系统(管理和调度线程的函数库)所谓“运行时系统”,实质上是用于管理和操纵线程的函数(过程)的集合。

其中包括:用于创造和撤消线程的函数、线程同步和通信的函数、实现线程调度的函数等。

正由于有这些函数,才能使用户级线程与内核无关。运行时系统中的全体函数都驻留在用户空间,并作为用户级线程与内核之间的接口。,优点:用户级线程切换时不转入核心态,操作简朴速度快;

调度是应用程序特定的:可以选择最好的算法缺点:用户级线程调用系统调用时,内核把它看为整个进程的行为,整个进程(含全体线程)将被阻塞。

内核只将处理器调配进程,同一进程中的两个线程不能同时运行于两个处理器上。,2)内核操纵线程(组合方式)这种线程又称为轻型进程LWP(LightWeightProcess)。每一个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据布局(如TCB),其中包括线程标识符、优先级、状态,另外还有栈和局部存储区等。LWP也可以共享进程所拥有的资源。,LWP可通过系统调用来获得内核供给的服务,这样,当一个用户级线程运行时,只须将它连接到一个LWP上,此时它便具有了内核支持线程的全体属性。这种线程实现方式就是组合方式。,用户级线程在使用系统调用时(如文件读写),需要“捆绑(bound)”在一个LWP上。

永久捆绑:一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外临时捆绑:从LWP池中临时调配一个未被占用的LWP在使用系统调用时,假设全体LWP已被其他用户级线程所占用(捆绑),那么该线程阻塞直到有可用的LWP--例如6个用户级线程,而LWP池中有4个LWP假设LWP执行系统调用时阻塞(如read()调用),那么当前捆绑在LWP上的用户级线程也阻塞。,2.8.3线程的创造和终止(1)创造线程(派生)在多线程OS环境下,当创造一个新的进程时,也创造一个新的线程,该线程被人们称为“初始化线程”。它可根据需要再去创造本进程中的若干个线程。,在创造新线程时,需要利用一个线程创造函数(或系统调用),并供给相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程创造函数执行完后,将返回一个线程标识符供以后使用。,(2)终止线程可以正常终止自己,也可能某个线程执行错误,由其它线程强行终止。终止线程操作主要负责释放线程占有的寄放器和栈,终止线程的方式有两种:一种是在线程完成了自己的工作后自愿退出;

另一种是线程在运行中展现错误或由于某种理由而被其它线程强行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论