操作系统之线程

news2024/11/26 0:38:36

线程

一、产生原因
最开始的并发,只能更具切换进程的方式去交替执行进程来宏观上并发,但是切换进程需要切换执行进程的环境,有很大的系统开销,所以产生了线程,让其可以不用频繁的切换进程,使得线程成为CPU执行的基本的单位

二、线程的属性
线程是处理机调度的基本单位
多CPU计算机中,各个线程可占用不同的CPU
每个线程都有一个线程ID、线程控制块(TCB)
线程也有就绪、阻塞、运行三种基本状态
线程几乎不拥有系统资源
同一进程的不同线程间共享进程的资源
由于共享内存地址空间,统一进程中的线程间通信甚至无需系统干预
同一进程中的线程切换,不会引起进程切换
不同进程中的线程切换,会引起进程切换
切换同进程内的线程,系统开销很小
切换进程,系统开销较大

三、实现方式

1、线程的分类
线程分为用户级线程(UTL)和内核级线程(KTL),用户级线程就是用户视角能看到的线程,内核级线程就是操作系统视角能看到的线程;内核级线程是处理机分配的单位;
在这里插入图片描述
在这里插入图片描述
四、多线程模型
多对一模型

n个ULT映射到1个KLT

优点:开销小,效率高

缺点:容易阻塞,并发度不高

一对一模型

n个ULT映射到n个KLT

优点:并发能力很强

缺点:占用成本高,开销大

多对多模型

n个ULT映射到m个KLT上(n>=m)

中和以上两种优缺点

五、线程的状态与转换
类似于进程的状态与转换间,这里就不描述了

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

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

相关文章

【论文笔记 fintune 】羊驼

1.论文 这些开发由两个关键组件提供动力:大型预训练语言模型(LM)和人工编写的指令数据。 1.1 背景 目前的训练太吃数据了,需要使用一些替代方法减少对数据的依赖有微调过的数据集效果远好于没有微调 用什么数据集微调呢&#x…

Collaborative Metric Learning(www 2017)

Background 传统基于MF的模型,将特征向量的点积作为预测结果,这存在一个很大的问题,即dot product 不满足三角不等式),这会导致学到的特征向量次优(难以捕捉用户细粒度的偏好)。本文提出了一种…

【Java笔试强训 20】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥字符串反…

第十八章 协程

我们知道脚本都是继承自MonoBehaviour类,而其中的Update方法里面放置了大部分的游戏逻辑处理代码。Update方法是游戏循环的每一帧都去执行,这就要求我们的代码“无时无刻”不在处理所有的可能发生的情况,并做出相应的处理。如果我们想要完成“…

Vue之render函数

概述 render函数从名字上看就可以看出,它是一个用于渲染的函数,在Vue中我们要将我们写的界面展示到屏幕上时,使用的方式都是组件中的template:标签下编写内容后,由Vue将我们编写的界面渲染到屏幕上。而这个render函数就是比templ…

B. Divide Candies(数学 + 思维)

Problem - B - Codeforces Arkady和他的朋友们喜欢在一个n n的棋盘上玩跳棋。这个棋盘的行和列从1到n编号。 他的朋友们最近赢了一场比赛,所以Actady想用一些糖果来取悦他们。记得一则古老寓言(但不记得寓意)》,Arlady想给他的朋友们每个格子一个糖果组…

SpringMVC学习总结(一)SpringMVC简介入门案例

SpringMVC学习总结(一)SpringMVC简介/入门案例 一、SpringMVC简介 (一)什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分。 M:Model,模型层,指工程中的Ja…

手把手教你学会gitee的注册和代码的提交

欢迎来到壮壮的代码世界 gitee的注册和提交 一、gitee是什么?二、gitee怎么注册三、gitee的一些基本配置四、在gitee上创建远程仓库(存储代码的地方)五、clone远程仓库到本地电脑六、怎么把本地的代码推送到远程仓库去(git的三板斧…

jQuery操作

文章目录 1. jQuery基本介绍1.1 原理示意图1.2 快速入门1.2 什么是jquery对象1.3 dom对象转jQuery对象1.4 jQuery对象转dom对象1.5 jQuery选择器1.5.1 jQuery基本选择器1.5.2 jquery层次选择器1.5.3 基础过滤选择器1.5.4 内容过滤选择器1.5.5 可见度过滤选择器1.5.6 属性过滤选…

Vue(Vue脚手架)

一、使用Vue脚手架(Vue Cli) Vue官方提供脚手架平台选择最新版本: 可以相加兼容的标准化开发工具(开发平台) 禁止:最新的开发技术版本和比较旧版本的开发平台 Vue CLI🛠️ Vue.js 开发的标准工…

AWS VPC 配置指南:快速创建和设置你的虚拟私有云

文章目录 一、前言二、创建 VPC2.1 进入 AWS VPC 服务2.2 创建 VPC2.3 选择所要创建的 VPC 资源2.4 输入 VPC 名称2.5 设置 IPv4 CIDR block(IPv4 CIDR 块)2.6 选择可用区2.7 选择公有子网的数量2.8 设置 NAT 网关和 VPC 终端节点2.9 完成创建 VPC2.10 查…

python ast 详解与用法

目录 基本概念节点类型ast.Assignast.Nameast.Constantast.Callast.Attribute 结点的遍历ast源码示例 结点的修改示例 参考链接 基本概念 python 语言在编译前会解析为抽象语法树,整个文件可以看作一棵树,树上的每个节点就代表一条语句,中序…

计算机中找不到msvcp140.dll无法继续执行代码,解决方法

DLL是Dynamic Link Library的缩写,意为动态链接库。dll文件是电脑系统及软件运行的重要文件,电脑如果丢失dll文件,那么很多软件跟游戏都是无法运行的,msvcp140.dll丢失这个问题就有很多小伙伴遇到,小编今天就分享找不到…

山东专升本计算机第一章-计算机信息技术与计算机文化

计算机信息技术与计算机文化 计算机中的信息表示 数制及其转换 数制:用进位的原则进行计数数码:数制中表示基本数值大小的不同数字符号基数:一种数制所使用的数码个数位权:数码在不同位置的权值 数制的转换 • R进制转化为十进…

【操作系统和强化学习】1.内存管理策略

文章目录 前言1.内存是什么1.1 基本硬件保护措施 碎片1.2 分段机制1.2.1 分段硬件1.3 分页 前言 CPU的调度可以提高CPU的利用率和计算机的响应用户的速度。为了改进性能,应该将多个进程保存在内存中。也就是说必须共享内存。 本文讨论的是如管理内存。 1.内存是什么…

知识变现海哥:我是如何通过知识变现年赚100万的

我叫王海青,大家都称我海哥,是一名知识变现导师,海青教育创始人。从2011年开始,已经从事知识变现培训服务10多年,帮助3000人实现了个人知识技能变现,一直致力于帮助普通人,把自己的一项知识技能…

TiDB实战篇-操作系统参数TiDB Server

操作系统参数 CPU 绿色的是设置cpu用最高的频率去使用cpu。 专门有一个内存给指定的cpu使用。减少cpu的相应时间。 内存 大页的优化,操作系统关闭大页 。 磁盘 TiDB Server配置 cpu 同时多少个会话 如果负载很高那么就往下面调节。 控制优先级(…

计算卸载论文阅读01-理论梳理

标题:When Learning Joins Edge: Real-time Proportional Computation Offloading via Deep Reinforcement Learning 会议:ICPADS 2019 一、梳理 问题:在任务进行卸载时,往往忽略了任务的特定的卸载比例。 模型:针…

BUUCTF ciscn_2019_c_1

小白垃圾做题笔记而已,不建议阅读。 1前期: 其实刚开始拿到程序的时候我还以为是逆向题放错地方了。唉,做题太少了。啥也不会。我是大笨蛋。 题目中用的是ubuntu18,我的ubuntu没怎么用过,vmtools都不能用&#xff0c…

【源码解析】canal核心功能源码解析

1. 项目地址 https://github.com/alibaba/canal.git2. 模块介绍 canal核心模块的功能: deployer模块:独立部署模块,用于canal-server的独立启动,包括本地配置解析、拉取远程配置、启动canal-server。server模块:cana…