山东集团网站建设/五行seo博客
目录
- 一、 进程
- 1.1 PID(进程标识符)
- 1.2 内存指针
- 1.3 文件描述符表
- 1.4 状态
- 1.5 优先级
- 1.6 记账信息
- 1.7 上下文
- 二、线程
- 三、总结:进程和线程之间的区别(非常非常非常重要,面试必考题)
一、 进程
简单来介绍一下什么是进程,在我的理解中我是把每一个任务都当成一个进程,例如:我打开了电脑微信APP就是一个任务,也是一个进程。
这里的每一个任务都是进程,然后通过C++中的结构体,这里叫做PCB(进程控制块)来描述一个进程,然后通过链表将这些PCB给连接起来,当我们查看是就是遍历该链表,将存储的信息展示出来,当打开或是删除一个进程时,只需要在链表的头或尾进行插入和删除即可,每个进程都有一个结构体PCB,然后通过数据结构组织起来就形成上面的结果。
相比大家已经对PCB(进程控制块)有了一点了解,简单来说就是来描述一个进程的结构体,当然了,在结构体中是不是还有相当多的属性来组成这个结构体的,例如:上图中的状态、CPU…等都是PCB中的一个属性,也是我们接下来要学习的重点,这里我们学习PCB中的7大属性。
分别是:
- PID(进程标识符)
- 内存指针
- 文件描述符
- 状态
- 优先级
- 记账信息
- 上下文
所以说一个任务是一个进程,进程也就是系统分配资源的基本单位。
接下来让我们进入真正学习进程的内容了。
1.1 PID(进程标识符)
这个PID贼好理解,就记住PID的一个身份证或是一个数字,专门用来标记这个进程的,当然了,身份证是不重复的,这里的PID也不会有重复的同时出现,当你要使用该进程时,操作系统就会根据你的这个PID来迅速拿到这个进程。
上图可以看到,每一个进程都有一个PID,且是唯一的。
1.2 内存指针
按我的理解来说就是在创建该进程时,需要消耗一定的系统资源的,其中内存就是一种非常重要的资源,在整个电脑中,内存就那么大一点能让你随意使用吗?那肯定当然不是啦。
先从系统这里进行申请,系统分配给你一块,你才是可以使用,由内存指针指定了一块内存资源的区域,表示了你这个进程呀就在这块区域进行活动,且不能超出该区域,每个进程都必须使用自己申请到时候内存(一亩三分地)。
由于内存指针是进程创建时就已经开辟好了的,这里我们无法进行图片展示
总结来说:内存指针就是描述一个进程都能使用哪些内存资源的。
1.3 文件描述符表
内核为每个进程维护一个文件描述符表,该表记录了文件描述符的相关信息,包括文件描述符、指向打开文件表中记录的指针。
简单来说就是文件描述符表描述了一个进程对于内存资源使用的情况。
上图中的CPU、内存、以及磁盘都是文件描述符表对于该进程对内存资源使用的多少进行了统计。
1.4 状态
状态又分为阻塞状态和运行状态,在系统调度中心,若是要让 这个进程到CPU上进行执行就会将它的状态转变为就绪状态在执行中转变为运行状态,但是当不想让该进程进行执行时只需要将它转变为阻塞状态即可。
可以清楚的看到,这些状态一共有两种,一种是正在运行状态,一种是已挂起状态,已挂起状态也可以叫做阻塞状态。
1.5 优先级
优先级也很简单,我想问一下大家,当年同时运行王者荣耀打团时和微信聊天的时候,你要是CPU会先调度谁先来进行运行,很显然的我会先运行王者荣耀,但是计算机并不知道要先运行哪一个该怎么办?
这个时候就需要我们的优先级站出来了,优先级高的进程会优先进入CPU进行执行。
1.6 记账信息
简单来说就是针对每一个进程占据了多少CPU时间,进行了一个统计,然后会根据这个统计结果来进一步的调整调度的策略,确保在下一轮调整后的调度中,确保每一个进程都能进入CPU进行调度.
总结来说就是通过记账信息来进行动态的优化,让每一个进程都能进入CPU进行执行。
1.7 上下文
我们都知道在进程的调度中可能一个进程还没有执行完就被系统调度走了,难道下一次被调度回来时要重新执行前面执行了一半的吗?很显然不是这样的。
其实上下文有点向我们玩小游戏中的读档和存档,当打到第9关卡时不想玩了,就保存文档到上下文,当我们下一次想玩的时候在通过读取存档就可以继续上一次的关卡来进行了。
当进行进入CPU执行后被调度走时,会将当前处理的数据放在上下文中,当下一次重新被调度回来时在通过读取上下文信息进行继续执行。
二、线程
通过上面的学习我们知道了什么是进程,运行一个任务就是一个进程,那么什么是线程呢?可以理解为一个进程可以由一个或多个线程组成,系统在调度时会将一个进程分成多个线程来执行,当所有线程执行完,也就代表着该进程执行完了。
并且由于进程中进行频繁的创建和销毁时,会产生很大的开销(主要体现在资源的申请和释放上面),为什么进程会比线程开销大呢,举个例子:我打开王者荣耀就是一个进程,在刚进入加载界面时是不是会很慢,因为它要加载的数据很多很多,但是当我们进入后打开英雄界面或是匹配界面为什么会快秒出来呢,打开英雄界面就相当于是一个线程,匹配界面也是一个线程,当我关闭该界面(销毁线程时)处理很快,但是我要是关闭一个界面就需要重启一下游戏(进程)时,就知道多痛苦了,也可以看出来,一个进程可以由多个线程组合来完成工作,线程也可以称之为"轻量级进程"。
因此说:线程是系统进行调度的基本单位。
下图描述了进程和线程的关系。、
每一个进程在内存空间开辟一块属于自己的内存,他们之间相互独立,也叫做内存管理
第二个图片可以看出来,多个线程指向了同一块内存空间,而进程也是由一块空间组成,所以说进程由一个或多个线程构成,只是构成该进程的每一个线程的内存指针相同指向同一块区域,同时线程的文件描述符表也相同都是进程对内存资源的使用情况,当然了进程中其它的属性线程也都有,除了内存指针不同和文件描述符表不同之外,其它是属性和进程一样各不相同。
三、总结:进程和线程之间的区别(非常非常非常重要,面试必考题)
1.进程时系统进行资源分配时的基本单位,线程是系统调度执行时的基本单位
2.进程是包含线程的,一个进程可以由一个或多个线程组成
3.进程由一个或多个PCB组成,一个PCB包含的属性有PID、内存指针、文件描述符表、状态、优先级、记账信息以及上下文等诸多属性。
4…每个进程都有属于自己的资源,但同一个进程中的线程会共用这一份资源(该进程中线程的内存空间和文件描述符表相同)。
5.同一个进程中的线程也是一个独立的执行流,可以执行代码,并且可以单独的参与到CPU的调度中(该进程中 ,线程的PID,状态,优先级,记账信息,上下文相同的)。
6.进程和进程之间不会相互影响,因为他们的内存空间相互独立,也叫做:内存管理
7.进程间也可以相互交换信息,但需要CPU开辟一块公共空间用于交换,该过程叫做:进程间通信
8.同一个进程中的线程之间,可能会互相干扰,抛出异常,会影响到其它的线程,会把整个进程中的所有线程搞崩溃,从而引发线程安全问题。
9.同一个进程中的线程并不是越多越好,要能够合适,达到最大效率,如果线程太多了,调度开销也可能非常明显。
相关文章:

【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
目录 一、 进程1.1 PID(进程标识符)1.2 内存指针1.3 文件描述符表1.4 状态1.5 优先级1.6 记账信息1.7 上下文 二、线程三、总结:进程和线程之间的区别(非常非常非常重要,面试必考题) 一、 进程 简单来介绍一下什么是进程…...

自动驾驶仿真(高速道路)LaneKeeping
前言 A high-level decision agent trained by deep reinforcement learning (DRL) performs quantitative interpretation of behavioral planning performed in an autonomous driving (AD) highway simulation. The framework relies on the calculation of SHAP values an…...

数据挖掘实战-基于Catboost算法的艾滋病数据可视化与建模分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

分水岭算法分割和霍夫变换识别图像中的硬币
首先解释一下第一种分水岭算法: 一、分水岭算法 分水岭算法是一种基于拓扑学的图像分割技术,广泛应用于图像处理和计算机视觉领域。它将图像视为一个拓扑表面,其中亮度值代表高度。算法的目标是通过模拟雨水从山顶流到山谷的过程࿰…...

什么是AVIEXP提前发货通知?
EDI(电子数据交换)报文是一种用于电子商务和供应链管理的标准化信息传输格式。AVIEXP 是一种特定类型的 EDI 报文,用于传输提前发货通知信息。 AVIEXP 报文简介 AVIEXP 是指 Advanced Shipping Notification提前发货通知报文,用…...

Python 之SQLAlchemy使用详细说明
目录 1、SQLAlchemy 1.1、ORM概述 1.2、SQLAlchemy概述 1.3、SQLAlchemy的组成部分 1.4、SQLAlchemy的使用 1.4.1、安装 1.4.2、创建数据库连接 1.4.3、执行原生SQL语句 1.4.4、映射已存在的表 1.4.5、创建表 1.4.5.1、创建表的两种方式 1、使用 Table 类直接创建表…...

就业班 第四阶段(docker) 2401--5.29 day3 Dockerfile+前后段项目若依ruoyi
通过Dockerfile创建镜像 Docker 提供了一种更便捷的方式,叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。docker build语法: # docker build [OPTIONS] <PATH | URL | ->1. 常用选项说明 --build-arg,设…...

【运维项目经历|026】Redis智能集群构建与性能优化工程
🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区:CSDN云计算交流社区欢迎您的加入! 目…...

Linux编程for、while循环if判断以及case语句用法
简介 语法描述if条件语句if else条件判断语句if else-if else多条件判断语句for循环执行命令while循环执行命令until直到条件为真时停止循环case ... esac多选择语句break跳出循环continue跳出当前循环 1. for 循环 for语句,定量循环,可以遍历一个列表…...

docker命令 docker ps -l (latest)命令在 Docker 中用于列出最近一次创建的容器
文章目录 12345 1 docker ps -l 命令在 Docker 中用于列出最近一次创建的容器。具体来说: docker ps:这个命令用于列出当前正在运行的容器。-l 或 --latest:这个选项告诉 docker ps 命令只显示最近一次创建的容器,不论该容器当前…...

inflight 守恒和带宽资源守恒的有效性
接着昨天的问题,inflight 守恒的模型一定存在稳定点吗?并不是。如果相互抑制强度大于自我抑制强度,系统也会跑飞: 模拟结果如下: 所以一定要记得 a < b。 比对前两个图和后两个图的 a,b 参数关系&am…...

短视频直播教学课程小程序的作用是什么
只要短视频/直播做的好,营收通常都不在话下,近些年,线上自媒体行业热度非常高,每条细分赛道都有着博主/账号,其各种优势条件下也吸引着其他普通人冲入。 然无论老玩家还是新玩家,面对平台不断变化的规则和…...

Open AI又出王炸GPT-4,目测一大波人的饭碗要碎了...
前言 在科技的惊涛骇浪中,每一次技术的飞跃都预示着新时代的曙光。近日,Open AI公司再次震撼业界,推出了其最新力作——GPT-4,这款被誉为“王炸”的语言模型,以其前所未有的智能水平和创造力,不仅在技术圈…...

8086 汇编笔记(八):转移指令的原理
一、操作符 offset 操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址 codesg segmentstart: mov ax,offset start ;相当于 mv ax,0s: mov ax,offset s ;相当于 mv ax,3codesg endsend start 二、jmp 指令 jmp为无条件…...

win 系统 cmd 命令从私库上传,下载jar包
1. 确保maven环境变量或者maven安装无误; 2.私库下载 命令 mvn dependency:get -DgroupId<your_group_id> -DartifactId<your_artifact_id> -Dversion<your_version> -Dpackagingjar -Dfile<path_to_your_jar_file> -Durl<your_privat…...

dots_image 增强图像中的圆点特征
dots_image 增强图像中的圆点特征 1. dot_image 有什么用途?2. 点状字符的特征增强3. Halcon代码 1. dot_image 有什么用途? Enhance circular dots in an image. 这个算子可以增强图像中的圆点特征,例如下面的例子。 2. 点状字符的特征增强…...

代码随想录算法训练营第十五天| 110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和
110.平衡二叉树 题目链接:110.平衡二叉树 文档讲讲:代码随想录 状态:还可以 思路:计算左右子树的深度差,递归判断左右子树是否符合平衡条件 题解: public boolean isBalanced(TreeNode root) {if (root n…...

MSP430单片机控制流水灯,Proteus仿真
作品功能 本项目利用MSP430单片机控制一个简单的流水灯,通过按键切换流水灯的模式。用户可以通过按键控制LED灯的方向,从左向右或从右向左依次点亮。 作品的硬件材料 MSP430单片机 具体型号:MSP430G2553 LED灯 数量:8个类型&…...

出售iPhone前的必做步骤:完全擦除个人数据的方法
当您准备在闲鱼上转售旧 iPhone、将其捐赠、送给朋友或通过 Apple 回收之前,您可能会选择执行“恢复”操作来擦除您的数据。但请注意,这一操作并不能真正删除设备中的数据。被“删除”或“格式化”的数据实际上仍存在于 iPhone 中,只是被系统…...

npm yarn 更换国内源以及node历史版本下载地址
npm 更换国内源 npm config set registryhttps://registry.npmmirror.com npm config set electron_mirrorhttps://registry.npmmirror.com/electron/yarn 更换国内源 yarn config set registry https://registry.npmmirror.comnode历史版本下载地址 https://nodejs.org/dow…...

微信小程序手机号码授权登录
文章目录 一、微信小程序开发二、使用步骤1.前端代码2.后台配置3.后台代码 总结 一、微信小程序开发 目前个人的小程序无法使用手机号码授权登录,可以使用测试号进行开发 二、使用步骤 1.前端代码 代码如下(示例): <butto…...

【网络编程开发】1.网络结构 2.IP地址与端口号 3.字节序
网络编程开发 两台计算机要互相传送文件需解决很多问题: 必须有一条传送数据的通路。发起方必须激活通路。要告诉网络如何识别接收方。发起方要清楚对方是否已开机,且与网络连接正常。发起方要清楚对方是否准备好接收和存储文件。若文件格式不兼容&…...

读取文件
自学python如何成为大佬(目录):自学python如何成为大佬(目录)_利用python语言智能手机的默认语言实战一-CSDN博客 在Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况: 1 读取指…...

Allure在jenkins中无法显示的问题
jenkins中使用allure生成报告需要注意工作环境和路径的配置 前提条件: jenkins容器中已安装jdk和allure jenkins中配置全局工具环境: 项目中配置allure路径: 路径来源: Path需要选择相对路径的allure-report、allure-results...

建筑建筑一建考试试题及答案,分享几个实用搜题和学习工具 #其他#职场发展
收录了大量考试类型的题库,大到考公,小到知识竞赛,题库资源算是比较丰富的了。操作起来也不难,我们只需输入题目内容,即可快速搜索出答案,而且它在给出答案的同时还会附带解析。最重要的是,搜题…...

[240607] Jina AI 发布多模态嵌入模型 | PHP 曝新漏洞 | TypeScript 5.5 RC 发布公告
目录 Jina AI 多模态嵌入模型 - jina-clip-v1PHP 漏洞 CVE-2024-4577TypeScript 5.5 RC 发布公告 Jina AI 多模态嵌入模型 - jina-clip-v1 jina-clip-v1 是 Jina AI 最新推出的多模态嵌入模型。与 OpenAI CLIP 相比,它大幅提升了纯文本检索方面的性能,同…...

LeetCode 算法:滑动窗口最大值c++
原题链接🔗:滑动窗口最大值 难度:困难⭐️⭐️⭐️ 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…...

荆州餐饮环保在行动:清洗油烟净化器,守护城市环境
我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 在荆州,餐饮业不仅是美食爱好者的天堂,更是城市生活的重要组成部分。然而,随着餐饮业的发…...

AIConnect赋能加持丨AI+DEPIN 共同推动AI发展的技术与运用峰会圆满落幕
6月6日,由AIConnect主办,JuCoin协办的「AIDePIN 共同推动AI发展的技术与应用」峰会在胡志明市圆满落幕!此次活动不仅是AIConnect生态在市场推广和技术应用方面的重要一步,也标志着JuCoin在推动AI与DePIN技术融合中的又一里程碑。 …...

【自定义View】Android圆饼进度条
源码 自定义属性 <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"ArcProgressView"><attr name"android:textSize" /><attr name"bgBorderWidth" format"d…...