计算机 *** 作系统 | 2.1

计算机 *** 作系统 | 2.1,第1张

为了深入计算机底层,无知的我正在参考《王道考研》学习计算机 *** 作系统。

笔记特点是 我重新整理了涉及资料的一些语言描述、排版,而使用了自己比较容易理解的描述、同样是回答了一些常见关键问题

文章目录
  • 2.1_5_线程的概念与特点
    • 线程 的意义
    • 线程机制 引入后的变化
    • 线程的实现方式——用户级线程
    • 线程的实现方式——内核级线程
    • 线程的实现方式——二者组合的方式
      • 多对一模型
      • 一对一模型
    • 知识回顾与重要考点

2.1_5_线程的概念与特点 线程 的意义

传统的模式,进程是CPU调度的基本单位

特点

进程是资源分配的基本单位

缺陷

当切换进程时,需要保 存/恢复进程运行环境, 还需要切换内存地址空 间(更新快表、更新缓 存)开销很大

引入线程后,线程是CPU调度的基本单位

可以把线程理解为“轻量级进程”。是程序执行流的最小单位。

进程依然是资源分配的基本单位。 从属于同一进程 的各个线程共享进程的资源

线程机制 引入后的变化

线程机制 类比:

切换进程运行环境:有一个不认识的人要用桌子,你需要你的书收走,他把自己的书放到桌上 同一进程内的线程切换=你的舍友要用这张书桌,可以不把桌子上的书收走

线程的实现方式——用户级线程

用户级线程由应用程序通过线程库实现。

所有的线程管理工作都由应用程序负责(包 括线程切换) 用户级线程中,线程切换可以在用户态下即可完成,无需 *** 作系统干预。

在用户看来,是有多个线程。但是在 *** 作系 统内核看来,并意识不到线程的存在。(用户级线程对用户不透明,对 *** 作系统透明) 可以这样理解,“用户级线程”就是“从用户视角看能看到的线程”

线程的实现方式——内核级线程

内核级线程(Kernel-Level Thread, KLT, 又称“内核支持的线程”)

内核级线程的管理工作由 *** 作系统内核完成。 线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。

可以这样理解,“内核级线程”就是“从 *** 作系统内核视角看能看到的线程”

线程的实现方式——二者组合的方式

在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m 个内核级线程上( n >= m)//就是利用映射关系组合

重点重点重点 特点: *** 作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位。

例如:上面这个模型中,该进程由两个内核级线程,三个用户级线程,

  1. 在用户看来,这个进程中有三个线程。
  2. 但即使该进程在一 个4核处理机的计算机上运行,也最多只能被分配到两个核,最多只能有两个用户线程并行执行。
多对一模型

多对一模型定义:

  1. 多个用户及线程映射到一个内核级线程
  2. 每个用户进程只对应一个内核级线程。

优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态

=>线程管理的系统开销小,效率高

缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行

一对一模型

一对一模型:一个用户及线程映射到一个内核级线程。每个用户进程有与用户级线程同数量的内核级线程。

优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。

缺点:一个用户进程会占用多个内核级线程, 线程切换由 *** 作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。

知识回顾与重要考点

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/877842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存