【操作系统】线程的实现方式:用户线程和内核线程

1 用户级线程

完全在用户空间中实现和管理的线程。

它们的创建、同步和调度由应用程序通过用户级别的线程库实现,所有的线程管理工作都由应用程序负责无需操作系统内核干预。在用户看来有多个线程,但操作系统并不能意识到线程的存在。

缺点:它们不能充分利用多核处理器的并行能力。因为操作系统调度的基本单位是内核线程,当一个用户线程阻塞时(如I/O操作),整个进程都会被阻塞,即使其他用户线程仍处于就绪状态。这可能导致多处理器系统中的性能下降。

在这里插入图片描述

2 内核级线程

由操作系统内核直接支持和管理的线程。

内核负责创建、调度和销毁内核线程,每个内核线程都拥有独立的内核栈和线程上下文。一个线程被阻塞后,别的线程还可以继续执行,并发能力强,多线程可以在多核处理机上并行执行。

缺点:它们的创建、切换和同步操作涉及系统调用,线程管理的成本高,开销大。此外,内核线程需要更多的内核资源(如内核栈),这可能在大量线程的情况下导致资源耗尽。

在这里插入图片描述

3 多线程模型

用户线程和内核线程分别代表了两种线程实现方式。

  1. 用户线程的开销较小,但在多处理器系统中可能无法充分利用并行能力。
  2. 内核线程可以充分利用多处理器的并行能力,但开销较大。

在实际应用中,可以根据具体需求和性能要求选择合适的线程类型。

  • 一对一模型:一个用户级线程映射到一个内核级线程
  • 多对一模型:多个用户级线程映射到一个内核级线程
  • 多对多模型:折中,克服了多对一模型并发度不高的缺点和一对一模型占用太多内核级线程、开销太大的缺点

在这里插入图片描述

4 Java线程和操作系统的线程有什么区别?

4.1 Green Threads

JDK 1.2 之前,Java 线程是基于Green Threads实现的,这是一种用户级线程。它们的创建、同步和调度由应用程序通过用户级别的线程库实现,所有的线程管理工作都由应用程序负责,无需操作系统内核干预。

用户线程的创建与切换开销较小,但它们不能充分利用多核处理器的并行能力。因为操作系统调度的基本单位是内核线程,当一个用户线程阻塞时(如I/O操作),整个进程都会被阻塞,即使其他用户线程仍处于就绪状态。这可能导致多处理器系统中的性能下降。

4.2 Native Threads

在 JDK 1.2 及以后,Java 线程改为基于原生线程实现,也就是说 JVM 直接使用内核线程来实现 Java 线程,由操作系统内核进行线程的调度和管理。

一个线程被阻塞后,别的线程还可以继续执行,并发能力强,多线程可以在多核处理机上并行执行。但它们的创建、切换和同步操作涉及系统调用,线程管理的成本高,开销大,可能需要更多的内核资源。

4.3 Java20新特性:Virtual Thread

是 JDK 而不是 OS 实现的轻量级线程(Lightweight Process,LWP),由 JVM 调度。许多虚拟线程共享同一个操作系统线程,虚拟线程的数量可以远大于操作系统线程的数量。

虚拟线程在其他多线程语言中已经被证实是十分有用的,比如 Go 中的 Goroutine。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android apkanalyzer简介

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、用法3.1 使用 Android Studio3.1.1…

VR全景广告:让消费者体验沉浸式交互,让营销更有趣

好的产品都是需要广告宣传的,随着科技的不断发展,市面上的广告也和多年前的传统广告不同,通过VR技术,可以让广告的观赏性以及科技感更加强烈,并且相比于视频广告,成本也更低。 在广告营销中,关键…

深度解析自动化测试流程(纯干货)

最近很多小伙伴咨询自动化测试到底该怎么做?流程是什么样的?在每个阶段都需要注意什么?本文也就主要从自动化测试的基本流程入手,对面试自动化测试工程师的同学会有不少帮助。对于在职的朋友,也可以参考此流程&#xf…

Java集合类

Java集合类 集合类 集合类其实就是为了更好地组织、管理和操作我们的数据而存在的,包括列表、集合、队列、映射等数据结构。 集合根接口 Java中已经帮我们将常用的集合类型都实现好了,我们只需要直接拿来用就行了 所有的集合类最终都是实现自集合根…

exsi7.0 重新创建缺少的虚拟机磁盘文件文件(.vmdk)

数据存储浏览器中首发的虚拟机磁盘文件是虚拟机的界面文件,并且没有图标。 打开虚拟机电源时,出现文件未找到的错误。 查看虚拟机目录时存在平面文件 虚拟机磁盘的磁盘文件不存在或已损坏。 解决方案 如何重新补发丢失/丢失的虚拟磁盘光盘文件(.vmdk)&…

什么是客户端?一文了解客户端定义、特点与功能、搭建方法

客户端:定义、特点与功能、搭建方法 1. 定义: 客户端是计算机网络中的一个术语,指的是在网络通信中充当主动发起请求并接收服务响应的一方。通常,客户端是指运行在终端设备上的软件或硬件实体,通过与服务器进行通信来…

华为数通方向HCIP-DataCom H12-831题库(单选题:301-310)

第301题 关于配置防火墙安全区域的安全级别的描述,错误的是 A、同一系统中,两个安全区域不允许配置相同的安全级别 B、只能为自定义的安全区域设定安全级别 C、安全级别一旦设定不允许更改 D、新建的安全区域,系统默认其安全级别为1 答案:D 解析: 新创建的安全区域缺省未…

交通目标检测-行人车辆检测流量计数 - 计算机竞赛

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

GAN.py

原代码地址:github.com/zqhang/MTGFLOW 目录 def ConvEncoder() def ConvDecoder() class CNNAE(torch.nn.Module): class R_Net(torch.nn.Module): class D_Net(torch.nn.Module): def R_Loss() def D_Loss(&#xff09…

在前端html页面中向服务器发送post登录请求

目录 前言 搭建服务器 搭建前端登录页面 获取表单值 使用axios发送post登录请求 前言 一般在html页面中向服务器发送post请求的模块为登录请求,本文将介绍如何向服务器发送post请求 搭建服务器 如何搭建服务器请看JWT认证这篇文章,有详细的解说。…

SpringCloud学习笔记-gateway网关自定义全局过滤器

需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件: 参数中是否有authorization, authorization参数值是否为admin 如果同时满足则放行,否则拦截 实现: 在gateway中定义一个过…

《SQLi-Labs》04. Less 23~28a

title: 《SQLi-Labs》04. Less 23~28a date: 2023-10-19 19:37:40 updated: 2023-10-19 19:38:40 categories: WriteUp:Security-Lab excerpt: 联合注入,注释符过滤绕过之构造闭合,%00 截断、二次注入、报错注入,空格过滤绕过&…

【Java基础面试二十四】、String类有哪些方法?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:String类有哪些方法&…

诊断DLL——Visual Studio安装与dll使用

文章目录 Visual Studio安装一、DLL简介二、使用步骤1.新建VS DLL工程2.生成dll文件3.自定义函数然后新建一个function.h文件,声明这个函数。4.新建VS C++ console工程,动态引用DLL编写代码,调用dll三、extern "C" __declspec(dllexport)总结Visual Studio安装 官…

欧科云链研究院:人类或将成为仅次于AI第二聪明物种?Web3不允许

出品|欧科云链研究院 在 AI行业“掘金买铲”的英伟达,60%的红杉投资在AI相关领域,之前只专注Web3的顶级VC,Paradigm 正在从转向人工智能等 "前沿 "技术。 资本的追逐让AI迷人且危险。 OKG RESEARCH IN FT AI教父Geoffre…

并发容器(Map、List、Set)实战及其原理

一. JUC包下的并发容器 Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map,大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。 所以,Java先提供了同步容器供用户使用。 同步容器可以简单地…

生成“我的精彩回答”页面源码(Python)

生成“我的精彩回答”页面源码(Python)

单点登录知识点

单点登录(Single Sign-On,SSO)是一种身份验证技术,用户只需进行一次认证,便可访问多个与该系统相关的应用程序。单点登录的实现方式有很多种,如以下几种: 1. 基于代理服务器的实现:…

Xilinx IP 10 Gigabit Ethernet Subsystem IP

Xilinx IP 10 Gigabit Ethernet Subsystem IP 10 Gb 以太网子系统在 10GBASE-R/KR 模式下提供 10 Gb 以太网 MAC 和 PCS/PMA,以提供 10 Gb 以太网端口。发送和接收数据接口使用 AXI4 流接口。可选的 AXI4-Lite 接口用于内部寄存器的控制接口。 • 设计符合 10 Gb 以太网规范…

深入了解RPA业务流程自动化的关键要素

在RPA业务流程自动化实施过程中,哪些因素起着至关重要的作用?这其实没有一个通用的答案,每一个RPA业务流程自动化的部署,都需要结合具体场景去调整,并且进行全面的规划。 首当其冲是要关注以下几点: 1、专…