0
点赞
收藏
分享

微信扫一扫

操作系统——线程


操作系统——线程_多处理机系统

一. 什么是线程,为什么要引入线程?

1. 为什么要引入线程

在20世纪80年代中期,人们又提出了比进程更小的基本单位——线程,视图用它来提高程序并发执行的程度,以进一步改善系统的服务质量

在没有引入进程之前,系统中的各个程序只能串行执行

不能够同时使用QQ和听音乐

引入进程之后

可以同时听音乐和使用QQ

但是如果你想使用QQ进行视频聊天,同时又进行文字聊天,而且还传输文件,

这些功能,在传统的进程上是不能同时进行的,因为传统的进程是程序的一次顺序执行,只能串行的执行一系列程序。

操作系统——线程_地址空间_02


人们希望每个进程还能够同时的做很多事情,而传统的进程只能串行的执行一系列程序,所以,人们又引入了线程,来增加并度。

操作系统——线程_多处理机系统_03

2. 什么是线程

操作系统——线程_多线程_04

二. 线程有哪些特性呢?

1. 线程的基本特性

  • 与传统进程一样,线程之间也存在共享资源和相互合作有的制约关系,这就导致线程也有中断性。进而线程在运行时就会出现以下三种状态
  1. 执行状态:线程已获得处理机而正在运行
  2. 就绪状态:线程以具备各种执行条件,等待CPU继续执行
  3. 阻塞状态:线程在执行中因某事件受阻而处于暂停状态
  • 线程状态之间切换与进程也是一样的
  • 线程也有控制块(TCB)
    里面存储线程的信息记录来用于控制和管理线程

2. 传统的进程和线程进行比较

  1. 调度的基本单位

传统OS中,进程是作为独立调度和分派的基本单位,所以进程是独立运行的基本单位
缺点:每次调度,都需要上下文切换,开销大

引入进程的OS中,把线程作为调度和分派的基本单位,所以线程是独立运行的基本单位
优点:线程切换,开销小,也不会引起进程的切换

  1. 并发性

进程可以并发执行

引入线程的OS中,线程也可以并发执行,一个进程中的所有线程都能并发执行

  1. 拥有资源

进程可以拥有资源,作为系统中拥有资源的一个基本单位

线程本身不能拥有系统资源,线程只具备一点资源(控制线程的线程控制块TCB、用于指示被执行指令序列的程序计数器、一组寄存器、堆栈)
多个线程允许共享该进程所拥有的资源(原因是:属于同一进程的所有线程都具有相同的地址空间)

  1. 独立性

每个进程拥有一个独立的地址空间和其他资源,除了共享全局变量外,不允许其他进程的访问

同一个进程中的不同线程之间的独立性比不同进程之间的独立性低。
原因是:同一个进程之间的线程可以相互合作,共享进程的内存地址空间和资源

  1. 系统开销

创建和撤销进程的开销大
进程的上下文切换开销大

创建和撤销线程的开销小
线程之间同步和通信简单,无需OS内核干预

  1. 支持多处理机系统

在多处理机系统中,传统的进程,即单线程进程,不管有多少个处理机,该进程只能运行在一个处理机上

多线程进程,可以将一个进程中多个线程分配到多个处理机上,使他们并行执行

3. 引入线程机制后,产生的变化

操作系统——线程_操作系统_05

4. 多线程操作系统的特点

进程已不再是可执行的实体,在多线程OS中,把线程作为独立运行(调度)的基本单位

虽然是这样,但进程任然具有与执行相关的状态

如:进程处于执行状态,实际上是指进程中的某线程正在执行
对进程施加的与进程状态有关的操作也对其线程起作用(挂起进程,就是把进程中的所有线程都挂起了)

5. 通过以上总结线程的属性

操作系统——线程_多线程_06

三. 线程的实现方式

线程已在许多系统中实现,但各系统的实现方式并不完全相同。
在有的系统中,特别是一些数据库管理系统,实现的是用户级线程

如infomix

另外一些系统实现的是内核支持线程

如Macintosh和OS/2操作系统

还有些系统则同时实现这两种类型的线程

如Solaris操作系统

1. 用户级线程

操作系统——线程_操作系统_07

2. 内核级线程

操作系统——线程_地址空间_08

3. 同时支持用户级线程和内核级线程

操作系统——线程_操作系统_09

在同时支持用户级线程和内核级线程的系统中,由于几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题
  1. 多对一模型
  2. 操作系统——线程_多处理机系统_10

  3. 一对一模型
  4. 操作系统——线程_地址空间_11

  5. 多对多模型
  6. 操作系统——线程_地址空间_12


举报

相关推荐

0 条评论