进程与线程的区别和联系

news/2024/5/10 4:15:44/文章来源:https://blog.csdn.net/m0_74365243/article/details/130031343

进程与线程的区别和联系

  • 🔎进程
  • 🔎线程
  • 🔎进程与线程的联系
  • 🔎进程与线程的区别
  • 🔎总结
  • 🔎 结尾

🔎进程

进程简单来说就是运行着的程序

如果不太理解可以参考一下这篇文章
进程

🔎线程

线程可以理解为程序的功能

🔎进程与线程的联系

进程包含线程
一个进程可以有一个或多个线程
每个线程都是一个独立的执行流, 线程与线程之间, 也是并发执行的

举个栗子🥝

我们可以把 QQ 理解为一个进程
QQ 有着比较多的功能, 可以把这些功能理解为不同的线程
我们可以一边使用 QQ 进行语音聊天, 一边使用 QQ 打字回复消息(并发执行)

🔎进程与线程的区别

(1)
每个进程都有自己独立的内存空间和文件描述符表
同一个进程下的多个线程, 共享同一份地址空间和文件描述符表

举个栗子🥝

滑稽老哥家里是做生意的
由于最近生意比较火爆, 所以他决定将厂房中的机器增加到两台(原本只有一台)

在这里插入图片描述
这时候滑稽老哥比较为难
他有两个选择
(1)再租一个厂房(创建一个新的线程)
(2)在之前的厂房另设一台机器(创建一个新的线程)

对于选择(1), 需要另租一个厂房, 开销是比较大的
(进程比较重量, 创建与销毁的成本较高)
对于选择(2), 虽然厂子的闲置空间会没有之间充裕, 但只用购买机器, 不用再另租厂房, 开销较小
(线程相较于进程较为轻量)

于是滑稽老哥选择在之前的厂房另设一台机器(创建一个新的线程)
在这里插入图片描述

对于上述描述

每个进程都有自己独立的内存空间和文件描述符表
(每个厂房有自己独立的地址)

同一个进程下的多个线程, 共享同一份地址空间和文件描述符表
(在同一个厂房下的机器, 共享同一个厂房的地址)


(2)
进程是操作系统资源分配的基本单位
线程是操作系统调度执行的基本单位

解释

进程是重量的, 不是轻量的
这主要体现在资源分配上

比如分配内存时
(1)系统需要先去遍历空闲内存的表, 找到一块大小差不多的空间进行分配
(2)很多的进程都去向系统申请资源, 系统在分配资源时, 就需要逐个进行分配
资源分配, 是一个耗时的操作
所以进程是重量的

而对于线程来说
由于线程是进程的一部分
也就相当于系统资源已经是分配好的了(创建进程时进行资源分配, 进程产生后也就有了线程)
此时只需要多个线程并发的执行任务(操作系统调度线程)

所以
进程是操作系统资源分配的基本单位
线程是操作系统调度执行的基本单位

想象一下
QQ 的打开与关闭,看作是进程的创建与销毁(需要进行资源的分配)
打开 QQ 后, 需要执行不同的功能, 看作是操作系统在调度不同的线程去完成不同的任务


(3)
进程之间具有独立性, 一个进程挂了, 不会影响到其他的进程
同一个进程中的多个线程之间, 一个线程挂了, 可能会影响到其他线程, 并把这个进程也挂掉

举个栗子🥝

滑稽老哥需要完成吃 100 个鸡腿这项任务
在这里插入图片描述
只有一位滑稽老铁吃比较慢
于是就又来了几位滑稽老哥帮忙一起吃
(任务完成比较慢, 多加一些线程)

在这里插入图片描述

感觉吃的还是比较慢
于是就又来了几位滑稽老哥帮忙一起吃
(任务完成比较慢, 多加一些线程)

在这里插入图片描述

但是这时候由于滑稽老哥太多了, 导致一部分滑稽老哥吃不上鸡腿🍗
可能产生问题
(线程过多, 可能产生问题)

在这里插入图片描述

由于滑稽老哥A 想去吃鸡腿却发现桌子已经被围满了(没有空余位置)
这时候滑稽老哥A 就让滑稽老哥B 离开
恰好滑稽老哥B 是个暴脾气, 结果滑稽老哥B 就一气之下把桌子掀翻了
其他滑稽老哥也不能吃鸡腿🍗了, 吃鸡腿这项任务也中止了
(同一个进程中的多个线程之间, 一个线程挂了, 可能会影响到其他线程, 并把这个进程也挂掉)

在这里插入图片描述

如果将鸡腿分成两份(两个进程)
再让滑稽老哥去吃鸡腿(线程完成任务)
这样即使其中一个的桌子被掀, 另一个房间仍然可以照常吃鸡腿🍗
(进程之间具有独立性, 一个进程挂了, 不会影响到其他的进程)

在这里插入图片描述

🔎总结

在这里插入图片描述

🔎 结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

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

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

相关文章

【MySQL--01】数据库基础

文章目录1.什么是数据库2.主流数据库2.1 MySQLMySQL架构实例3.基本使用3.1 MySQL的安装3.2 连接服务器3.3服务器管理4.服务器,数据库,表之间的关系5.使用数据库6.SQL分类7.存储引擎查看存储引擎存储引擎对比1.什么是数据库 数据库是用来存储数据的。那么…

Java BigDecimal学习

文章目录Java BigDecimal不损失精度的方法Java BigDecimal的几种舍入模式1、UP(BigDecimal.ROUND_UP)2、DOWN(BigDecimal.ROUND_DOWN)3、CEILING(BigDecimal.ROUND_CEILING)4、FLOOR(BigDecimal.ROUND_FLOOR)5、HALF_UP(BigDecimal.ROUND_HALF_UP)6、HALF_DOWN(BigDecimal.ROUN…

QMake宏定义常量和字符串或带空格的字符串(在代码中使用)

答案 宏定义常量 DEFINES EXPIR_TIME123宏定义字符串(不带空格) DEFINES NIHAO\\\"nihao\\\"宏定义字符串(带空格也适用于不带空格的情况) 推荐 DEFINES NIHAO\"\\\"ni" "hao\\\"\"QMAKE宏定义常量 环境: visual studio 2018 …

Java基础之List

文章目录一、List介绍二、List常用方法 List应知应会2.1 调用add()方法增添数据(可指定位置添加)2.2 调用remove()方法删除指定位置元素并返回被删除元素2.3 调用set()方法修改指定位置元素并返回初始数据2.4 调用get()方法返回指定位置元素三、List可重…

SQL注入写入文件方法(获取webshell)

数据库写入文件条件 1、当前数据库用户为 root 权限2、知道当前网站的绝对路径3、secure_file_priv 的参数必须为空或目录地址4、PHP的 GPC 为 off状态;(魔术引号,GET,POST,Cookie)用 sqli-labs 测试查看当前用户权限Python sqlma…

本机连接Vmware虚拟机中win7的SQLServer数据库

在开发中,可能遇到不同数据库或不同版本的问题,为了避免在本机安装卸载造成后续无法再次安装的情况,我们在虚拟机中安装需要的版本进行测试。 本篇介绍如何在本机连接到虚拟机中的数据库。 解决流程如下: 一:进入虚…

学Vue3这一篇就够了!

目录学习Vue的前提是掌握 HTML,CSS,Js中级知识vue介绍声明式渲染条件与循环处理用户输入组件化应用构建Vue与自定义元素的关系应用和组件实例Vue实例根组件组件实例 property生命周期钩子实例的生命周期图模板语法插值文本原始 HTMLAttribute使用 JavaScript 表达式指令参数动态…

Linux驱动开发——字符设备

目录 Linux设备分类 字符设备驱动基础 字符设备驱动框架 虚拟串口设备 Linux设备分类 Linux系统根据驱动程序实现的模型框架将设备驱动分为下面三种。 (1)字符设备驱动:设备对数据的处理是按照字节流的形式进行的,可以支持随机访问,也可以不支持随…

抽象类,接口

抽象类:当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。 package com.hspedu.abstract_;public class Abstract01 {public static void main(String[] args) {} } a…

Linux 操作系统原理 — PCIe 总线标准

目录 文章目录目录总线系统PCIe 总线PCIe 总线的传输速率PCIe 总线的架构PCIe 外设PCIe 设备的枚举过程PCIe 设备的编址方式BDF(Bus-Device-Function)编号BAR(Base Address Register)地址Linux 上的 PCIe 设备查看 PCIe 设备的 BD…

算法强化--两数之和

hi,大家好,今天为大家带来一道题目,求两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一…

Python 进阶指南(编程轻松进阶):三、使用 Black 工具来格式化代码

原文:http://inventwithpython.com/beyond/chapter3.html 代码格式化是将一组规则应用于源代码,从而使得代码风格能够简洁统一。虽然代码格式对解析程序的计算机来说不重要,但代码格式对于可读性是至关重要的,这是维护代码所必需的…

【剑指offer|4.从尾到头打印单链表】

0.从尾到头打印单链表 单链表:一般给的都是无头节点的 另外:在面试中,如果我们打算修改输入的数据,则最好问一下面试官是不是允许修改 下面这种先把链表节点的值按链表序放到数组中,然后来一个算法库中的reverse属实有…

一文懂KL散度KL Divergence

本文翻译自https://naokishibuya.medium.com/demystifying-kl-divergence-7ebe4317ee68 KL散度中的KL全称是Kullback-Leibler,分别表示Solomon Kullback和Richard A.Leibler这两个人。 一、KL散度的定义 KL散度表明概率分布Q和概率分布P之间的相似性,由…

ARM Linux 内核启动1 —— 汇编阶段

一、Makefile分析 1、Makefile 分析 (1) kernel 的 Makefile 写法和规则等,和 uboot 的 Makefile 是一样的,甚至 Makefile 中的很多内容都是一样的。 (2) kernel 的 Makefile 比 uboot 的 Makefile 要复杂,这里我们并不会一行一行的详细分析…

【20】核心易中期刊推荐——计算机科学电子通信(EI索引)

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

进阶C语言:文件操作

文件操作不仅仅是我们使用鼠标用来操作文件的各项功能,还可以使用C语言来操作文件的内容,可以使用C语言来对文件的读、写、拷贝...等等,话不多说,直接开始: 目录 1.为什么要使用文件 2.什么是文件 2.1程序文件 2.…

蓝桥杯【第14届省赛】Python B组

本题解不一定正确,欢迎大家指正 A:2023 【问题描述】 请求出在 12345678 至 98765432 中,有多少个数中完全不包含 2023 。 完全不包含 2023 是指无论将这个数的哪些数位移除都不能得到 2023 。 例如 20322175,33220022 都完全不包…

python实现获取当前目录下的树形结构

python实现获取当前目录下的树形结构 程序实现 在有些Linux上自带了tree命令来一树状结构显示一个目录,但是在有些linux上没有自带这个程序,所以这里用python写了一个小程序来实现这个功能,代码如下: import osdef print_tree(…

共模电感(扼流圈) 差模电感(扼流圈)

共模电感 共模电感,也叫共模扼流圈。常用于电脑的开关电源,过滤共模的电磁干扰信号。 共模电感器由软磁铁芯(铁氧体磁芯)和两组同相绕制的线圈组成。对于共模信号,由于两组线圈产生的磁场不是抵消。而是相互叠加&…