进程管理—线程概念和多线程的模型

本文介绍了线程的基本概念,指出线程是程序执行的最小单位,使得进程能并发执行不同任务。线程是轻量级进程,降低了资源切换的开销。文章讲解了进程与线程的区别,以及线程的三种状态。同时,阐述了线程的两种实现方式——用户级线程和内核级线程,并详细描述了多对一、一对一和多对多三种多线程模型。最后,讨论了线程在进程中的资源分配和切换成本。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、线程概念和多线程模型

在这里插入图片描述
什么是线程?为什么要引入线程?

QQ可以视频聊天,文字聊天,还可以传送文件,这些事情是怎么在进程当中完成的呢。很显然,这些事情不可能由一个程序顺序处理就能实现的,如果只能顺序处理,我们不可能同时做这些事情。
在这里插入图片描述
每个进程当中可能包含多个线程,然后CPU用一定的算法轮流的为一些线程进行服务。这样同一个进程被分为了不同的线程,这样就可以把QQ的不同任务放到不同的线程下进行执行,这两个线程可以并发的执行,自然不同的事情就可以并发的完成。

引入线程之后,线程就成为了程序执行流的最小单位。没有引入线程之前,一个进程就对应一份代码,这些代码只能顺序的依次往下面执行,但是再引入了线程之后,每一个进程可以有多个线程,并且这些线程可以有各自不同的代码,也可以是不同的线程运行的同样一份代码,但是这些代码都可以并发的被CPU处理,然后并发的依次执行下去。
在这里插入图片描述
线程其实可以理解为“轻量级的进程”,以前CPU的调度是以进程为单位,而现在CPU的调度是以线程为单位。

引入线程后,进程只作为除CPU之外的系统资源的分配单元,加入计算机系统当中有各种各样的系统资源,那么这些资源是会分配给进程的,而不是分配给线程的。
在这里插入图片描述
理解切换进程的运行环境?类比图书馆看书,加入自己正在使用图书馆的一张桌子,突然有一个不认识的人也要用这个桌子,这个时候你要把自己的书收走,他要把他的书放到桌子上。所以这就是进程切换所带来的运行环境的切换。这个切换是需要付出一定的代价的,你需要把书搬走,他需要把书放下。
但是假如是你的舍友使用这张桌子,你们两个认识,属于同一个进程,这种情况就可以不把桌子上的书收走,把书依然放在桌子上,这就类似于同一进程内的线程的切换。
在这里插入图片描述
线程的属性

线程控制块也是用于管理线程所创建的一个数据结构,和进程类似,线程也有就绪、阻塞、运行三种基本状态。

线程是调度的基本单位,而系统资源分配是分配给进程的,所以线程几乎不拥有系统资源,系统资源都是在进程那里。但是线程肯定也需要使用一系列的系统资源,这些系统资源从哪里来呢?其实同一个进程之间的不同线程可以共享使用进程的资源,这些系统资源包括IO设备,内存地址空间这样的资源。
在这里插入图片描述
线程的实现方式

一种叫做用户级线程,一种叫做内核级线程。
用户级线程,操作系统只能看到进程,调度依然是以进程为单位的。
在这里插入图片描述
在这里插入图片描述
内核级线程才是处理机分配的单位。
在这里插入图片描述
多线程的模型

多线程模型总共有三种。

多对一模型

用户级线程的管理是由应用程序来负责的,所以用户级线程的切换只需要在用户空间(用户态)下就可以完成了,不需要切换到核心态。

当一个用户级线程被阻塞以后,也会导致相应的内核级线程被阻塞,从而导致进程被阻塞,其他的用户级线程就不可以继续执行下去了。
在这里插入图片描述
一对一模型

内核级线程是处理机调度的基本单位,所以这些线程可以在多核处理机上并行执行。
在这里插入图片描述
多对多模型
在这里插入图片描述
总结
在这里插入图片描述
在这里插入图片描述

总结

这一部分主要介绍线程的概念和多线程模型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值