? 这一部分继续深入探讨与进程管理相关的高级概念并了解多处理机的对称多处理技术。
到目前为止提出的进程的概念包含两个特点:
上述两个特点是独立的,操作系统应该能够独立的处理他们。为了区分这两个特点,分派(接受调度)的单位通常被称为 线程 或者轻量级进程。而拥有资源所有权的单位通常仍称为进程或任务。现在,我们提出了线程的概念,并对二者加以了区分。
? 多线程是指操作系统在单个进程内支持多个并发执行路径的能力。每个进程中只有一个线程(一条执行路径)在执行的传统方法称为单线程方法。
多线程单线程示意图:
在多线程环境中,进程被定义成资源分配的单位和一个被保护的单位。与进程相关联的有:
在一个进程中,可能有一个或多个线程,每个线程都有:
线程和进程在进程管理角度的不同:
在单线程模型中(即并没有明确的线程概念),进程的表示包括他的进程控制块和用户地址空间,以及在进程执行中对例程调用和返回的行为的用户栈和内存栈。当进程正在运行时,处理器寄存器将被该进程所控制;当进程不运行时,这些处理器寄存器中的内容将被保存。在多线程环境中,进程仍只有一个与之关联的进程控制块和用户地址空间,但是每个线程都有一个独立的栈,该有独立的控制块用于包含寄存器的值、优先级和其他与线程相关的状态信息。
因此,进程中的所有线程共享进程的状态和资源。
如图:
从性能方面考虑线程的优点:
因此,如果一个应用程序或函数被实现为一组相关的线程要比实现为一组分离的进程更高效。
使用线程比较常见的例子是服务器对于多个用户请求的响应,因为这涉及到频繁的创建和销毁任务操作。并且如果计算机具有多个处理器,那么同一进程的多个线程可以同时被多个处理器同时处理以提高效率。
另外,在单处理机中,为了简化在逻辑上完成若干项不同功能的程序的结构,线程也是有用的。
比如:
在支持线程的操作系统中,调度和分派是在线程基础上完成的。
线程阻塞并不会导致拥有该线程的进程发生阻塞。不然便丧失了线程的灵活性。
线程同步的问题和解决的技术和进程同步相同,将在之后的进程同步部分一起讨论。
? 在一个纯粹的用户级线程程序中,有关线程管理的工作都由应用程序完成,内核意识不到线程的存在。程序默认是以一个单线程程序开始执行,如果需要使用多线程技术,那么用户必须使用一个多线程的例程库,通过多线程例程库实现对线程的创建、销毁和调度、恢复线程上下文等操作。此时可以认为线程库起到了类似操作系统管理进程时的作用。这些活动都发生在用户进程中,操作系统内核并不知道这一切。
还有一点需要注意的就是线程调度和进程调度的关系。
考虑一种情况,一个进程中有两个处于运行态的线程,某一时刻这个进程被操作系统设置为阻塞态,但是由于进程内部的线程对于操作系统是不可见的,所以进程中的线程对于管理他的线程库来说仍处于运行态,不过由于线程所在的进程被阻塞而暂停运行所以进程中的多线程例程库和他所管理的线程都会赞同运行。等到这个进程恢复运行时,线程继续恢复运行。对于内部的线程来说,进程的阻塞仿佛没有发生一样。
使用用户级线程的 优点 :
缺点 :
? 在一个纯粹的内核级线程程序中,有关线程的管理操作都是由内核完成的。应用程序没有对线程进行管理的代码。只有一个到内核线程设施的应用程序编程接口(API)。
优点 :
缺点:
经过统计后能发现,进程、用户级线程、内核级线程的性能从高到低可以按照这样的顺序(每级相差大约一个数量级):
? 用户级线程 > 内核级线程 > 进程
这是大多数情况下的结果,实际情况还是要取决于应用程序的性质。
? 一种折中的方法是组合用户级线程和内核级线程。在组合的系统中,线程的创建完全在用户空间中进行,线程的调度和同步也是在应用程序中进行。一个应用程序中的多个用户级线程被映射到一些内核级线程上。程序员可以为特定的应用程序和处理器调节内核级线程的数目以达到最佳效果。
在组合方法中,同一个应用程序中的多个线程可以在多个处理器上 并行 的运行。某个线程引起阻塞的系统用不会阻塞整个进程。设计正确的情况下该方法将会结合用户级线程和内核级线程的优点同时减少二者的缺点。
? 传统上,操作系统被看做是顺序机器,大多数计算机编程语言要求程序员把算法定义成指令序列。处理器通过按顺序逐条的执行机器指令来执行程序。每条指令都是以操作序列(取指令、取操作数、执行操作、储存结果)的方式执行的。
然而,对于计算机的这种看法并不完全是真实的。 在微操作级别,同一时间会有多个控制信号产生;长久以来指令流水线技术至少可以把取操作指令和执行操作重叠起来;这些都是并行的例子。
下面分析两种最主流的通过复制处理器提供并行性的手段:对称多处理和集群(后面讨论)。
并行处理器系统的分类:
对称多处理系统在提高计算机性能的同时,无疑也引入了其他的问题,例如多个处理器避免同时选择一个线程执行等等。它增加了操作系统设计的复杂度。
多处理器操作系统负责管理处理器和其他的计算机资源,使得用户可以把整个系统看做是与多道程序单处理器系统相同的形式。用户可以构造使用多进程或多线程的应用程序,而无需考虑用到一个处理器还是多个处理器。因此,多处理器操作系统必须提供多道程序系统的全部功能,再加上适应多个处理器的附加功能。
原文:https://www.cnblogs.com/backwords/p/9308536.html