进程(process) vs 线程(Thread)

news2025/1/11 22:48:39

文章目录

  • 前言
  • 一、进程(process) vs 线程(Thread)
      • 引用自维基百科
      • 引用自CSDN INCOE AI
      • 引用自 geeksforgeeks
      • OS( Operating System )如何调度线程的
      • 线程锁的核心原理是什么?
  • 总结


前言

🚀 多方面理解进程(process)线程(Thread)

一、进程(process) vs 线程(Thread)

引用自维基百科

进程(英语:process),是指计算机中已执行的程序,曾经是分时系统的基本运作单位。在面向进程设计的系统(如早期的UNIX,Linux 2.4及更早的版本)中,是程序的基本执行实体;在面向线程设计的系统(如当代多数操作系统、Linux 2.6及更新的版本)中,行程本身不是基本执行单位,而是线程的容器。

程序本身只是指令、数据及其组织形式的描述,相当于一个名词,行程才是程序(那些指令和数据)的真正执行实例,可以想像说是现在进行式。若干行程有可能与同一个程序相关系,且每个行程皆可以同步(循序)或异步(平行)的方式独立执行。现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借由时间共享(或称时分复用),以在一个处理器上表现出同时(平行性)执行的感觉。同样的,使用多线程技术的操作系统或计算机体系结构,同样程序的平行线程,可在多CPU主机或网络上真正同时执行(在不同的CPU上)。

引用自CSDN INCOE AI

进程是指正在运行的程序实例。一个进程在执行时,需要占用CPU、内存和其他计算机资源。每个进程都有自己的内存空间、地址空间和数据栈。不同的进程之间相互独立,它们之间不会互相干扰。操作系统负责管理进程,包括进程的创建、调度、运行、结束和资源分配等。在计算机系统中,多个进程可以并行执行,提高了计算机系统的利用率。

引用自 geeksforgeeks

引用自 geeksforgeeks

进程:进程基本上是从就绪状态调度的程序,并且被CPU安排执行。PCB(进程控制块)是进程的概念。进程可以创建其他进程,这些进程称为子进程。进程需要更长的时间来终止,并且是隔离的,这意味着它不与任何其他进程共享内存。进程可以有以下状态:新建、就绪、运行、等待、终止和挂起。

线程:线程是进程的一个部分,这意味着一个进程可以有多个线程,并且这些多个线程被包含在一个进程中。线程有三种状态:运行、就绪和阻塞。

与进程相比,线程终止所需的时间较短,但不像进程,线程不是隔离的。

在这里插入图片描述
Difference between Process and Thread:

S.NOProcessThread
1Process means any program is in execution.Thread means a segment of a process.
2The process takes more time to terminate.The thread takes less time to terminate.
3It takes more time for creation.It takes less time for creation.
4It also takes more time for context switching.It takes less time for context switching.
5The process is less efficient in terms of communication.Thread is more efficient in terms of communication.
6Multiprogramming holds the concepts of multi-process.We don’t need multi programs in action for multiple threads because a single process consists of multiple threads.
7The process is isolated.Threads share memory.
8The process is called the heavyweight process.A Thread is lightweight as each thread in a process shares code, data, and resources.
9Process switching uses an interface in an operating system.Thread switching does not require calling an operating system and causes an interrupt to the kernel.
10If one process is blocked then it will not affect the execution of other processes.If a user-level thread is blocked, then all other user-level threads are blocked.
11The process has its own Process Control Block, Stack, and Address Space.Thread has Parents’ PCB, its own Thread Control Block, and Stack and common Address space.
12Changes to the parent process do not affect child processes.Since all threads of the same process share address space and other resources so any changes to the main thread may affect the behavior of the other threads of the process.
13A system call is involved in it.No system call is involved, it is created using APIs.
14The process does not share data with each other.Threads share data with each other.

机器翻译:

序号进程线程
1进程是正在执行的任何程序。线程是进程的一个片段。
2进程需要更长的时间来终止。线程需要更少的时间来终止。
3创建进程需要更多的时间。创建线程需要更少的时间。
4进程切换也需要更多的时间。线程切换需要更少的时间。
5进程在通信方面效率较低。线程在通信方面更有效率。
6多任务处理涉及到多进程的概念。对于多线程,我们不需要多个程序,因为一个单独的进程就包含了多个线程。
7进程是隔离的。线程共享内存。
8进程被称为重量级进程。线程是轻量级的,因为进程中的每个线程都共享代码、数据和资源。
9进程切换使用操作系统的接口。线程切换不需要调用操作系统,会导致中断到内核。
10如果一个进程被阻塞,它不会影响其他进程的执行。如果一个用户级线程被阻塞,所有其他用户级线程都会被阻塞。
11进程有自己的进程控制块、堆栈和地址空间。线程有父进程的 PCB、自己的线程控制块、堆栈和共同的地址空间。
12对父进程的更改不会影响子进程。由于同一进程中的所有线程共享地址空间和其他资源,因此对主线程的任何更改可能会影响进程的其他线程的行为。
13这涉及到系统调用。线程创建使用 API,无需涉及系统调用。
14进程不共享数据。线程共享数据。

OS( Operating System )如何调度线程的

操作系统调度线程的方式有多种。下面介绍常见的三种调度方式:

  1. 抢占式调度

抢占式调度是指操作系统会在当前线程正在执行时,强制将其暂停并将CPU分配给其他优先级更高的线程。这种调度方式通常用于实时系统,要求线程能够及时响应外部事件或紧急任务,并且不能让某一个线程长时间占用CPU资源。

  1. 协作式调度

协作式调度是指线程会自主地放弃CPU资源,并通知操作系统让其他线程运行。这种调度方式通常用于非实时系统,如桌面应用程序或服务端应用程序,要求线程能够相互协作,优雅地共享CPU资源。

  1. 混合式调度

混合式调度是指操作系统会根据线程的优先级和执行时间等多种因素,综合考虑使用抢占式和协作式两种调度方式。这种调度方式通常用于复杂的应用程序场景,既要满足实时性要求,又要保证线程之间的协作和共享。

线程锁的核心原理是什么?

线程锁的核心原理是控制多个线程之间对共享资源的访问。线程锁通过实现一种互斥机制,来保证同一时刻只有一个线程可以访问共享资源,从而避免多个线程在同一时刻对共享资源进行读写操作导致的数据不一致性和竞争条件等问题。线程锁的实现主要有两种常用的方式:互斥锁和读写锁。互斥锁在同一时刻只允许一个线程访问共享资源,其他线程需要等待该线程释放锁之后才能继续访问;而读写锁则允许多个线程同时读取共享资源,但在写操作时需要独占整个资源。线程锁的使用能够提高程序的安全性和性能,特别是在多线程并发访问共享资源时更为重要。

总结

本文主要介绍了进程和线程的基本概念、区别以及操作系统如何调度线程的方式。同时,还介绍了线程锁的核心原理和实现方式。在多线程编程中,理解进程和线程的概念以及线程锁的使用,对于保证程序的安全性和性能非常重要。

参考 : https://zhuanlan.zhihu.com/p/258049386

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

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

相关文章

gateway网关一直404问题

1.nacos配置管理->配置管理列表-> 有gateway网关的相关配置文件 2. idea项目中添加jar包 3.配置bootstarp.yaml 4. 通过网关访问路径: ip网关端口网关配置服务名字接口

SpringBootWeb案例_02

Web后端开发_05 SpringBootWeb案例_02 1.新增员工 1.1需求 在新增用户时,我们需要保存用户的基本信息,并且还需要上传的员工的图片,目前我们先完成第一步操作,保存用户的基本信息。 1.2 接口文档 基本信息 请求路径&#xff…

前端入门(五)Vue3与TypeScript

文章目录 Vue3简介创建Vue3工程使用vite创建vue-cli方式 常用 Composition API安置项 - setupsetup的执行时机与参数 响应式原理vue2中的响应式vue3中的响应式ref函数reactive函数reactive与ref对比 Vue3简介 Vue3带来了: 1、性能的提升: 打包大小减少…

EDA实验-----正弦信号发生器的设计(Quartus II )

目录 一、实验目的 二、实验仪器 三、实验原理 四、实验内容 五、实验步骤 六、注意事项 七、实验过程(操作过程) 1.定制LPM_ROM模块 2.定制LPM_ROM元件 3.计数器定制 4.创建锁相环 5.作出电路图 6.顶层设计仿真 一、实验目的 学习使用Ver…

不同领域文章一键采集,全网关键词文章采集工具

不同领域的从业者、学生、研究者等都可能需要大量的文章来支持他们的工作和学术研究。然而,手动搜索和整理这些文章费时费力,这个时间大家就会借助全网文章采集工具,只需要输入关键词,就能够采集大量相关文章,为大家提…

利用异或、取反、自增bypass_webshell_waf

目录 引言 利用异或 介绍 eval与assert 蚁剑连接 进阶题目 利用取反 利用自增 引言 有这样一个waf用于防御我们上传的文件: function fun($var): bool{$blacklist ["\$_", "eval","copy" ,"assert","usort…

vue3动态加载音频文件,用于不同场景加载不同的文件

本文主要介绍如何在vue3中动态加载音频文件。 目录 前言静态加载动态加载import函数watch函数使用watch函数和import函数动态加载音频文件 前言 在vue3中,我们通常使用import xxx from xxxxxx来加载文件,但是如果我们需要加载哪些文件,是需要…

如何使用住宅IP配置 Postman

Postman是一个用于方便进行网站测试的HTTP客户端。通过它,用户可以配置不同复杂度的HTTP请求,并将它们保存在数据库中以便将来重复使用。你可以连接代理到Postman,使其在进行测试时变得匿名和更安全。下面将详细说明如何在这个程序中配置代理…

RS-232串口芯片静电保护TVS管选择

RS-232串口芯片静电保护TVS管选择 RS-232接口是现在主流的串行通信接口之一,符合美国电子工业联盟制定的串行数据通信的接口标准,原始编号全称为EIA-RS-232(简称232和RS-232),广泛应用于计算机串行接口外设连接&#…

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题

AI知识库:智能化的知识管理

随着人工智能技术的不断发展,越来越多的企业开始关注如何利用AI技术提升业务运营效率。其中,AI知识库作为一种智能化的知识管理工具,已经在各行各业得到了广泛的应用。接下来就探讨一下AI知识库是如何帮助企业实现智能化知识管理的。 | 一、A…

【Linux】快速上手自动化构建工具make/makefile

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是make / makefile 2…

【Windows】内网穿透实现hMailServer远程发送邮件

目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网…

window环境同时安装python2和python3

背景 在日常环境中,有时候要用到python2写的代码要用Python2执行,有时候python3的代码要用到python3执行.很多人需要同时让Python2和python3的命令都可以用。方便切换环境。 需求 有一些项目需要Python2环境。用的时候就使用 python2 .\1.py 有一些项…

人工智能原理复习--确定性推理

文章目录 上一篇推理概述自然演绎推理合适公式 归结演绎推理归结原理归结反演 提升归结效率下一篇 上一篇 人工智能原理复习–知识表示(二) 推理概述 推理就是按某种策略由已知判断推出另一判断的思维过程 分类: 演绎推理、归纳推理、默…

单页应用的架构与设计:打造高效可扩展的 Web 应用(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

『运行心得』机柜断电事件的排除与解决

本文描述了一起机房机柜断电事件引发的故障排除和解决过程。 当办公楼机房发生断电后,经过排查发现可能是空气开关短路导致。尽管重新合上空气开关后设备恢复正常,但断电事件再次发生,电工怀疑空气开关老化导致电路故障,并将电源…

python 实现链表

链表基础知识 链表是在物理内存中不连续,数据通过链表中的指针来链接到下一个元素。 链表由一系列节点组成,节点在运行时动态生成,节点一般包括两个部分:存储数据的数据域,存储下一个节点的指针域 链表的常用操作&a…

使用Docker安装部署Swagger Editor并远程访问编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

基于pyltp的依存句法分析

代码是两年多前网上找的,能运行。先记在这里,以防以后用到 import os from pyltp import Segmentor, Postagger, Parser, NamedEntityRecognizer, SementicRoleLabeller # pip install pyltp -i https://pypi.tuna.tsinghua.edu.cn/simple 可以先下载好…