操作系统原理学习(第四周)_线程
发布日期:2022-02-10 11:37:05 浏览次数:39 分类:技术文章

本文共 1853 字,大约阅读时间需要 6 分钟。

4-1 线程的引入

1.线程的概念

①进程具有两个基本属性:

  • 是一个拥有资源的独立单位,可独立分配虚地址空间、主存和其他
  • 又是一个可独立调度和分派的基本单位

这使得进程成为并发执行的基本单位

②问题:由于进程是一个资源的拥有者,因而在创建、撤销、切换调度时,系统需要付出较大的时空开销,故进程的数目不宜过多,进程的切换频率不宜过高,限制了并发程度。

③方法:将进程的两个基本属性分开

对于拥有资源的基本单位,不对其进行频繁切换,对于调度的基本单位,不作为拥有资源的单位,“轻装上阵”

④以内线程以小的开销来提高进程内的并发程度。

 

2.线程的引入

①在引入线程以前,进程是资源分配单位和CPU调度单位。引入线程以后,线程作为CPU的调度单位,而进程只作为资源分配单位。

②线程的特点:

  • 只拥有必不可少的资源,如:线程状态、程序计数器、寄存器上下文和栈
  • 同样具有就绪、阻塞和执行三种基本状态
  • 与同属于一个进程的其他进程共享拥有的全部资源
  • 可并发执行

 

3.线程的优点

减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发程度

  • 线程的创建时间比进程短
  • 线程的终止时间比进程短
  • 同进程内线程切换时间比进程短
  • 进程内的线程共享文件和文件资源,可直接进行不通过内核的通信

 

4.线程 Thread

①线程是CPU运用的基本单元,包括程序计数器、寄存器集和栈空间

②一个进程可以有多个线程,一个线程与它的对等线程共享代码段、数据段、操作系统资源,总体作为一个任务

③传统的或重型的进程等价于只有一个线程的任务。

④单线程进程和多线程进程,进程内的多线程共享代码段、数据段和文件资源,各自有自己的寄存器、栈。

 

5.进程和线程的比较

①并发性:引入进程的OS中,不仅进程间可以并发执行,在一个进程中的多个线程也可以并发执行,使OS有更好地并发性,提高资源利用率和系统的吞吐量。

②拥有资源:进程是拥有资源的独立单位,线程只有一些必不可少的资源。

③系统开销:OS创建或撤销进程的开销明显大于创建或撤销线程的开销。

④地址空间和其他资源:进程间相互独立,同一进程内的各线程共享。

⑤通信:线程间可直接读写数据段来进行通信——需要进程同步和互斥手段的辅助,保证数据的一致性。

⑥调度:线程上下文切换比进程上下文切换快得多。

 

6.引入线程的好处

①响应度高:一个多线程应用在执行中,即使其中一个线程阻塞,其他的线程还看继续进行,从而提高响应速度。

②资源共享:同一个进程的多个线程共享该进程的内存等资源。

③经济性:创建和切换线程开销低于进程。

④MP体系结构的运用:多线程更适用于多处理结构。

 

4-2 用户线程和内核线程

1.内核线程

①由内核支持,在内核空间执行线程创建、调度和管理。

②内核级线程时,线程才真正是CPU调度的基本单元。

③内核线程依赖于OS核心

  • 内核维护进程和线程的上下文信息
  • 线程切换由内核完成
  • 一个线程发生系统调用而阻塞,不会影响其他线程的运行
  • 时间片分配给线程,多线程的进程获得更多的CPU时间

 

2.用户线程

①由用户程序库进程管理的线程,无需内核支持,以进程为单位被OS调度。

②用户线程不依赖于OS核心,由线程库调度,无需用户态/核心态切换,速度特别快

  • 由用户程序完成
  • 内核不了解用户程序的存在
  • 用户线程切换不需要内核特权
  • 缺点:若内核为单线程控制,一个用户线程发生系统调用而紫色,则整个进程阻塞。时间片分配给进程,多线程则每个线程就慢。
  •  

3.用户线程和内核线程的比较

①调度方式:内核线程的调度和切换与进程相似,用户线程的调度不需要OS的支持。

②调度单位:用户程序的调度以进程为单位,在采用时间片轮转调度算法时,每个进程分配相同的时间片。

 

4-3 多线程模型

用户线程要映射到内核线程上执行

1.多对一

①多个用户线程映射待同一个内核线程

②用于不支持内核线程的系统中

③任一时刻只有一个线程可以访问内核(并发性低)

④用户线程发起系统调用而阻塞,则整个进程阻塞

 

2.一对一

①每个用户级线程映像进一个内核线程

②提供更好的并发性,一个线程阻塞是运行另一个线程运行

③每创建一个用户线程需创建一个相应的内核线程,带来额外开销,许多系统限制应用中线程数目。

 

3.多对多

不限制用于的线程数,多个线程可并发

 

4.两级模型

在多对多的基础上发展两级模型,多对多+一对一,运行一个用户线程绑定到内核线程。

 

本文知识以及图片来源:慕课_操作系统原理_田丽华

网址:

转载地址:https://blog.csdn.net/Fan_z_0802/article/details/93914593 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:A FUN JAVA PROGRAM
下一篇:操作系统原理学习(第五周)_CPU调度

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月03日 03时11分55秒