第3章 线程机制_第1页
第3章 线程机制_第2页
第3章 线程机制_第3页
第3章 线程机制_第4页
第3章 线程机制_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

操作系统原理PrinciplesofOperatingSystem,主讲:孔宪君,2,第3章线程机制,3.1.1任务的概念所谓的任务是指一个具有开始时间和完成时间的操作,任务是系统的基本工作单元。3.1.2多任务处理和多重处理多任务是指在同一时间内同一系统中同时运行多个进程,这里包含多重处理和多进程并发执行。多重处理是针对多机系统定义的。多重处理是多任务处理在多机系统中的一个特例,多重处理是多任务处理的子集。,3,3.1.3多任务机制与单任务机制的比较传统的应用程序多采用单任务顺序结构设计。多任务应用程序是将整个应用程序分成多个任务,每个任务完成一种特定的功能。3.1.4会话在OS/2操作系统中通用的进程概念被分成了三个独立类型的实体,既会话、进程和线程。一个会话是一组与用户接口(键盘、显示器、鼠标)相关联的一个或多个进程。会话代表了一个交互式的用户应用程序,这个概念使得PC用户可以打开一个以上的应用程序,在屏幕上显示一个或更多的窗口。,4,3.2线程的概念,3.2.1为什么引入线程传统进程有两个属性,就是操作系统进行资源分配的基本单位和处理机调度的基本单位。一是与资源的所有权有关,另一个是与执行有关。操作系统中进程的数量不宜过多,进程切换的频率不宜过高,但这也就限制了并发程度的进一步提高。为解决这个问题,把进程的两个属性分离,即作为程序的执行单位,不同时作为独立分配资源的单位。对拥有资源的单位,不对之进行频繁切换。这就需要引入线程的概念。,5,3.2.2线程的定义,线程是指进程内部的一个可独立执行的实体。线程是具有最少开销的程序执行实体。多线程允许在同一进程中并发执行多个指令流,而每一个指令流就是线程。由于同一进程内各线程都可访问整个进程的所有资源,资源的拥有者还是进程或任务。进程还是一个正在执行的程序的概念,进程是指一个或多个线程和相关系统资源的集合。,系统资源包含数据和代码的存储器空间、打开的文件和设备等。这样传统的进程概念可以理解为只有一个控制线程的进程。在引入线程的操作系统中,从物理上看,线程是处理机执行的基本单位。从逻辑上看,线程是指进程内部的一个可独立执行的实体。线程拥有少量必不可少的资源,它具有程序计数器(PC)与保持局部变量与返回地址痕迹的堆栈等最少状态参数来控制它的执行。,7,3.2.3进程与线程的关系,从以下几个角度对进程和线程进行比较:资源和调度方面。地址空间资源。不同进程的地址空间是相互独立的,而同一进程的各线程共享同一地址空间。通信关系。并发性。系统开销。,9,3.2.4线程的优点,线程具有如下优点:线程是具有最少开销的程序执行实体。撤消线程比撤消进程花费的时间短。线程间切换比进程间切换花费的时间短。并且同一进程线程之间的切换是在同一地址空间内进行的,因此切换开销更小。进程中的线程可以访问该进程的所有资源。这些资源包括:程序指令,全局数据,信号处理程序,工作环境信息(当前工作目录、用户ID和组ID等)。同时,每个线程有自己的一些专用资源:寄存器组,线程堆栈(存放线程自己的局部变量和返回地址),优先级,线程ID,信号屏蔽掩码,全局错误代码errno等。,10,多线程可以提高通信效率。由于同一进程内线程间共享内存和文件资源,多线程可以直接进行通信,不通过操作系统内核。一个线程可以与其他线程并发执行,甚至在一个任务中的所有线程都可并发执行。多线程适合多机系统。例如:LAN中的一个文件服务器,在一段时间内需要处理几个文件请求。因此有效的方法是为每一个请求创建一个线程。在一个多CPU的机器上,多个线程可以同时在不同的CPU上运行。,3.2.5线程的状态,创建线程。当产生一个新进程时,同时也为该进程产生了一个线程,随后,进程中的线程可以在同一个进程中产生另一个线程,并为新线程提供指令指针和参数,同时还提供新线程自己的寄存器上下文和栈空间,新线程被放置在就绪队列中。线程的阻塞。与进程一样,当线程等待一个事件时,它将阻塞(保存用户寄存器、程序计数器和栈指针),此时处理机转而执行另一个就绪线程。线程的唤醒。当线程等待的一个事件发生时,该线程由阻塞状态转变为就绪状态,被插入就绪队列中。线程的结束。当线程执行任务结束后,系统将释放它所占用的寄存器上下文和栈空间。,12,3.3线程类型,3.3.1用户线程用户线程仅存在于用户空间中,不依赖于操作系统内核,在用户层通过线程库来实现。线程库提供对线程创建、调度和管理的支持而无需内核支持。由于操作系统内核不了解用户线程的存在,所以一个用户线程在进入系统调用后阻塞,则整个进程都必须等待,即使还有其他线程可以在应用程序内运行。CPU时间片分配给进程,当进程内有多个线程时,每个线程的执行时间相对较少。,13,3.3.2内核线程,内核线程由操作系统内核直接支持的,线程创建、调度和管理都是在内核中进行的。内核线程的创建和管理通常要慢于用户线程的创建和管理。一个内核线程在进入系统调用后阻塞,该进程的其他线程都不必等待。多CPU环境下,内核能在不同CPU上调度线程,内核线程可以充分利用多机系统的功能。,14,3.3.3用户线程的优点,进程不需要为了用户线程管理而切换到内核模式,这节省了在两种模式间进行切换的开销。线程库提供对用户线程的调度,可以采取灵活的调度算法,调度算法可以适应于应用程序,而不会扰乱底层的操作系统调度程序。任何操作系统不需要对底层内核进行修改以支持用户线程。在一个进程中多个用户线程之间通信效率高。,15,3.3.4内核线程和用户线程的比较,内核线程是CPU调度的基本单位。调度可以为一个进程中的多个内核线程分配多个CPU,使多个内核线程达到并行,提高了程序的执行速度和系统效率;如果进程中的一个内核线程被阻塞,内核可以调度同一个进程中的另一个内核线程;如果进程中的一个用户线程阻塞,则整个进程都必须等待,即使还有其他用户线程可以在应用程序内运行。系统调用。如果采用轮转调度算法,每个进程轮流执行一个时间片。进程P1中包含了10个用户线程,另一个进程P2中含有1个用户线程。这样一来,进程P2中线程的执行时间将是进程P1中各线程执行时间的10倍;如果系统中设置的是内核线程,情况就不一样了,它的调度是以内核线程为单位进行的,这样,进程P1可以获得的CPU时间是进程P2的10倍。,16,3.4多线程模型,3.4.1进程模型和多线程模型,17,3.4.2进程模型和多线程模型的比较,18,3.4.3用户线程的多对一模型,由于内核不知道用户线程的活动,多对一模型将一个或多个用户线程映射到其隶属的进程上。线程管理是在用户空间进行的,因而效率比较高如果一个线程执行系统调用而阻塞,那么整个进程就会阻塞。某一时刻同一个应用程序中只有一个线程能访问内核,多个线程不能并行运行在多CPU上。,19,3.4.4内核线程的一对一模型,内核线程应用程序一般采用一对一模型实现,将每个用户空间的线程都映射到一个内核线程。一个线程执行系统调用被阻塞时,能允许另一个线程继续执行,所以它提供了比多对一模型更好的并发功能。它也允许多个线程并行地运行在多机系统上。这种模型的惟一缺点是创建一个用户线程就需要创建一个相应的内核线程。,20,3.4.5组合多对多模型,在组合多对多模型统中,同时提供内核线程控制机制和用户线程库,所以可很好地把内核线程和用户线程的优点结合起来。组合多对多模型多路复用了许多用户线程到同样数量或更小数量的内核线程上。内核线程的数量可能与特定应用程序或特定机器有关。,21,3.4.6现代操作系统的特征,许多新的设计要素引人到现代操作系统的新版本中,使操作系统产生了本质性的变化。现代操作系统大致可以分为以下几类:1.微内核结构2.多线程3.多机系统比单机结构具有以下优势:性能可用性增量扩展按比例换算4.分布式操作系统5.面向对象设计,22,3.5多线程程序设计,3.5.1多线程技术优点使用多线程(multithreaded)技术编程具有如下四类主要优点:用户交互能力强,及时响应。资源共享效率高。系统开销少。适合多机系统。,23,3.5.2线程池机制线程池的主要设计思想是在进程开始时创建一定数量的线程,并放入到线程池中等待工作。当服务器收到请求时,它会唤醒池中的一个可用线程,并将要处理的请求传递给它。当线程完成了它的服务,它会返回到池中再等待工作。如果池中没有可用的线程,服务器收到的客户请求暂时等待。使用线程池具有如下优点:使用现有线程处理请求要比等待创建新的线程要快。线程池限制了在任何时候可存

温馨提示

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

评论

0/150

提交评论