当前位置:文档之家› 分布式操作系统-多线程.

分布式操作系统-多线程.

由于内核对用户层线程没有感知,所有线程的 创建和调度在用户空间完成,不需要内核的干预。
缺点:如果内核是单线程的,那么任何用户级 线程执行一个阻塞系统调用将引起整个进程阻塞,即 便其它线程在该应用程序中是可运行的。
内核级线程:
由操作系统直接支持:内核负责在内核空间执 行线程创建、调度和管理。
线程之间的阻塞相互独立(既一个线程执行阻 塞系统调用时,内核可以调度进程里的其它线程执 行)。
传统的进程概念有两个严重的局限性。首先许多 应用想并发执行彼此间独立的任务,但又必须要共享 一个公共的地址空间和其他资源。但传统的进程概念 对它们以上的要求难以支持,往往把这些应用中的独 立的任务串行化,效率很低。其次传统的进程不能很 好地利用多处理器系统。因为一个进程在某个时刻只 能使用一个处理器。一个应用固然可以创建多个进程, 并把它们分到多个处理器上执行,但如何做到使用相 同的地址空间和资源?这些促使人们引起线程机制。
分布式操作系统
——分布式系统中的进程和处理机
线程与多线程
在单用户多任务的计算机中,如同在 Windows NT 中那样,除进程外,引入了 一 个新概念 ––– 线程 (thread)。对象、线程和进 程三者构成Windows NT 操作系统基本元成分。 线种概念在微型机多任务系统中十分重要。
进程在运行中要提出访问管理程序(系统调用) 的要求,例如提出I/O要求,也可能由于时钟而打断 了当前进程的运行,而调度其他就绪进程运行,也 就是经常会有进程开关问题。另外还有两次模式开 关(用户模式内核模式用户模式)的开销。所有这 些开销的总和,在一定程度上降低了并发进程所带 来的利益。
所以我们可以看出线程的重要优点:
1、在一个已有进程中创建一个新线程比创 建一个全新进程所需的时间少。
2、终止一个线程比终止一个进程花费的时 间少。
3、线程间切换比进程间切换花费的时间少。
4、线程提高了不同的执行程序间通信的效 率。在大多数操作系统中,独立进程间的通信需 要内核的干涉,以提供保护和通信所需要的机制。 但是,由于在同一个进程中的线程共享存储空间 和文件,它们无需调用内核就可以互相通信。
线程的概念
线程是进程内一个相对独立的、可调度的 执行单元。
根据线程定义可知线程有以下性质:
(1) 线程是进程内的一个相对独立的可执行单 元。
(2) 线程是操作系统中的基本调度单元,因此 线程中应包含有调度所需的必要信息。
(3) 由于线程是被调度的基本单元,而进程不 是调度的单元。所以每个进程在创建时,至少需 要同时为该进程创建一个线程。也就是说进程中 至少要有一个或一个以上线程,否则该进程无法 被调度执行。
更好的支持多CPU体系结构。
缺点:创建和管理比用户线程慢。
其它方案:
许多研究者都在尝试结合用户线程和内核线程 的长处,把两种线程结合起来,形成了三种多线程模 型:
多对一模型(m:1)
一对一模型(1:1)
多对多模型 (m:n)
基于线程的观点,可以把O.S.分为以下四类:
(1) 单进程和单线程系统
在这种操作系统中只有一个进程,而且每个进 程中只有一个线程。这种系统的代表是MS-DOS。也 可把单纯基于进程的操作系统看成是具有线程支,只 不过每 个进程中只有一个线程(进程也就是线程了)。
(4) 多进程和多线程系统
在这种操作系统中有多个进程。而且每个 进程有多个线程,是当前最为广泛的多线程操 作系统。现代操作系统如Windows NT等几乎都 是属于这种类型的。
实现一个线程包
有两种方法可以实现一个线程包:在用户空间 中和在内核中。对于这两种方法还存在一些争议,可 能会出现一种混合的方法,分别加以讨论
用户级线程:
用户线程在内核之上被支持,在用户层由一个 线程库实现。
该线程库为线程的创建、调度及管理提供支持, 而无需内核的支持。例如,UNIX并不支持线程,但 已经有了为它而写的各种各样的用户空间的线程包。
(4) 需要时,线程可以创建其他线程。
(5) 进程是被分给并拥有资源的基本单元,同 一进程内的多个线程共享该进程的资源。但线程 并不拥有资源,只是使用它们。
(6) 由于共享资源(包括数据和文件),所 以线程间需要通信和ቤተ መጻሕፍቲ ባይዱ步机制。
(7) 线程有生命期,有诞生和死亡。在生 命期中有状态的变化。
采用线程机制有些什么好处呢?对于多线 程机制而言,一个进程可以有多个线程,这些线 程共享该进程资源。这些线程驻留在相同的地址 空间,共享数据和文件。如果一个线程修改了一 个数据项,其他线程可以了解和使用此结果数据。 一个线程打开并读一个文件时,同一进程中的其 他线程也可以同时读此文件。总而言之,这些线 程运行在同一进程的相同的地址空间内。


(a)
(b)
(c)
(d)
基于线程和基于进程的操作系统
(2) 多进程和单线程系统
在这种操作系统中有多个进程操作系统。但 每个进程中只有一个线程。该系统的代表就是传 统意义上的UNIX操作系统。
以上两类是传统的操作系统,实际并没有线 程概念。
(3) 单进程和多线程系统
在这种操作系统中只有一个进程。但 每个进程有多个线程。Jave Run-time System可以认为是这种系统。
相关主题