进程管理笔记1-进程线程基础知识

5.1 进程线程基础知识

进程

进程的基本定义

进行的程序。代码经过编译,变成二进制可执行文件,运行这个可执行文件后,装载到内存中,然后CPU执行其中指令。

并行和并发

并行指两个任务并列前行,并发指两个任务交替进行。
在这里插入图片描述
那么进程为什么会交替呢?因为有的进程会处于暂停等待状态,这时候就需要让出cpu的计算资源。因此,进程主要分三个状态:就绪,阻塞,运行在这里插入图片描述
就绪:等别的进程用好cpu资源
阻塞:有事用不了cpu资源
运行:正在使用cpu资源
在这里插入图片描述
还有开始结束状态不说了

那么在阻塞的进程等待过程中,实际上占用这物理内存,这很难受,因此需要把这个物理内存交换到硬盘,等再运行的时候,再接入到物理内存
因此,还需要一个挂起状态,指进程实际上没有占用物理内存
因此:
阻塞挂起状态:指进程在硬盘等待某事的发生
就绪挂起状态:进程在硬盘,只要进入内存立马运行

进程的控制结构

进程控制块PCB process control block PCB

PCB和进程绑定:
包含进程描述信息(pid),进程控制(当前状态,阻塞,就绪,运行),进程优先级。资源分配清单(关于内存地址,打开文件列表,和OI信息)。CPU相关信息,很重要,进程被切换时,状态保存在对应的PCB中,重新执行进程时,能从断点处继续执行
在这里插入图片描述

进程的控制

1、创建进程
申请一个空白的PCB并填写相关信息,分配资源,将这个pcb插入到就绪队列
2、终止进程
有三种:正常结束,异常结束,外界干预(kill)
在这里插入图片描述

3、阻塞进程
一旦一个进程被阻塞,只能由另一个进程唤醒
过程:寻找阻塞进程的PCB,然后将其转为阻塞,然后将PCB插入到阻塞进程中

4、唤醒进程
过程:
在该事件的阻塞队列中找到相应进程PCB,然后移出阻塞队列,标记为就绪状态,然后插入到就绪队列中等待调度

进程的上下文切换

一个进程切换到另一个进程,称为上下文切换

先介绍CPU的上下文切换:CPU中有着CPU寄存器和程序计数器,每次运行的时候都依赖的环境。CPU上下文切换就是把前一个任务的上下文(寄存器和程序计数器)保存下来,然后加载新任务的上下文,运行新任务。
系统内核保存的就是上一次的上下文信息

那么进程的上下文切换
除了虚拟内存,栈,全局变量等用户空间的资源,还包括内核堆栈、寄存器等内核空间的资源。

线程

用于满足:实体之间可以并发运行,且共享地址空间

线程是进程中的一条执行流程。

同一进程内,多个线程可以共享代码段、数据段 、打开的文件等资源,但每个线程都有一套独立的寄存器和栈,这样可以确保线程的控制流是相对独立的。

线程和进程的比较

进程是资源(内存,文件)分配单位,线程是CPU的调度单位
进程拥有完整资源平台,线程只独享寄存器和栈
线程同样具有就绪、阻塞、执行的三种状态
现成能减少并发执行的时间和开销

线程比进程更能节约时间:
1、线程创建时间短(不需要像进程一样创建那么多,只需要寄存器和栈),共享进程的资源
2、线程终止时间快,释放的资源少
3、同一个进程内线程切换速度比进程快,因为线程共享一个虚拟空间,也就是同一个进程的线程的页表一样,不需要切换页表这个开销
4、数据交互时候不需要经过内核,这就使得线程之间的数据交互效率更高

线程的上下文切换

线程是调度的基本单位,进程是资源拥有的基本单位

在这里插入图片描述
线程的上下文切换的是什么?
1、若不同进程的线程,则切换过程和进程上下文一样
2、若相同线程,虚拟内存共享,因此只切换寄存器,栈等信息,因此开销很小

线程的实现

1、用户线程:在用户空间实现的线程,不是内核管理的,用户态的线程库来管理的线程

2、内核线程:在内核中实现的线程,内核管理

3、轻量级线程:内核中支持用户线程

用户线程,内核线程存在一对一,多对一,一对多的关系

用户线程

用户线程是基于用户态的线程管理库来实现的,线程控制块TCB(Thread Control Block)也是库中实现的,操作系统看不到,只能看到PCB(进程控制块)
在这里插入图片描述
因此操作系统不直接参与线程的管理和调度。

内核线程

在这里插入图片描述

调度

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

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

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

相关文章

【VolView】纯前端实现CT三维重建-CBCT

文章目录 什么是CBCTCBCT技术路线使用第三方工具使用Python实现使用前端实现 纯前端实现方案优缺点使用VolView实现CBCT VolView的使用1.克隆代码2.配置依赖3.运行4.效果 进阶:VolView配合Python解决卡顿1.修改VtkThreeView.vue2.新增Custom3DView.vue3.Python生成s…

OpenEuler kinit报错找不到文件的解决办法

客户一套华为大数据集群平台,在一台arm平台openEuler服务器上面安装完集群客户端之后,使用kinit认证出现报错No such file or directory: 最终定位是操作系统/lib64缺少ld包导致,执行下面的命令恢复: ln -sv /lib/ld-linux-aarch64.so.1 /lib64/ld-linux-aarch64.s…

国内首家,百度智能云千帆AppBuilder全面兼容MCP协议

百度智能云千帆 AppBuilder 已兼容 MCP 协议!作为国内首家支持 MCP 协议的大模型应用开发平台(Claude、LangGraph、Cursor、Cline、N8N等海外平台已支持),千帆 AppBuilder 完成兼容后,用户可通过千帆 AppBuilder 轻松调…

uniapp自身bug | uniapp+vue3打包后 index.html无法直接运行

前提: 已经修改了基础路径 打开打包文件,双击运行index.html报错,无法访问页面 uniappvue2项目是可以正常运行的 vue3修改publicPath: ./后,也是可以正常访问打包文件中的index.html 点进控制台提供的链接:https:/…

Ubuntu快速安装使用gRPC C++

目录 引言一、快速安装1. 安装必要依赖库2. 安装gRPC 二、测试使用三、参考博客 引言 关于gRPC随着云原生微服务的火热也流行了起来,而且学好一个gRPC框架对目前来说也是必须的了。然而对于一个基础的小白来说,这个gRPC的框架运用起来是及其的困难&…

AES 简介 以及 C# 和 js 实现【加密知多少系列_3】

〇、AES 简介 AES 的全称是 Advanced Encryption Standard,意思是高级加密标准。它的出现主要是为了取代 DES(Data Encryption StandardData Encryption Standard)加密算法的,因为我们都知道 DES 算法的密钥长度是 56Bit&#xf…

在Django模型中的Mysql安装

安装mysql驱动 文章目录 安装mysql驱动1.打开PowerShell 安装mysql的驱动2.安装mysqlclient驱动2.1开始安装2.2 pip list 进行验证 出现mysqlclient 以及pymysql即可 3.正式安装mysql3.1打开mysql官网 www.mysql.com3.2点击下载 然后划到最后点击mysql社区下载 3.3 点击适合win…

AI赋能企业协作6-FizEIM的功能探索

本系列文章AI赋能企业协作与第一个系列IM工具对比中反复比较了国内外、商业、开源的IM工具以及IM工具的AI支持,在之前的比较对象中,由于信息偏差,Workplus(BeeWorks)已不再开源,这里向各位读者致歉&#xf…

java项目之基于ssm的旅游论坛(源码+文档)

项目简介 旅游论坛实现了以下功能: 用户信息管理: 用户信息新增 用户信息修改 景点信息管理: 景点信息添加 景点信息删除 景点信息修改 论坛类型管理 论坛类型添加 论坛类型修改 论坛类型删除 公告类型管理: 公告类型添加 公…

Linux安装Elasticsearch集群-----docker安装es集群

目录 技术背景 1.2 实验目标 二、实验内容 1.1 服务器规划 二、传统方式安装Elasticsearch集群 2.1 安装Java环境(10.1.1.6/8) 2.3 配置集群节点(以10.1.1.6) 2.4 启动服务 ES Data节点1(10.1.1.8)…

【嵌入式】复刻SQFMI开源的Watchy墨水屏电子表——(2)软件部分

书接上文 基于乐鑫 ESP32-PICO-D4 模块的墨水屏智能手表开源项目Watchy 完成了硬件部分,接下来就是软件部分: 一 开发环境配置(Arduino ESP32) 首先需要进行 Arduino ESP32 开发环境的安装配置,过程参考之前的帖子&a…

关于微信小程序端base64解码问题

由于atob是浏览器端的,对于微信小程序不支持,导致模拟器【开发工具】显示正常,但真机异常解析失败问题,微信小程序原有的api,官方文档中也废弃了 解决方案: 调用: const decodedString ba…

如何通过Odoo 18创建与配置服务器操作

如何通过Odoo 18创建与配置服务器操作 服务器操作是Odoo实现业务流程自动化的核心工具,允许你在服务器端执行自动化任务,通常由按钮点击或自动化工作流等事件触发。这些操作使用 Python 编写,能够执行复杂的业务逻辑,从而增强 Od…

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理,欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图: 注意,下面谈及的所有方式,都要求两者的IP地址处于同一网段,涉及到的软件资源见felm。 一、Windows主…

[设计模式与源码]1_Spring三级缓存中的单例模式

欢迎来到啾啾的博客🐱,一个致力于构建完善的Java程序员知识体系的博客📚,记录学习的点滴,分享工作的思考、实用的技巧,偶尔分享一些杂谈💬。 欢迎评论交流,感谢您的阅读&#x1f604…

微服务架构中的API网关:Spring Cloud与Kong/Traefik等方案对比

微服务架构中的API网关:Spring Cloud与Kong/Traefik等方案对比 一、API 网关的概念二、API 网关的主要功能2.1 统一入口与路由转发2.2 安全与权限控制2.3 流量管理与容错2.4 API 管理与聚合2.5 监控与日志2.5 协议转换与适配2.6 控制平面与配置管理 三、API 网关选型…

中兴B860AV3.2-T/B860AV3.1-T2_S905L3-B_2+8G_安卓9.0_先线刷+后卡刷固件-完美修复反复重启瑕疵

中兴电信B860AV3.2-T/B860AV3.1-T2_晶晨S905L3-B芯片_28G_安卓9.0_先线刷后卡刷-刷机固件包,完美修复刷机后盒子反复重启的瑕疵。 这两款盒子是可以通刷的,最早这个固件之前论坛本人以及其他水友都有分享交流过不少的固件,大概都…

Stable Diffusion lora训练(一)

一、不同维度的LoRA训练步数建议 2D风格训练 数据规模:建议20-50张高质量图片(分辨率≥10241024),覆盖多角度、多表情的平面风格。步数范围:总步数控制在1000-2000步,公式为 总步数 Repeat Image Epoch …

Web3 时代数据保护的关键挑战与应对策略

Web3 时代数据保护的关键挑战与应对策略 随着互联网技术的飞速发展,我们正步入 Web3 时代,这是一个以去中心化、用户主权和数据隐私为核心的新时代。在这个时代,数据保护成为了一个至关重要的议题。本文将探讨 Web3 时代数据保护面临的主要挑…

微信小程序计算属性与监听器:miniprogram-computed

小程序框架没有提供计算属性相关的 api ,但是官方为开发者提供了拓展工具库 miniprogram-computed。 该工具库提供了两个功能: 计算属性 computed监听器 watch 一、安装 miniprogram-computed 在项目的根目录下,使用如下命令,…