正在加载图片...
管理系统如 Informix中,所实现的是用户级线程;而另一些系统(如 Macintosh和0s/2)所 实现的是内核支持线程:还有一些系统如 Solaris,则同时实现了这两种不同类型的线程 (1)用户级线程。用户级线程仅存在于用户空间中,而与内核无关。就内核而言,它只是管 理常规的进程-单线程进程,而感知不到用户级线程的存在。每个线程的控制块都设置在用户 空间中,所有对线程的操作也在用户空间中由线程库中的函数(过程)完成,而无需内核的帮 助。用户级线程的优点是不需要得到内核的支持:而且,线程的切换无需陷入内核,故切换开销 小,速度非常快。另外,线程库对用户线程的调度算法与os的调度算法无关,因此,线程库可提 供多种调度算法供应用程序选择使用。但在纯用户级线程的系统中,对应用程序来讲,一个线 程的阻塞将导致整个进程中所有线程的阻塞,并且无法享用多处理机系统中多个处理器带来 的好处。 (2)内核支持线程。内核支持线程是在核心空间实现的。内核为每个线程在核心空间中设 置了一个线程控制块,用来登记该线程的线程标识符、寄存器值、状态、优先级筹信息。所布 对线程的操作,如创建、撤消和切换等,都是通过系统功能调用由内核中的相应处理程序完成 的。内核支持线程克服了用户级线程的两个缺点:首先内核可以把同一个进程中的多个线程调 度到多个处理器中:其次,如果进程中的一个线程被阻塞,内核可以调度同二个进程中的另 个线程。它的另一个优点是内核本身也可以使用多线程的方式来实现。它的主要缺点是,即使 CPU在同一个进程的多个线程之间切换,也需要陷入内核,因此,其速度和效率不如用户级线 程 (3)用户级线程和核心级线程的结合。为了同时获得用户级线程和内核支持线程的便利 某些系统(如 Salads)同时提供了这两种类型的线程。在 Solaris中除了提供内核支持线程 用户级线程这两种线程外,还在它们之间定义了一种轻型进程LWP。其中,内核支持线程和LWP 是内核实现的,而用户级线程是由用户地址空间中的线程库实现的。内核调度和分派的基本单 位是内核支持线程,而内核提供给用户的却是LWP,即每个用户进程都可拥有一个或多个LWP LWP可以看成是用户级线程与内核支持线程之间的桥梁,每个LWP都与一个内核支持线程对应, 它可将一个或多个用户级线程映射到一个内核线程。但每个内核支持的线程并不一定对应于 某个LWP,如那些为0S本身建立的内核支持线程便没有对应的LWP。通常,程序员可不考虑LWP, 而直接使用线程库编程,此时一个用户进程只对应于一个LWP,而且可获得用户级线程的所有 便利。但如果他需要优化程序的性能、获得物理上的并行,则可将自己的用户级线程连接到多 个LWP上,此时,被连接到LWP上的线程便具有了内核支持线程的所有属性 3.2重点难点学习提示 由于进程是0S中最重要的基本概念,因而本章也就成为全书中最重要的一章。读者应对 以下几个重点、难点问题进行深入的学习,切实掌握好进程和进程同步的基本概念 3.2.1进程的基本概念 进程既是os中的一个重要概念,又是系统进行资源分配和独立运行的基本单位。学习 os,首先必须理解和掌握好进程的概念,为此,应认真学习和掌握下述几个方面的内容 (1)为什么要引入进程。引入进程是为了使内存中的多道程序能够正确地并发执行。在学 习时应清楚地理解为什么程序(在未为之建立进程之前)不能与其他程序并发执行,而由PCB、 程序段和数据段三部分组成的进程实体却能与其他进程一起并发执行。 (2)进程具有哪些基本特征。进程具有动态性、并发性、独立性、异步性和结构特征。在 学习时应较好地理解每个特征的含义和形成原因,并且要特别注意比较进程和程序这两个概 念的异同之处。 (3)进程有哪些基本状态。进程具有就绪、执行和阻塞三种基本状态。在学习时必须了解 在一个进程的生命周期中,它是如何随着自身的执行和外界条件的变化不断地在各种状态之管理系统如 Informix 中,所实现的是用户级线程;而另一些系统(如 Macintosh 和 OS/2)所 实现的是内核支持线程;还有一些系统如 Soloris,则同时实现了这两种不同类型的线程。 (1)用户级线程。用户级线程仅存在于用户空间中,而与内核无关。就内核而言,它只是管 理常规的进程-单线程进程,而感知不到用户级线程的存在。每个线程的控制块都设置在用户 空间中,所有对线程的操作也在用户空间中由线程库中的函数(过程)完成,而无需内核的帮 助。用户级线程的优点是不需要得到内核的支持:而且,线程的切换无需陷入内核,故切换开销 小,速度非常快。另外,线程库对用户线程的调度算法与 os 的调度算法无关,因此,线程库可提 供多种调度算法供应用程序选择使用。但在纯用户级线程的系统中,对应用程序来讲,一个线 程的阻塞将导致整个进程中所有线程的阻塞,并且无法享用多处理机系统中多个处理器带来 的好处。 (2)内核支持线程。内核支持线程是在核心空间实现的。内核为每个线程在核心空间中设 置了一个线程控制块,用来登记该线程的线程标识符、寄存器值、状态、优先级筹信息。所布 对线程的操作,如创建、撤消和切换等,都是通过系统功能调用由内核中的相应处理程序完成 的。内核支持线程克服了用户级线程的两个缺点:首先内核可以把同一个进程中的多个线程调 度到多个处理器中:其次,如果进程中的一个线程被阻塞,内核可以调度同二个进程中的另一 个线程。它的另一个优点是内核本身也可以使用多线程的方式来实现。它的主要缺点是,即使 CPU 在同一个进程的多个线程之间切换,也需要陷入内核,因此,其速度和效率不如用户级线 程。 (3)用户级线程和核心级线程的结合。为了同时获得用户级线程和内核支持线程的便利, 某些系统(如 Solads)同时提供了这两种类型的线程。在 Solaris 中除了提供内核支持线程、 用户级线程这两种线程外,还在它们之间定义了一种轻型进程 LWP。其中,内核支持线程和 LWP 是内核实现的,而用户级线程是由用户地址空间中的线程库实现的。内核调度和分派的基本单 位是内核支持线程,而内核提供给用户的却是 LWP,即每个用户进程都可拥有一个或多个 LWP。 LWP可以看成是用户级线程与内核支持线程之间的桥梁,每个LWP都与一个内核支持线程对应, 它可将一个或多个用户级线程映射到一个内核线程。但每个内核支持的线程并不一定对应于 某个 LWP,如那些为 OS 本身建立的内核支持线程便没有对应的 LWP。通常,程序员可不考虑 LWP, 而直接使用线程库编程,此时一个用户进程只对应于一个 LWP,而且可获得用户级线程的所有 便利。但如果他需要优化程序的性能、获得物理上的并行,则可将自己的用户级线程连接到多 个 LWP 上,此时,被连接到 LWP 上的线程便具有了内核支持线程的所有属性。 3.2 重点难点学习提示 由于进程是 OS 中最重要的基本概念,因而本章也就成为全书中最重要的一章。读者应对 以下几个重点、难点问题进行深入的学习,切实掌握好进程和进程同步的基本概念。 3.2.1 进程的基本概念 进程既是 os 中的一个重要概念,又是系统进行资源分配和独立运行的基本单位。学习 os,首先必须理解和掌握好进程的概念,为此,应认真学习和掌握下述几个方面的内容: (1)为什么要引入进程。引入进程是为了使内存中的多道程序能够正确地并发执行。在学 习时应清楚地理解为什么程序(在未为之建立进程之前)不能与其他程序并发执行,而由 PCB、 程序段和数据段三部分组成的进程实体却能与其他进程一起并发执行。 (2)进程具有哪些基本特征。进程具有动态性、并发性、独立性、异步性和结构特征。在 学习时应较好地理解每个特征的含义和形成原因,并且要特别注意比较进程和程序这两个概 念的异同之处。 (3)进程有哪些基本状态。进程具有就绪、执行和阻塞三种基本状态。在学习时必须了解 在一个进程的生命周期中,它是如何随着自身的执行和外界条件的变化不断地在各种状态之
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有