进程和线程的区别详解

                                          

  • 🎥 个人主页: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.mzph.cn/news/669227.shtml

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

相关文章

看论文利器:paperswithcode

paperswithcode,从名字就可以看出来,有源代码的paper。 写论文,很关键的就是能够复现论文内容。 这个网站提供了“论文代码”的参考文献。 以【图像加密】领域为例,搜索一下: 图像分割: 除了论文&#x…

2024年:用OKR管理你的生活

在科技高速发展的时代,越来越多的企业和团队开始采用OKR(Objectives and Key Results)管理方法来设定目标并跟踪进度。你是否想过,将OKR理念引入个人生活,以更有效地实现人生目标?本文将探讨如何在2024年运…

Linux环境docker安装gitlab(简单粗暴,复制即用)

前言 为方便运维,本人将常用docker安装镜像方式总结如下: 一、安装gitlab 1.查询镜像 docker search gitlab2.拉取镜像 可以根据自己需求拉取想要的版本,我选的是中文版 docker pull twang2218/gitlab-ce-zh3.创建挂载路径 mkdir -p /…

list基本使用

list基本使用 构造迭代器容量访问修改 list容器底层是带头双向链表结构&#xff0c;可以在常数范围内在任意位置进行输入和删除&#xff0c;但不支持任意位置的随机访问&#xff08;如不支持[ ]下标访问&#xff09;&#xff0c;下面介绍list容器的基本使用接口。 template <…

dolist案例实现

这段代码是一个使用Vue.js实现的简单的ToDoList&#xff08;待办事项列表&#xff09;应用。我们分几个部分详细解释这段代码。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>todolist</title&g…

互联网医院|互联网医院平台让医疗更智慧更容易

近年来&#xff0c;互联网医院在我国的应用范围不断扩大。然而&#xff0c;仍有许多人和医疗机构对线上问诊小程序的推广持保留态度&#xff0c;认为其应用效果不佳、覆盖范围有限。那么&#xff0c;我们应如何充分利用互联网医院系统&#xff0c;让线上医疗发挥更大的优势呢&a…

【发票识别】新增针对图片发票的识别(升级中)

说明 为了完善发票识别的功能&#xff0c;目前发票识别支持发票图片格式的识别&#xff0c;增加可用性。 体验 体验地址&#xff1a;https://invoice.behappyto.cn/invoice-service/ 体验地址上面有示例的发票&#xff0c;可以下载上传识别或者复制url地址进行识别。 技术栈…

不下载任何插件和依赖,在线导出swagger的api接口文档(word)

一、前言 swagger是一个非常方便用来生成api的工具集&#xff0c;它提供了可视化的restful风格的web界面&#xff0c;方便查看生成的api。 但是&#xff0c;想要将swagger生成的api直接导出为doc文档&#xff0c; 似乎不太方便实现&#xff0c;解析swagger的json串&#xff0c;…

错帐的查找与更正方法

目录 一. 错帐的查找方法二 . 结账![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9dd023684fb744acbfd00ff0bf8f7ef3.png)三. 对账 \quad 一. 错帐的查找方法 \quad \quad 实际工作中常用逆查法,因差错往往出现于后期。 \quad \quad 1、差数是由于漏记、看错、抄…

使用Virt-Manager定制 Windows Server QCOW2镜像

使用Virt-Manager定制 Windows Server QCOW2镜像 前言 在云计算和虚拟化技术日益普及的今天&#xff0c;定制化的虚拟机镜像对于满足特定需求显得尤为重要。Virt-Manager是一个强大的工具&#xff0c;可以帮助用户轻松地创建和管理虚拟机镜像。本文将指导您如何使用Virt-Manag…

istio 限流

#详细参数看官网&#xff0c;我参数就不解释https://istio.io/latest/docs/reference/config/networking/destination-rule/cat << EOF > dr.yaml apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata:name: my-testnamespace: demon spec:hos…

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现

盘点本年度探索对外服务的百万请求量的API网关设计实现 背景介绍高性能API网关API网关架构优化多级缓存架构设计多级缓存富客户端漏斗模型数据读取架构 异步刷新过期缓存网关异步化调用模型高性能批量API调用&#xff08;减少对于网关的交互和通信&#xff09;并行调用和请求合…

【论文精读】多模态情感分析 —— VLP-MABSA

Vision-Language Pre-Training for Multimodal Aspect-Based Sentiment Analysis 本篇论文发表于ACL-2022 原文链接 https://arxiv.org/abs/2204.07955 源码 GitHub - NUSTM/VLP-MABSA 模态&#xff1a;图像文本 基于多模态方面的情感分析(MABSA)近年来越来越受到关注。然而&am…

【C/C++ 17】继承

目录 一、继承的概念 二、基类和派生类对象赋值转换 三、继承的作用域 四、派生类的默认成员函数 五、继承与友元 六、继承与静态成员变量 七、菱形继承与虚拟继承 一、继承的概念 继承是指一个类可以通过继承获得另一个类的属性和方法&#xff0c;扩展自己的功能&…

Unity3D实现坦克大战

一、效果图演示 二、逻辑剖析 从界面上&#xff1a; 需要一个Canvas满屏对着用户&#xff0c;该Canvas上展示用户的游戏数据&#xff0c;比如血条。需要一个Canvas放在蓝色坦克上方&#xff0c;也需要实时对着用户&#xff0c;显示敌人的血条信息两个坦克一个平面Plane放草地…

全球5大住宅代理IP服务商测评对比

住宅IP代理为跨境出海用户提供了更加多元、安全和高效的网络访问体验。住宅代理服务使用真实的住宅IP地址&#xff0c;而这些IP地址通常最接近于海外个人家庭用户&#xff0c;从而减少了被封锁或标记为可疑流量的可能性&#xff0c;对于部分跨境电商平台账号&#xff08;如亚马…

Unity动画循环偏移的使用

最近项目中有一个需求是做煤矿中猴车的动画&#xff0c;动画本身不复杂&#xff0c;但是猴车很多&#xff0c;怎么能简化工作量呢&#xff1f; 首先单个猴车的动画循环是必须要做的&#xff0c;重点是怎么让不同的猴车动画按顺序错开&#xff0c;研究了以下&#xff0c;可以通过…

Docker Dockerfile

1、概念介绍 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 每条保留字指令都必须为大写字母且后面要跟随至少一个参数 指令按照从上到下&#xff0c;顺序执行 #表示注释 每条指令都会创建一个新的镜像层并对镜像进…

[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站

在这个以数据和智能为核心的时代&#xff0c;掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义&#xff1a;一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起&#xff0c;GPT Boss团队便投身于人工智能领域&#xff0c;将OpenAI的GPT模型带给…

《Linux C编程实战》笔记:有名管道

管道的一个问题就是没有名字&#xff0c;因此只能用于有亲缘关系的进程间通信。 有名管道(named pipe或FIFO)它提供一个路径名与之关联&#xff0c;以FIFO的文件形式存储于文件系统中。有名管道是一个设备文件&#xff0c;因此&#xff0c;即使进程与创建FIFO的进程不存在亲缘…