全知识整理目录

操作系统整理的目录,包括了整理的所有操作系统的知识。


概述

在没有线程以前,进程是程序执行流的最小单位。那为什么要引入线程呢?

引入线程主要是为了提高并发量。

例如:你去图书馆看书,一个桌子有4个位置,可能陌生的人之间,不愿意挨着坐,就会造成座位的浪费。

如果引入线程的思想,就是,将你分入寝室,分入一个班。那么你的室友,同班同学放入你坐的桌子,大家都很愿意,也提高了桌子的并发量。线程就是这样的一种思想。

所以,引入线程之后,线程就是程序执行流的最小单位。

引入线程的变化

  1. 线程是一个基本的CPU执行单元,也是程序执行流最小的单位。
  2. 引入线程之后,不仅是进程之间可以并发,进程内部的线程之间也可以并发,并且线程的并发效率更高,从而进一步提高了系统的并发度,使得一个进程内也能够处理多种任务。
  3. 引入线程之后,进程只作为除CPU之外系统资源的分配单元。(如打印机,的内存地址空间还是分配给的进程)。所以进程是资源分配的基本单位,线程是调度的基本单位。
  4. 同一个进程内,线程能并发,能切换。且开销更小。

线程的属性

如下图概括

线程的实现方式

线程的实现分为两类,用户级线程(UTL)和内核级线程(KTL),内核级线程又称为内核支持的线程。

用户级线程

  1. 用户级线程由应用程序通过线程库实现的,所有线程管理工作都由应用程序负责(包括线程切换)。
  2. 用户级线程,在用户态下就可以完成,不需要操作系统干预。
  3. 在用户看来,用户级线程是有多个,但是在操作系统看来,并不能看到线程的存在(即用户级线程对用户不透明,对操作系统透明)。

简单的理解,用户级线程就是有,用户方面的应用程序创建的,只有用户视角的才能看到,操作系统是不能的。

内核级线程

内核级线程的管理工作,都是由操作系统内核完成的。线程调度,切换等工作都是由内核负责,因此内核级线程的切换,必须在内核形态下才能完成。

简单的理解:内核级线程,就是从操作系统内核的视角,能够看到,处理的线程。

所以内核级线程才是处理机分配的单元。因为用户级线程他根本看不见。

如上图,三个用户级线程,两个内核级线程。但是即使在一台,8核的电脑上运行,也只能被分配到2个核。所以用户级线程,是映射到内核级线程来处理的。

多线程的模型

上面这个图,就是一种线程的处理模型,那么线程还有那些处理模型呢?

多对一模型

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

优点:用户级线程的切换在用户空间就可以完成,不需要切换到内核态,线程管理的系统开销小,效率高。

缺点:当一个用户级线程被阻塞,整个进程都会被阻塞,并发度不高。

一对一模型

一个用户级线程映射到一个内核级线程,每个用户进程,有同数量的内核级线程。

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

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

多对多模型

像这种简单粗暴的,多对一,一对多关系,一般不是最优解。那么最优解来了。多对多模型。

n用户级线程,映射到m个内核级线程上(n>=m),每个用户进程对应m个内核级线程(n>=m)。

这样就解决了,多对一模型当中并发度不高的缺点,又克服了一对一模型中,一个用户占用太多内核级线程的开销大问题。

参考:https://www.bilibili.com/video/av70156862?p=11

2.1.5线程概念与多线程模型相关推荐

  1. 王道操作系统考研笔记——2.1.5 线程概念与多线程模型

    文章目录 2.1.5 线程概念与多线程模型 2.1.5.1 线程的来源 2.1.5.2 线程机制带来的变化 2.1.5.3 线程的属性 2.1.5.4 线程的实现方式 2.1.5.5 多线程模型 2. ...

  2. 操作系统学习笔记-2.1.5线程概念和多线程模型

    操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...

  3. 【操作系统】—线程概念和多线程模型

    [操作系统]-线程概念和多线程模型 本章节学习内容如下 一.什么是线程,为什么要引入线程 线程是一个基本的CPU执行单元,也是程序执行流的最小单位 二.引入线程机制后,有什么变化? 三.线程的属性 线 ...

  4. 线程概念和多线程模型【操作系统学习笔记】

    11.线程概念和多线程模型

  5. 2.1.5 线程概念和多线程模型

    目录 思维导图 啥是线程,为什么要引入线程? 引入线程机制后,有啥变化? 线程的属性 线程的实现方式 用户级线程 内核级线程 组合方式 多线程模型 多对一模型 一对一模型 多对多模型 思维导图 啥是线 ...

  6. (王道408考研操作系统)第二章进程管理-第一节5:线程概念和多线程模型

    文章目录 一:引导 二:区别"进程"."线程"和"轻量级进程" (1)进程和线程的关系 (2)Linux中没有真正意义上的线程 (3)轻量级 ...

  7. 王道 ——线程概念和多线程模型

    目录 1.知识总览 2.什么是线程,为什么要引入线程 3.引入线程机制后,有什么变化 4.线程有哪些重要的属性 5.线程的实现方式 5.1 用户级线程 5.2 内核级线程 6.多线程模型 1.知识总览 ...

  8. 2.1.5 操作系统之线程概念与多线程模型

    文章目录 0.思维导图 1.为什么要引入线程? 2.什么是线程? 3.引入线程带来的变化及进程与线程的比较 4.线程的属性 5.线程的实现方式 (1)用户级线程 (2)内核级线程 (3)特殊的组合方式 ...

  9. 线程的概念和多线程模型

    文章目录 5.线程概念和多线程模型 5.1.为什么要引入线程 5.2.什么是线程 5.3.线程引入后带来的变化 5.4.线程的属性 5.5.线程的实现方式 5.5.1.用户级线程 5.5.2.内核级线 ...

最新文章

  1. 文巾解题 977. 有序数组的平方
  2. Anaconda安装及第一个py程序
  3. mysql中间件研究(Atlas,cobar,TDDL)
  4. android xml事件,安卓事件
  5. svn 的使用(二)
  6. 如何锻炼膝盖和膝盖周围肌肉_我的分享膝盖照片的社交网络将如何拯救世界
  7. web安全day8:深入浅出掌握windows域
  8. JAVA生成UUID
  9. 第六章 算法algorithms
  10. 美林投资时钟与大类资产配置
  11. Win10下安装Ubuntu20.04双系统,看这一篇就够了
  12. 在自己电脑上无法用Foxmail客户端登录126邮箱的解决办法
  13. ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...
  14. php实训参考文献,SPSS实训心得体会
  15. 认识计算机微课导学单,微课“任务单”与“导学案”之比较
  16. cdn投资骗收租_为研究直播的投资点,才意识到CDN对内容分发的基础性意义。迟到3年才看到这一点,错过20倍的网宿科技...
  17. 获取MPU9250九轴数据--以四轴飞行器姿态解算为例
  18. 每个人都应该遵循的12个 SEO 最佳实践
  19. 牛客 古老的牛市,遗迹的天梯 dp
  20. Git系列:git push -u origin master命令理解

热门文章

  1. 地区天气(和风天气)
  2. Omnibox之Chrome关闭地址栏 输入提示
  3. 12月28吃鸡服务器维护,《绝地求生》正式服今日更新: 玩家死亡3分钟后才可观看回放...
  4. android studio 大作业
  5. Spring的基本原理
  6. 28 | MySQL读写分离之主从延迟解决方案(主从延迟问题有救了)
  7. 机器学习之PCA降维
  8. Python 利用PIL将图片转为字符
  9. springcloud:Fegin实现微服务间调用
  10. linux 5.5 关机,linux杂记(五)正确关机方法(shutdown,reboot,init,halt)