专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

操作系统——线程和多线程模型

前言

为什么有线程这个概念呢?

传统的进程只能串行执行一系列程序。因此,引入线程来增加并发度。

这个时候cpu执行的最小单位就是线程了。

线程是一个基本的cpu执行单元,也是程序执行流的最小单位。

引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。

引入线程后,进程只作为除cpu之外的系统资源的分配单元。

76_1.png

正文

线程属性

76_2.png

线程的实现方式

线程分为用户级线程和内核级线程。

用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

不需要用户态/核心态切换,速度快,操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。

由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。

内核线程:由操作系统内核创建和撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程。

操作系统只能知道内核级线程,因此只有内核级线程才是处理机分配的单位。

76_3.png

在上面的模型中,该进程由两个内核级线程,三个用户级线程,在用户看来,这个进程由3个线程。但是即使该进程在一个4核处理机上的计算机运行,也最多只能分配到两个核,最多只能有两个用户线程并发执行。

用户级线程和内核级线程映射问题

多对一模型

76_4.png

一对一模型

76_5.png

多对多模型

76_6.png

76_7.png

文章永久链接:https://tech.souyunku.com/46677

未经允许不得转载:搜云库技术团队 » 操作系统——线程和多线程模型

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们