什么是线程,为什么要引入线程

引入进程的目的:为了更好地使多道程序并发执行,提高资源利用率和系统吞吐量,增加并发程度。


引入线程的目的:为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。

线程:是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合、堆栈组成。

线程是进程中的一个实体,是被系统独立调度和分派的基本单位

线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部系统资源。

一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。

线程也有就绪、阻塞、运行三种基本状态。

引入线程机制后,有什么变化

进程只作为除CPU外的系统资源的分配单元。
线程作为处理机的分配单元。

一个进程可有多个线程。

线程与进程的比较
1)调度
线程是独立调度的基本单元
进程是拥有资源的基本单元
同一进程中,线程的切换不会引起进程切换。
不同进程中进行线程切换,会引起进程切换。
2)拥有资源
进程拥有资源的基本单位。
线程不拥有系统资源,但可以访问其隶属进程的系统资源。
3)并发性
进程之间可以并发执行。
多个线程之间也可以并发执行,提高系统吞吐量。
4)系统开销
线程切换时只需保存和设置少量寄存器内容,开销小。
进程切换时,涉及当前执行进程CPU环境的保存及新调度到进程CPU环境的设置。
5)地址空间和其他资源
进程的地址空间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见。
6)通信方面
进程间通信需要进程同步和互斥手段辅助,保证数据的一致性。
线程间可以直接读/写进程数据段来进行通信。

线程的属性

线程的实现方式


应用程序从单线程开始,在该线程中开始运行,在其运行的任何时刻,可以通过调用线程库中的派生例程创建一个在相同进程中运行的新线程。

内核为进程及其内部的每个线程维护上下文信息,调度也在内核基于线程架构的基础上完成。

一个应用程序中的多个用户级线程被映射到一些(小于等于用户级线程的数目)内核级线程上。

多线程模型




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

  1. 【学习笔记】第二章——线程与多线程模型

    文章目录 一. 线程 为什么要引入线程: 引入进程后的变化 线程的属性 线程的实现 二. 多线程模型 1. 多对一模型 2. 一对一模型 3. 多对多模型 三. 总结 一. 线程 为什么要引入线程: ...

  2. 王道操作系统考研笔记——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. ...

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

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

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

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

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

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

  6. 【Linux入门】多线程(线程概念、生产者消费者模型、消息队列、线程池)万字解说

    目录 1️⃣线程概念 什么是线程 线程的优点 线程的缺点 线程异常 线程异常 Linux进程VS线程 2️⃣线程控制 创建线程 获取线程的id 线程终止 等待线程 线程分离 3️⃣线程互斥 进程线程间 ...

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

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

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

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

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

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

最新文章

  1. 交互神器 Facebook Origami
  2. Node.js项目目录介绍
  3. linux-shell-命令总结
  4. python 输入正方形_Python打印正方形
  5. Openstack的RPC通信代码调用架构
  6. 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
  7. 双11 拼多多iPhone 11系列香气扑鼻:最高降幅达1600元
  8. vue-cli3 中 sockjs-node/info?t=报错 的解决方法
  9. Centos7 安装X2goSever的步骤
  10. Ubuntu中创建、删除、更改、移动文件的命令
  11. 杭州云栖大会10月起航,这里有一份最全的大会剧透
  12. 国内三大通信运营商频段制式
  13. java技术cad转图片,怎么把原有的cad文件转换成图片格式?快速把cad转jpg的技巧...
  14. Python实现逆Radon变换——直接反投影和滤波反投影
  15. iOS App 打包上架AppStore超详细流程
  16. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)
  17. 艾美捷RPMI-1640培养基L-谷氨酰胺的参数和配方
  18. mysql查询中位数
  19. 【分子结构】原子结构总结——2015年9月12日
  20. 平面设计10大手法,设计师必看

热门文章

  1. Spring-context-ConfigurationClassBeanDefinitionReader类
  2. Spring-@Value
  3. oracle 查询表里信息_oracle查询表信息
  4. java的for循环取出数据只是拿到最后一个_从MySQL中导数据到HBase
  5. 35张史上最全IT架构师技术知识图谱
  6. Spring Cloud Netflix之Eureka上篇
  7. JConsole远程配置
  8. C#中时间格式的转换
  9. 使用css打造自定义select(非模拟)
  10. 查看windows所有exe的启动参数。