浅谈进程与线程

文章目录

  • 一. 进程
    • 🍎什么是程序?什么是进程?
    • 🍋程序的并发性和并行性
    • 🍉进程诞生的原因
    • 🍑PCB
  • 二. 线程
    • 🍥什么是线程?
    • 🍦为什么引入线程?
  • 三. 进程与线程的区别与联系

一. 进程

🍎什么是程序?什么是进程?

程序:程序是一系列有序指令的集合,用于告诉计算机要执行何种操作及操作的先后顺序。这些指令包括进行各种计算、数据处理、输入输出等操作,用来完成特定的任务或解决特定的问题。
进程:进程从不同的角度可以有不同的定义。(1) 进程可以认为是程序的一次执行(2) 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配的基本单位。

程序 VS 进程

  • 进程是一个正在执行的程序,它有一定的生命周期,包括进程的创建、调度、销毁,具有动态性。
  • 程序相当于一个可执行程序,是一组有序指令的集合,它存放在某种介质上,一个没有执行的程序本质上并不具有活动性,是静态的。

🍋程序的并发性和并行性

程序的并行性是指两个或多个程序在同一时刻处于运行状态。如:在一条同向多车道的公路上,同一时刻可以有多辆车经过同一个地点。
程序的并发性是指两个或多个程序在同一时间间隔内发生。如:在一条单车道的公路上,若有多辆车想经过一个地点,只能按照一定的顺序依次通过。

🍉进程诞生的原因

早期的操作系统都属于单核CPU,这意味着计算机在同一时刻只能同时运行一个程序,且只有一个程序运行结束后后面的程序才能依次执行。

为了解决多个程序需要并发执行的问题,操作系统引入了进程的概念,在操作系统中每个正在运行的程序都被抽象成“进程”的概念,每个创建的进程都有一个对应 进程控制块(PCB process control block),PCB中含有一些特定的属性,当一个进程在运行过程中出现了优先级更高的进程,则当前程序所有运行的状态都通过PCB进行保存,等到进程下次执行就会恢复原先在状态,以此实现对多个进程的调度。

由于操作系统对进程调度的速度很快,多个进程在一段小的时间间隔内被调度了非常多次,因此在宏观上属于“并行执行”;而在微观的角度上,单核CPU的计算机在一个时刻只能运行一个进程 ,多个进程是依次进行执行的,因此在微观上属于“并发执行”。

🍑PCB

前面说到了每个进程都有一个PCB,用于描述一个进程,因此PCB本质上就代表了一个进程,它相当于C语言中的结构体或Java中的类,PCB中主要的属性如下:

  • pid:进程的身份标识,每个进程在同一时刻都有一个唯一pid;一个应用程序的执行可能包含多个进程,即有多个pid
  • 一组内存指针:描述了一个进程所分配的内存空间在哪些位置,每一块内存空间具体的作用:如存储程序执行的二进制指令和执行指令所需的数据、程序执行产生的临时数据等。
  • 文件描述符表:描述了一个进程所持有的硬盘资源,由于数据在硬盘上以文件的形式来表示和操作,因此文件描述符表描述了进程关联了哪些文件,能够操作你想想文件。
  • 进程状态:描述了一个进程当前的状态,如运行状态、就绪状态、阻塞等待状态等。
  • 进程优先级:决定了进程执行的先后顺序。
  • 上下文:保存进程当前运行的状态,以便后续的恢复和执行。
  • 记账信息:记录了当前进程执行的时间、占用的CUP情况,作为操作系统调度的依据,避免因为一个进程优先级过低而出现线程“饿死”的情况。

二. 线程

🍥什么是线程?

线程是一个比进程更小的基本单位,一个进程可以有多个线程,而一个线程只能存在于一个进程当中。线程是系统调度的基本单位,也称作“轻量级进程”

🍦为什么引入线程?

这里先说结论:

  • 创建进程的系统开销比线程大。
  • 销毁进程消耗的时间比线程多。
  • 调度进程的时间开销比线程大。

进程相比于线程的劣势:

  • 一个应用程序的执行可能需要创建多个进程,这多个进程间有时需要进行数据的交换和进程的切换以共同完成某个功能,由于每个进程都拥有各自的PCB,即拥有各自独立的内存空间、硬件资源、文件描述符表等,因此如果频繁地对进程调度会产生大量的时间开销。
  • 如果在一段时间内,系统上有较多的应用程序需要同时运行,操作系统就需要在剩余资源中寻找合适大小的位置并分配;进程结束时再分别进行回收,因此效率较低。

引入线程的优势:

  • 一个进程创建时可以预先申请一块较大且合适的资源,进程创建时至少拥有一个线程,当需要完成某个功能时,可以在进程中分配已有资源,直接创建新的线程,其中每个线程拥有各自PCB,包括状态、优先级、上下文等。当系统进行调度时,不需要切换进程,只需在当前进程保存线程的部分信息,因此大大提高了系统调度的效率。
  • 线程间共用进程的内存空间和硬件资源等,创建线程时不需要重新申请,因此创建/销毁的效率更高。

三. 进程与线程的区别与联系

概念上:进程是系统资源分配的基本单位,线程是系统调度的基本单位。

包含关系:一个进程可以包含多个线程,而一个线程只能从属于一个进程。

拥有资源:每个进程拥有独立的内存空间和其他资源,而多个线程共享进程内的资源。

独立性:每个进程拥有独立的资源,因此多个进程间的信息不能被直接访问,进程间的运行一般不会相互影响;线程共享进程的资源,多个线程可能因为资源的争抢产生死锁等问题。

上下文切换:进程间拥有独立的资源,因为进程间切换需要保存和加载上下文信息,因此系统开销较大;线程共享进程的内存和资源,因此线程间切换开销较小。


以上就是本篇文章的全部内容了,如果这篇文章对你有些许帮助,你的点赞、收藏和评论就是对我最大的支持。
另外,文章可能存在许多不足之处,也希望你可以给我一点小小的建议,我会努力检查并改进。

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

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

相关文章

HarmonyOS 设备管理开发:USB 服务开发指导

基本概念 USB 服务是应用访问底层的一种设备抽象概念。开发者根据提供的 USB API,可以获取设备列表、控制设备访问权限、以及与连接的设备进行数据传输、控制命令传输等。 运作机制 USB 服务系统包含 USB API、USB Service、USB HAL。 图 1 USB 服务运作机制 ●…

【SpringBoot3+Vue3】五【完】【实战篇】-前端(配合后端)

目录 一、环境准备 1、创建Vue工程 2、安装依赖 2.1 安装项目所需要的vue依赖 2.2 安装element-plus依赖 2.2.1 安装 2.2.2 项目导入element-plus 2.3 安装axios依赖 2.4 安装sass依赖 3、目录调整 3.1 删除部分默认目录下文件 3.1.1 src/components下自动生成的…

JeecgBoot3.5漏洞升级—快速文档

近几年来,黑客攻击行为呈现出日益复杂和隐蔽的趋势,对个人和组织的安全造成了严重威胁。黑客们不断寻找新的漏洞和安全漏洞,利用各种手段进行网络攻击,包括恶意软件、网络钓鱼、勒索软件等。因此,我们每个人都需要关注…

Windows系统下载并安装 Windows PowerShell

PowerShell下载地址 一 windows7 版本 **若要确定您正在使用的 Microsoft PowerShelll 版本,请在 Windows 7 或 Windows Server 2008R2 或 Windows Server 2012 计算机上执行以下操作: 单击“开始”,单击“所有程序”,单击“附件”,单击“Windows PowerShell”,然后单击…

渲染农场渲染一分钟动画需要多少钱?需要渲染多少时间?

现在很公司都开始使用渲染农场渲染动画,但是还是有很多人不知道渲染农场渲染动画需要多少钱,需要渲染多少时间。在这篇文章中我们将为你一一解答,为你提供一个清晰的参考。 渲染农场的收费通常是按照渲染的使用时间收费,渲染十分…

华大基因助力乌兹别克斯坦精准医学发展,共筑健康丝绸之路

今年上半年,中国与中亚五国元首齐聚陕西西安,举办中国-中亚峰会。过去的20年里,中国已经成为中亚国家的主要投资来源国,总投资额接近400亿美元。乌兹别克斯坦是中国-中亚合作机制的重要参与者,乌…

elasticsearch命令大全

1、查询全部索引 GET /_cat/indices?v2、要按文档数对所有索引进行降序排序 GET /_cat/indices?v&hindex,docs.count&sdocs.count:descv:参数用于显示列标题 h:参数用于指定要显示的列 s:参数用于指定按哪一列进行排序 desc&…

CAD随机多面体_圆柱试件3D插件

插件介绍 CAD随机多面体_圆柱试件3D插件可用于在AutoCAD软件内生成随机三维多面体及外侧圆柱体试件。插件可确保多面体之间不发生干涉,且多面体与外侧圆柱体试件之间保持适配关系,确保生成的模型导入有限元软件后几何合理有效。本插件主要可应用于三维混…

讲概念谈愿景AI Agent名不副实?看实在智能RPA Agent智能体如何落地!

OpenAI在首届开发者大会上推出了GPTs和Assitant API,不仅改写了AI Agent的构建范式,也把AI智能体的应用推向一个新高潮。GPTs和GPT商店,使得用户无需编码通过自然语言就能创建并拥有多个专属私人助理,且可以如在苹果应用商店一样在…

开发教育APP的意义

开发教育APP的意义有以下几点: 促进教育资源发挥效果:通过教育APP软件开发,可以让现代教育资源有效合理的进行利用,并且能够更进一步的提升发挥功能,促进教育资源全面发挥其具体作用和效果,从而提升教育行…

3.3.1详解linux内核链表list_head及其接口应用

文章目录 1 list定义2 list接口2.1 list初始化方法1:定义并初始化链表方法2:先定义再初始化链表2.2 list_add2.3 list_del2.4 list_replace2.5 list_move2.6 list_splice3 list遍历3.1 list_entry3.2 list_first_entry3.3 list_last_entry3.4 list_first_entry_or_null3.5 li…

Y-MODEM协议定制上位机

最近在使用N32G031和STM32F10X系列单片机进行IAP,使用的是Ymodem协议。单片机上的软件已经完成了,一般是使用secureCRT这样的工具作为上位机来进行测试,后来想做一个定制化的简单的上位机。在网上找了下资料,以下这篇文章写的使用…

浅谈安科瑞无线测温设备在挪威某项目的应用

摘要:安科瑞无线温度设备装置通过无线温度收发器和各无线温度传感器直接进行温度值的传输,并采用液晶显示各无线温度传感器所测温度。 Absrtact:Acre wireless temperature device directly transmits the temperature value through the wireless temp…

基于51单片机倾角MPU6050老人跌倒远程GSM短信报警器+源程序

一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPU6050角度值送到液晶1602显示。 3、红外传感器检测心率。 4、跌倒远程GSM报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void LCD_Init() //初始化液晶时间显示 { write_com…

yarn:无法加载文件 C:\Users\***\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

原因:PowerShell 脚本的执行有着严格的安全策略限制! 解决方案:管理员身份启动Windows PowerShell 在命令行中输入set-ExecutionPolicy RemoteSigned 再使用yarn就可以了

SQL常见函数整理 _ LAG() 向上偏移

1. 用法 窗口函数,用于访问窗口中当前行之前的行的数据。该函数可以根据需要计算当前行之前的值,使我们能够轻松地比较不同行之间的差异和变化。 2. 基本语法 LAG(column, offset, default_value) OVER (ORDER BY column)column:代表在返回…

【UE5】资源(Asset)

了解UE游戏的基本构成 资源(Asset): 在UE中,资源(Asset)是指游戏中使用到的各种素材,例如模型、纹理、材质、声音、动画、蓝图、数据表格、关卡等(通常以uasset结尾),他…

Java shiro框架,切换身份后刷新subject的用户属性

/*** title 切换身份,登录后,动态更改subject的用户属性* param principal* desc principal为用户的认证信息*/ public static void reloadAuthorizing(User principal) throws Exception{Subject subject SecurityUtils.getSubject();String realmNam…

如何在springboot项目中使用minio上传下载删除文件

引入maven依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency>申请 bucket | access_key | secret_key 项目中配置相关参数 mini…

ROLLUP 的几点说明(十七)

ROLLUP 最根本的作用是提高某些查询的查询效率&#xff08;无论是通过聚合来减少数据量&#xff0c;还是修改列顺序以匹配前缀索引&#xff09;。因此 ROLLUP 的含义已经超出了“上卷”的范围。这也是为什么在源代码中&#xff0c;将其命名为 Materialized Index&#xff08;物…