进程和线程的区别详解

news2024/12/28 19:38:44

                                          

  • 🎥 个人主页:Dikz12
  • 📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香
  • 欢迎大家👍点赞✍评论⭐收藏

目录

 进程

进程在系统中是如何管理的

 进一步认识PCB

线程

 能否一直增加线程数目来提高效率

进程和线程的区别 


 进程

 进程:就是正在运行的程序.

 通过这个图片,可以看到每个进程想要执行,都需要消耗一定的系统资源。

每个进程,都是系统资源分配的基本单位.

进程在系统中是如何管理的

 主要考虑两个方面:

1.描述:就是使用类 / 结构体,把被管理的一个对象,这个属性都表示出来。(系统专门有一个结构体描述进程得属性,这个结构体被称为“进程控制块”--PCB).

2.组织:使用数据结构,类似于双向链表 这样的数据结构,把这些表示出来的对象,串起来.(方便后续的增删改查).

想更明确的认识进程特性,就需要进一步认识PCB里面的属性!!!

 进一步认识PCB

 1.pid:进程的身份标识. 

 每一个进程都会有一个pid,同一时刻,不同进程之间的pid是不同的.

2.内存指针

  每个进程在运行的时候,都会分配一定的内存空间.这样的内存空间,具体在哪里,以及分配的空间有哪些部分,每个部分都是干什么的???都是有一组指针来进行区分的.

也就是描述了进程的“内存资源”是什么样子的.

3.文件描述符表

 类似于顺序表 这样的数据结构,和文件有关 => 硬盘 有关.

一个进程也会涉及到硬盘操作,就需要按照文件来操作,进程都操作了那些文件就是通过文件描述符表.描述了进程持有的“硬盘资源”.

 PCB中还引入了一些属性,用来支持操作系统实现 进程调度 的效果.

1.进程的状态 (比如:就绪、阻塞.....)

2.进程的优先级 . (有些进程会给更高的优先级,优先调度)

3.进程的上下文. (可以理解为:读档、存档.)

4.进程的记账信息 (通过优先级机制,对不同的进程分配了不同权重的资源)

线程

 引入多个进程的初心是什么??

实现并发编程 (现在是多核CPU时代)

 多进程,实现并发编程,也有明显的缺点.太重量。效率不高。

如果频繁的创建 /  销毁 进程,开销是不容忽视了.

为了解决上述问题,就引入了“线程”(Thread),也叫做“轻量级进程”.

 所以,每个线程,都是可以独立的进行调度的,每一个线程,也有状态,优先级,上下文,记账信息......。一个进程,使用PCB表示,一个进程可能使用一个PCB,也可能使用多个PCB表示,每个PCB对应到一个线程上;前面谈到的,pid、内存指针、文件描述符表也是共用同一份的。

创建线程就不需要重新申请资源了. 直接使用分配给进程的资源,省去了资源分配的开销,所以创建效率就更高了!!!

 能否一直增加线程数目来提高效率

所以,线程多了,可能会产冲突,被称为“线程不安全问题”。

如果某个线程抛出异常,没有妥善处理,就可能把整个进程搞崩溃,其它线程也会因此消失.

进程和线程的区别 

1.进程是资源分配的基本单位;线程是调度执行的基本单位。

2.进程包含线程,一个进程至少有一个线程,也可以有多个。

3.进程 和 线程 都是用来实现 并发编程, 线程比进程更高效、更轻量。

4. 进程 和 进程 之间具有独立性,一个挂了不会影响到另一个;同一个进程的 线程和 线程之间是可能相互影响的。 (线程安全问题 + 线程异常)

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

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

相关文章

【240126】上海大学—调剂信息

上海大学 学校层级:211 调剂专业:081000 信息与通信工程 发布时间:2024.1.26 发布来源:网络发布 调剂要求:要求考数一英一且初试成绩在320分以上 来源说明 1、官方发布:学校官网、研招网 2、网络发布…

EOF和0区别

题目描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。 输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜…

Architecture Lab:Part C【流水线通用原理/Y86-64的流水线实现/实现IIADDQ指令】

目录 任务描述 知识回顾 流水线通用原理 Y86-64流水线实现(PIPE-与PIPE) 开始实验 IIADDQ指令的添加 优化 ncopy.ys 仅用第四章知识,CEP11.55 8x1展开,CPE9.35 8x1展开2x1展开消除气泡,CPE8.10 流水线化通过…

在VM虚拟机上搭建MariaDB数据库服务器

例题:搭建MariaDB数据库服务器,并实现主主复制。 1.在二台服务器中分别MariaDB安装。 2.在二台服务器中分别配置my.cnf文件,开启log_bin。 3.在二台服务器中分别创建专用于数据库同步的用户replication_user,并授权SLAVE。&#x…

【DDD】学习笔记-数据分析模型

在 Eric Evans 提出领域驱动设计之前,对企业系统的分析设计多数采用数据模型驱动设计。如前所述,这种数据模型驱动设计就是站在数据的建模视角,逐步开展分析、设计与实现的建模过程。通过对数据的正确建模,设计人员就可以根据模型…

【INTEL(ALTERA)】为什么在编译 HDMI 英特尔® FPGA IP设计示例 VHDL 变体时看到错误 (13879)?

说明 由于英特尔 Quartus Prime Pro Edition 软件版本 23.2 存在一个问题,您在编译 HDMI 英特尔 FPGA IP设计示例的 VHDL 变体时可能会看到以下错误: 错误 (13879): VHDL 绑定指示 hdmi_rx_ram_1port_intel_mce_2010…

Java设计模式大全:23种常见的设计模式详解(一)

本系列文章简介: 设计模式是在软件开发过程中,经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合,可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在…

缩略图保持加密(TPE)论文

文献: R.Zhao,Y.Zhang,Y.Nan,W.Wen,X.Chai,andR. Lan, “Primitively visually meaningful image encryption: A new paradigm,” Inf. Sci. (Ny), Vol. 613, pp. 628–48, 2022. DOI: 10.1016/j.ins.2022.08.027. (1) 第1行:原始图像 第2行:加密图像 加密的目标: 原始…

synchronized内部工作原理

作者简介: zoro-1,目前大二,正在学习Java,数据结构,javaee等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 synchronized内部工作原理 syn…

运维监控之MySQL死锁查询及监控

死锁是指两个或两个以上的事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁。 为了监控MySQL的死锁情况,可以使用以下方法&#xf…

【论文解读】Point Transformer

Point Tranformer 摘要引言方法实验结论 摘要 自注意网络已经彻底改变了自然语言处理,并在图像分析任务(如图像分类和对象检测)方面取得了令人印象深刻的进展。受这一成功的启发,我们研究了自注意网络在三维点云处理中的应用。我…

流浪动物救助|基于Springboot的流浪动物救助平台设计与实现(源码+数据库+文档)

流浪动物救助平台目录 目录 基于Springboot的流浪动物救助平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、动物信息管理 3、商品评论管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

常用Hallmark及KEGG、GO基因查询

文献:The Molecular Signatures Database (MSigDB) hallmark gene set collection - PMC (nih.gov) GSEA | MSigDB | Browse Human Gene Sets (gsea-msigdb.org)通过msigdb数据库可以查看各个Hallmark、KEGG、GO具体包含的基因细节。 Hallmark nameProcess categor…

python中的三种程序控制结构-顺序结构、分支结构、循环结构

程序控制结构 一、顺序结构二、分支结构三、循环结构条件循环-while遍历循环-for循环控制-break、continue 一、顺序结构 顺序结构是指程序在执行时按照代码的顺序逐一执行,每一行代码只执行一次,然后依次执行下一行代码。顺序结构是程序最基本的执行方式…

springboot果蔬配送商城

技术架构: java mysql bootstrap jquery mybatis springboot 有需要该项目的小伙伴可以私信我你的Q。 功能介绍: 系统基于Java技术进行开发,后台数据库使用MySQL,在Windows环境下使用idea开发工具进行开发,主…

异地办公必不可缺的远程控制软件,原理到底是什么?

目录 引言远程桌面连接软件的作用与重要性 基本概念与架构客户端-服务器模型网络通信协议 核心技术组件图形界面捕获与传输输入转发会话管理 性能优化策略带宽优化延迟优化 引言 远程桌面连接软件的作用与重要性 在当今这个高度数字化和网络化的时代,远程桌面连接软…

基于springboot智慧养老平台源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

Yarn常见问题处理

任务出现container OOM异常导致作业失败 原因 Container内存不足或者作业数据倾斜 解决方案 检查Container相关参数,判断是否设置过小(低于4GB)。如果Container小于4GB,优先考虑调大当前作业container大小,如果是Tez任务,还需要同步调整以下参数 # tez container size…

教你一招如何半小时把C语言的 scanf printf sscanf sprintf fscanf fprintf wscanf wprintf 玩出花来

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能…