- 1、本文档共172页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.7.3线程的状态和线程控制块 1.线程运行的三个状态:执行、就绪、阻塞 2.线程控制块TCB 1)线程标识符2)寄存器3)线程状态4)优先级 5)线程专有存储区6)信号屏蔽7)堆栈指针 3.多线程OS中的进程属性 1)进程是拥有资源的基本单位 2)多个线程可并发执行 3)进程不是可执行的实体 2.8 线程的实现方式 2.8.1线程的实现方式 1.内核支持线程KST 无论是用户进程中的线程,还是系统进程中的线程,其创建、撤消和切换等都是依靠内核在内核空间实现的。内核根据该控制块TCB而感知某线程的存在,并对其加以控制。 这种线程实现方式优点: (1) 在多处理器系统中,内核能够同时调度同一进程中多个线程并行执行; (2) 如果进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理器运行,也可以运行其它进程中的线程; (3) 内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小; (4) 内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。 内核支持线程的主要缺点是:对于用户的线程切换而言,其模式切换的开销较大,需要从用户态转到内核态进行。 2.用户级线程ULT 线程仅存在于用户空间中其创建、撤消、同步与通信等功能,都无须利用系统调用来实现。线程是与内核无关,内核完全不知道用户级线程的存在。 优点: (1) 线程切换不需要转换到内核空间节省了模式切换的开销。 (2) 调度算法可以是进程专用的。 (3) 用户级线程的实现与操作系统平台无关,因此,用户级线程甚至可以在不支持线程机制的操作系统平台上实现。 缺点: (1) 系统调用的阻塞问题。进程阻塞,进程内的所有线程都会被阻塞。 (2) 多线程应用不能利用多处理机进行并行执行。 3.组合方式ULT/KST 内核支持多KST线程的建立、调度和管理,同时,也允许用户应用程序建立、调度和管理用户级线程。 2.8.2 线程的实现 1.内核支持线程的实现 系统在创建一个新进程时,便分配一个任务数据区PTDA(Per Task Data Area),其中包括若干个线程控制块TCB空间,如图2-15所示。TCB中的信息保存在内核空间中。 图 2-15 任务数据区空间 内核支持线程的创建、 撤消均与进程的相类似。在有的系统中为了减少创建和撤消一个线程时的开销,在撤消一个线程时,并不立即回收该线程的资源和TCB,当以后再要创建一个新线程时,便可直接利用已被撤消但仍保持有资源和TCB的线程作为新线程。 内核支持线程的调度和切换与进程的调度和切换十分相似,也分抢占式方式和非抢占方式两种。 2.用户级线程的实现 用户级线程是在用户空间实现的,运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。 1) 运行时系统(Runtime System) 所谓“运行时系统”,即线程库是用于管理和控制线程的函数(过程)的集合,包括用于创建和撤消线程的函数、 线程同步和通信的函数以及实现线程调度的函数等。是用户级线程与内核之间的接口。 在传统的OS中,进程在切换时必须先由用户态转为核心态,再由核心来执行切换任务; 而用户级线程在切换时则不需转入核心态,而是由运行时系统中的线程切换过程来执行切换任务。 当线程需要系统资源时,是将该要求传送给运行时系统,由后者通过相应的系统调用来获得系统资源的。 2) 内核控制线程/轻型进程LWP LWP由用户进程调用函数创建,内核识别,可通过系统调用来获得内核提供的服务。 当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。 这种线程实现方式实质上是组合方式。 多个LWP做成一个缓冲池,称为“线程池”。用户进程中的任一用户线程都可以连接到LWP池中的任何一个LWP上。 用户级线程可通过LWP来访问内核,但内核所看到的总是多个LWP而看不到用户级线程。即LWP实现了在内核与用户级线程之间的隔离,从而使用户级线程与内核无关。 用户级线程 LWP 内核级线程 图 2-16 利用轻型进程作为中间系统 当用户级线程要通信时需借助于LWP,而且每个要通信的用户级线程都需要一个LWP。 内核级线程阻塞,则与之相连接的多个LWP也将阻塞,进而使连接到LWP上的用户级线程也被阻塞。如果进程中只包含了一个LWP,此时进程也应阻塞。如果在一个进程中含有多个LWP,则当一个LWP阻塞时,进程中的另一个LWP可继续执行。 3.用户级线程与内核控制线程的连接 1) 一对一模型 一个内核控制线程一个用户线程。 该模型
文档评论(0)