操作系统-lecture5(线程)

进程的缺点

在这里插入图片描述
在创建了子进程的时候,得到了可以并发执行的好处
但创建了进程资源会造成浪费

线程的引入

在这里插入图片描述
在同一个进程中有这样两个执行流,为并发执行的,称之为线程
这里引用下《操作系统概念》中的线程概述
在这里插入图片描述

任务举例

在这里插入图片描述
在复制的过程中,CPU在执行其他的任务了
这个时候文件数据很大,用户想终止任务,但此时没有任何按钮可以给用户终止,此时只能够通过强制关闭复制进程才可以结束,但这样对用户不友好

在这里插入图片描述
再进行任务改进,此时有两条任务流,一条进行copy操作,另一条执行wait操作,等待一个信号

执行过程:
1,进程CPU执行操作任务,这个时候世纪执行任务的都是线程了
2,此时thread1开始工作,启动io指令,去执行copy操作,此时thread1进入waiting,此时CPU为其他的线程服务
3,此时用户想要取消任务,点击了取消按钮,此时2号线程执行准备终止任务,但此时拿不到CPU的时间片,得等待其他的任务执行完成,此时进入ready状态
4,当某一时刻调度成功了,thread2的代码CPU开始执行
5,此时线程2的执行内容为:通知线程1停止拷贝
6,线程1进入ready状态

那为啥用进程不可以执行这件任务呢
在这里插入图片描述

使用线程在同个内存区域完成
但使用进程需使用两个内存空间,之间的通信成本很高
因此用线程来完成这个任务

采用多进程的开销

在这里插入图片描述

在进程与进程的切换过程中,中间等待的时间有很长,当进程的数量越多,可能大多在执行进程切换的工作,而很少的时间去为应用程序而服务

线程引入的动机

一个应用通常需要同时处理很多工作,比如一个Web浏览器,可能需要同时处理文字和图片,这些同时执行的任务可称为“执行流”,我们不希望它们是顺序执行的。
早期,每个执行流都要创建一个进程来实现,但是进程的创建需要消耗大量的时间和资源。
现在,和一个应用相关的所有执行任务都装在一个进程里,这些进程内部的执行任务就是“线程”(Thread)。
在这里插入图片描述

线程的定义

在这里插入图片描述

A thread is a basic unit of CPU utilization;it comprises a thread id,a program counter,a
register set, and a stack
线程是 CPU 利⽤的基本单位;它包括线程id(tid)、程序计数器、寄存器集和堆栈

It shares with other threads belonging to the same process its code section, data section, and other operating-system resources, such as open files and signals.
它与属于同⼀进程的其他线程共享其代码段、数据段和其他操作系统资源,例如打开的⽂件和信号。

A traditional(or heavyweight) process has a single thread of control.If a process has multiple threads of control, it can perform more than one task at a time.
传统(或重量级)进程有⼀个控制线程。如果⼀个进程有多个控制线程,它⼀次可以执⾏多个任务。

线程

在这里插入图片描述

多线程的好处

在这里插入图片描述
在这里插入图片描述

响应性:在多个客户端都想要请求服务端进行任务执行的时候,多个线程可以快速响应去执行对应的任务
资源共享:多线程处于同个内存空间中,线程之间通信比跨内存的多进程通信容易
经济:开辟新的进程需要有很大的资源开销
可伸缩性:当在单核计算机中,t1、t2、t3在执行任务,但同一时刻CPU只会执行其中一个,共用同个CPU,为并发线程,但在多核CPU计算机当中,可以t1、t2、t3各占用一个CPU,此时并发运算次变成了并行运算,在单核与多核的切换非常灵活

多核编程

在这里插入图片描述

多线程模型

在这里插入图片描述

M:1模型

在这里插入图片描述

1:1模型

在这里插入图片描述

M:M模型

线程库

在这里插入图片描述

PTHREADS

在这里插入图片描述
参考
B站操作系统

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

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

相关文章

FPGA kernel 仿真器调试环境搭建

参考:haps阶段说明2:kernel运行和调试 1 仿真器加载FIT及调试步骤 由于使用仿真器,就要额外配置DS-5的软件环境,有些步骤略复杂,请仔细按照说明操作。 1.1 导入kernel工程 不导入可以运行,但导入方便调试 file——-import 导入后的工程如图 1.2 创建debug 使用attach方…

MySQL(173)MySQL中的存储过程和函数有什么区别?

在MySQL中,存储过程(Stored Procedures)和函数(Functions)是两种用于封装可重用SQL代码的机制。尽管它们在很多方面类似,但仍有一些重要的区别。以下是对存储过程和函数的详细解释,以及如何在My…

可计算存储(Computational Storage)与DPU(Data Processing Unit)的技术特点对比及实际应用场景分析

以下是对可计算存储(Computational Storage)与DPU(Data Processing Unit)的技术特点对比及实际应用场景分析,结合引用资料进行综合说明:一、技术核心对比维度可计算存储DPU核心差异定位存储设备内置计算能力…

rag学习-以项目为基础快速启动掌握rag

rag从0到放弃黄帝内经rag问答系统RAG 项目版本迭代总览各版本技术细节如何使用黄帝内经rag问答系统 本项目使用爬虫获取了皇帝内经全文以此为数据构建检索增强系统 本项目以一个系统的多层迭代不断更新优化技术,由浅入深逐渐理解rag原理及优化技术 话不多说github…

linux 启动流程?

linux 启动流程 CPU 上电后最先执行的启动代码,通常确实是放在 arch 目录下对应架构的启动文件里。这是因为启动代码强相关于 CPU 架构和硬件细节,不同架构差异非常大。具体说明 1. 为什么启动代码放在 arch 目录? 启动代码要设置 CPU 状态&a…

《Kubernetes部署篇:基于Kylin V10+ARM64架构CPU使用containerd部署K8S 1.33.3集群(多主多从)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 一、架构图 如下图所示: 二、环境信息 基于x86_64+aarch64架构使用containerd部署K8S 1.33.3集群资源合集(三主多从) 2、部署规划 云平台 主机名 K8S版本 系统版本 CPU架构…

Docker 镜像打包为 ZIP 文件便于分享和转发

网上找到的记录一下方便下次看步骤详解1. 将镜像导出为 TAR 文件Docker 提供了 docker save 命令,可以将镜像导出为 .tar 文件。使用以下命令:docker save -o dify.tar dify说明:docker save:导出镜像为文件。-o dify.tar&#xf…

一对一交友小程序 / APP 系统架构分析

一对一交友小程序 / APP 系统架构分析一、引言在数字化社交的大背景下,一对一交友小程序和 APP 为人们拓展社交圈提供了便捷途径。合理且高效的系统架构是保障此类应用稳定运行、提升用户体验的基石。本文将深入剖析一对一交友小程序 / APP 的系统架构,涵…

Anthropic最新研究Persona vector人格向量

今天本来就想更一期强化学习,但是突然看了Anthropic的persona vector,所以又来写这一篇,因为我觉得这个很有价值以往我们玩LLM比较怕的事就事他乱说话作为概率模型,它能说对,它也能乱编,乱编轻症就是所谓的…

Spring AI集成Elasticsearch向量检索时filter过滤失效问题排查与解决方案

使用vectorStore.similaritySearch遇到问题 最近需要做一个功能,用到了es做向量数据库。在使用vectorStore.similaritySearch查询的时候,发现filterExpression中加的条件并没有完全生效,导致查询出来的数据不准确,出现了不符合me…

安灯系统(Andon System)

安灯系统是源自丰田生产系统(TPS)的一种可视化生产管理工具,其名称"Andon"来自日语的"提灯",原指用于报警的灯笼,现已成为制造业现场管理的核心工具之一。一、安灯系统的定义安灯系统是一种实时监控生产异常的可视化管理…

MyBatis与MySQL

要理解 MyBatis 语法及其与 MySQL 的区别,首先需要明确两者的本质定位:MyBatis 是 Java 的持久层框架(负责 Java 对象与数据库数据的映射),而MySQL 是关系型数据库管理系统(负责数据的存储和 SQL 执行&…

Vulnhub Noob靶机复现(附提权)

一、安装靶机 下载地址:https://download.vulnhub.com/noob/Noob.ova 下载好后使用VM打开配置如下。 二、主机发现 使用nmap扫描确认靶机ip(192.168.29.138) nmap -sn 192.168.29.1/24 三、端口扫描 使用nmap工具扫描全部端口以防遗漏。 nmap -A -p- 192.168.…

文心4.5开源测评:国产大模型的轻量化革命与全栈突破

> 当算力成本成为AI落地的最大拦路虎,一款仅需2.1GB显存、支持32K上下文的轻量级大模型如何撬动产业智能化的大门? ^ - ^ 2025年6月30日,百度正式开源文心大模型4.5系列,以**10款全维度模型矩阵**(0.3B至424B参数)刷新国产开源模型的技术边界。这不仅是参数规模的跃进…

【自存用】mumu模拟器+mitmproxy配置

一、 安装证书 下载mitmproxy进行安装。cmd 输入 mitmdump产生证书在C:\Users\账号名.mitmproxy找到mitmproxy-ca.p12,双击进入证书导入向导,一直点下一页,直到选择证书存储的地方选择【受信任的根证书颁发机构】,后面的继续点【是】或【完成…

Java中的字符串 - String 类

在C语言中若要表示字符串只能使用字符数组或者字符指针,Java语言则专门提供了 String 类,在面向对象编程中具有重要地位。在开发和校招笔试中,字符串也是常客。 目录 一、字符串的构造 二、常用方法 2.1 字符串的拼接 2.2 字符串之间的比…

[网安工具] Web 漏洞扫描工具 —— AWVS · 使用手册

🌟想了解其它网安工具?看看这个:[网安工具] 网络安全工具管理 —— 工具仓库 管理手册 Acunetix | Web Application Security ScannerAcunetix is an end-to-end web security scanner that offers a 360 view of an organization’s securi…

丑数-优先队列/三指针/动态规划

丑数 Solution 核心思路&#xff1a; 注意的几个点&#xff1a; 1.优先队列改变排序&#xff1a; priority_queue<int,vector<int>,greater<int>> q;2.用来判断是否访问过&#xff0c;可以用unordered_set 注意set的插入用的是insert而不是push unorder…

FPGA(或者数字电路)中组合逻辑和时序逻辑是怎么划分的

1.组合逻辑 在FPGA中&#xff0c;组合逻辑是哪些没有触发器作为存储单元的电路 LUT查找表就是组合逻辑电路&#xff0c;无时钟信号参与。 加法器&#xff0c;逻辑门&#xff0c;多路选择器&#xff0c;译码器2.时序逻辑电路 输出依赖于当前输入&#xff0c;还依赖于过去 触发器…

【音视频】WebRTC 中的RTP、RTCP、SDP、Candidate

一、RTP 1.1 RTP协议介绍 在 WebRTC 中&#xff0c;RTP&#xff08;Real-time Transport Protocol&#xff0c;实时传输协议&#xff09;是音视频媒体数据传输的核心协议&#xff0c;负责实时数据的封装、传输与解封装&#xff0c;为实时交互提供时序、同步、分片重组等关键能…