进程切换与线程切换的区别?

Fiddler抓包实战:5分钟搞定微信公众号历史消息接口分析(附完整Python代码) 本文详细介绍了如何使用Fiddler抓包工具逆向分析微信公众号历史消息接口,并提供完整的Python代码实现。从环境准备、动态参数捕获到商业级采集系统架构设计,全面解析了突破官方接口限制的技术方案,帮助开发者高效获取公众号文章数据。 阅读详情

注意这个题目问的是进程切换与线程切换的区别,不是进程与线程的区别。当然这里的线程指的是同一个进程中的线程。

这个问题能很好的考察面试者对进程和线程的理解深度,有比较高的区分度。

要想正确回答这个问题,面试者需要理解虚拟内存。

 

虚拟内存解放生产力

对于程序员来说,我们在编程时实际上是不怎么操心内存问题的,对于使用Java、Python、JavaScript等类型语言的程序员来说更是如此,自动内存回收机制的引入使得使用这类语言的程序员几乎完全不用关心内存问题;即使对于编译型语言C/C++来说,程序员需要关心的也仅仅是内存的申请和释放。

总的来说,作为程序员(无论使用什么类型的语言)我们根本就不关心数据以及程序被放在了物理内存的哪个位置上(设计实现操作系统的程序员除外),我们可以简单的认为我们的程序独占内存,比如在32位系统下我们的进程占用的内存空间为4G;并且我们可以申请超过物理内存大小的空间,比如在只有256MB的系统上程序员可以申请1G大小的内存空间,这种假设极大的解放了程序员的生产力。

而这种假设实现的背后功臣就是虚拟内存。

 

什么是虚拟内存

虚拟内存是操作系统为每个进程提供的一种抽象,每个进程都有属于自己的、私有的、地址连续的虚拟内存,当然我们知道最终进程的数据及代码必然要放到物理内存上,那么必须有某种机制能记住虚拟地址空间中的某个数据被放到了哪个物理内存地址上,这就是所谓的地址空间映射,也就是虚拟内存地址与物理内存地址的映射关系,那么操作系统是如何记住这种映射关系的呢,答案就是页表,页表中记录了虚拟内存地址到物理内存地址的映射关系。有了页表就可以将虚拟地址转换为物理内存地址了,这种机制就是虚拟内存。

每个进程都有自己的虚拟地址空间,进程内的所有线程共享进程的虚拟地址空间。

现在我们就可以来回答这个面试题了。

 

进程切换与线程切换的区别

进程切换与线程切换的一个最主要区别就在于进程切换涉及到虚拟地址空间的切换而线程切换则不会。因为每个进程都有自己的虚拟地址空间,而线程是共享所在进程的虚拟地址空间的,因此同一个进程中的线程进行线程切换时不涉及虚拟地址空间的转换。

举一个不太恰当的例子,线程切换就好比你从主卧走到次卧,反正主卧和次卧都在同一个房子中(虚拟地址空间),因此你无需换鞋子、换衣服等等。但是进程切换就不一样了,进程切换就好比从你家到别人家,这是两个不同的房子(不同的虚拟地址空间),出发时要换好衣服、鞋子等等,到别人家后还要再换鞋子等等。

因此我们可以形象的认为线程是处在同一个屋檐下的,这里的屋檐就是虚拟地址空间,因此线程间切换无需虚拟地址空间的切换;而进程则不同,两个不同进程位于不同的屋檐下,即进程位于不同的虚拟地址空间,因此进程切换涉及到虚拟地址空间的切换,这也是为什么进程切换要比线程切换慢的原因。

有的同学可能还是不太明白,为什么虚拟地址空间切换会比较耗时呢?
这也是面试官紧接会问的第二个问题。
关于这个问题的答案,关注公众号“码农的荒岛求生”并回复“地址切换”几个字你就能得到答案啦。

最后,有很多同学问有没有书单,我也仔细回想自己认真读过的计算机书籍,在这里也给出自认为很经典的几本,书单这东西贵精不贵多,我在这里精心挑选了10本 ,不要贪心,如果你真能把这里推荐的 10 本书读通,可以说你已经能超越 90% 的程序员了,供大家参考:程序员必看经典书单
 

总结

虚拟内存是现代操作系统极其重要的一部分,当然在这里限于篇幅我们只能简单介绍,关于虚拟内存的详细讲解见后续操作系统教程,敬请期待 😃

更多计算机内功文章,欢迎关注微信公共账号:码农的荒岛求生。

在这里插入图片描述

计算机内功决定程序员职业生涯高度

ENSP实验一:防火墙基础配置 配置client(内网)、FTP Server(外网)的IP地址。进入防火墙,输入密码:默认为admin@123。 阅读详情

相关推荐

【Tessent Shell Users Manual】【Ch3】Design Introspection and Editing(未完待续)

Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。

Tranquil_ovo的博客 1730

进程切换和线程切换的区别

总的来说,进程切换适用于更大的任务隔离和资源隔离,适合于多个独立任务的并发执行。而线程切换适用于更小的任务划分和资源共享,适合于并发执行相对较小的任务。线程切换通常更高效,因为它涉及的资源开销较少,但进程切换在实现更强大的隔离和安全性方面具有优势。

qq_46130027的博客 1365

Hexo博客使用PDF.js

clone了一个pdf.js 然后兴高采烈地到文章里使用{% pdf %}标签 结果浏览器弹出了个下载框(使用GitHub的raw) 不知道是不是因为使用GitHub的原因导致这个问题 后来我测试的时候报了个错 优快云上的解决方法 到时候我再试试把资源放回lib/里面看看行不行 目录1.clone1.1.官方方法1.2.NexT主题方法1.3.补充2.修改文件2.1.修改viewer.htm...

LTFan 961

linux线程切换和进程切换的方法

进程切换和线程切换在效率上略有不同,相比之下进程切换耗费资源较大,效率要差一些,原因可以参考下面这篇文章 原文链接:https://www.jb51.net/article/102004.htm 进程切换分两步: 1.切换页目录以使用新的地址空间 2.切换内核栈和硬件上下文 对于linux来说,线程和进程的最大区别就在于地址空间,对于线程切换,第1步是不需要做的,第2是进程和线程切换都要...

qq_35939148的博客 4708

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 478

WRF和WPS模型在Ubuntu系统上的安装与常见问题解决指南

本文详细介绍了在Ubuntu系统上安装WRF和WPS模型的完整教程,涵盖系统环境配置、依赖库安装、源代码编译以及常见问题的解决方案。重点解决了WPS编译中intmath.f文件的修改、环境变量设置和编译器兼容性等关键难点,帮助用户高效部署气象研究与预报模型。

weixin_29213525的博客 381

任务切换:进程切换,线程切换的区别

开始之前,我们暂时先简单的定义一个概念,CPU任务,是指在CPU中运行的一段程序。根据任务的大小,粒度不同,一个任务可以是一个进程,一个线程,或者是一个中断处理程序等。 一台冯诺依曼体系结构的计算机是有这五个部门构成:运算器、控制器、存储器、输入设备、输出设备。其中运算器、控制器组成CPU。而输入输出设备和任务切换基本没什么关系,所以可以简单的认为任务切换主要包括CPU切换和内存切换(地址空间)两部分。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设

qq_34999565的博客 2582

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 802

线程的优势和进程的对比

# 线程带来的好处有以下几点 一个进程中可以同时存在多个线程 让进程具备多任务并行处理能力 同进程下的各个线程之间可以共享进程资源 (同进程内的多线程通信十分简单高效) 更轻量与高效 线程带来的坏处有以下几点 因为进程资源共享,所以会产生资源竞争,需要通过锁机制来协同 当进程中的一个线程奔溃时,会导致其所属进程的所有线程奔溃(一般游戏的用户设计不会采用多线程方式) 线程与进程的对比 进程是最小的资源(包括内存、打开的文件等)分配单位,线程是最

xasasaa的博客 1420

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

SAP ABAP Cloud 发展简史

其中用于云开发的 ABAP,官方术语是 「ABAP in the Cloud」,本文后续叙述方便起见,简称为 「ABAP Cloud」. 它涵盖了标准 ABAP 语言范围的一个子集,只能访问受限的 API,用于构建 SAP BTP ABAP 环境以及 SAP S/4HANA Cloud ABAP 环境上的云解决方案。SAP ABAP 平台是用于 SAP ECC、SAP S/4HANA 和 SAP BTP 等产品的技术平台,也是 ABAP 应用程序的开发和运行环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1391

进程切换与线程切换的区别

注意这个题目问的是进程切换与线程切换的区别,不是进程与线程的区别。当然这里的线程指的是同一个进程中的线程。 这个问题能很好的考察面试者对进程和线程的理解深度,有比较高的区分度。 一、虚拟内存解放生产力 对于程序员来说,我们在编程时实际上是不怎么操心内存问题的,对于使用Java、Python、JavaScript等动态类型语言的程序员来说更是如此,自动内存回收机制的引入使得使用这类语言的程序员几乎完全不用关心内存问题;即使对于编译型语言C/C++来说,...

dongcheng_2015的博客 375

华为OD机考双机位A卷 - 流浪地球(Java & Python& JS & C/C++ & GO )

华为OD机考双机位A卷 - 流浪地球(OD上机考试双机位A卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 4039

Linux 进程切换和线程切换的区别分析

HTTP long polling Linux eventfd

cool grass's blog 1857

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

进程线程切换的区别

进程切换和线程切换的主要区别在于开销和实现机制。进程切换需要保存完整的上下文信息(包括内存映射、文件描述符等),涉及地址空间切换和TLB刷新,开销较大(几微秒到几十微秒)。而线程切换只需保存私有寄存器、栈指针等少量信息,共享地址空间避免TLB刷新,开销较小(几百纳秒到几微秒),约为进程切换的1/10到1/100。线程虽高效但需注意同步问题,而进程提供更好的隔离性。选择取决于具体场景对性能和安全性的需求。

2402_83315537的博客 451

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jmeter进程和线程的区别_送命题:进程切换与线程切换的区别

注意这个题目问的是进程切换与线程切换的区别,不是进程与线程的区别。当然这里的线程指的是同一个进程中的线程。这个问题能很好的考察面试者对进程和线程的理解深度,有比较高的区分度。要想正确回答这个问题,面试者需要理解虚拟内存。虚拟内存解放生产力对于程序员来说,我们在编程时实际上是不怎么操心内存问题的,对于使用Java、Python、JavaScript等类型语言的程序员来说更是如此,自动内存回收机制的引...

weixin_35317737的博客 146

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

线程切换和进程切换的区别?_进程与线程的区别与联系

区别:进程:操作系统以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是操作系统资源分配的最小单位。线程:程序执行的最小单位,是操作系统调度(CPU调度)执行的最小单位;拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。进程所维护的是程序所包含的资源(静态资源),如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler等;线程所维护的运行...

weixin_39527879的博客 503

操作系统之进程和线程(二者的区别,进程的状态切换、创建、终止、上下文切换)

1. 进程的概述 ① 进程和线程 进程(Process)是资源分配的基本单位,线程(Thread)是CPU调度的基本单位。 线程将进程的资源分和CPU调度分离开来。 以前进程既是资源分配又是CPU调度的基本单位,后来为了更好的利用高性能的CPU,将资源分配和CPU调度分开。因此,出现了线程。 进程和线程的联系: 一个线程只能属于一个进程,一个进程可以拥有多个线程。线程之间共享进程资源。 进程和...

lucyLee的博客 8524

进程间切换与线程间切换的区别

进程切换分两步1.切换页目录以使用新的地址空间2.切换内核栈和硬件上下文。对于linux来说,线程和进程的最大区别就在于地址空间。对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。所以明显是进程切换代价大线程上下文切换和进程上下文切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的

Alan_Xiang的博客 7604

进程和线程的区别,为什么线程切换代价小?

什么是进程 一个程序一般对应一个进程,每个程序在执行过程中肯定要获得一些资源,一块属于自己的地盘,因此系统就把这些东西划分出来给一个进程,这个程序的所有操作都在进程里完成。进程就相当于一个工厂,不仅有自己的厂房,所需要的物料、机器以及工人和产品等。 因此进程是操作系统进行资源分配和调度的一个基本单位。 什么是线程 一个进程最少有一个线程,线程可以实现把进程所需要执行的工作再次细分的能力。上面把进程比喻成一个工厂,那么线程就是工厂里的一条流水线,多个线程就是多个流水线,这些流水线相互之间独立,拥有自己加工的数

努力!奋斗! 3110

进程上下文切换与和线程上下文切换有什么区别?

1、首先,需要搞明白什么是上下文切换?(面试题) 上下文切换就是从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换之前,会保存上一个任务的状态。 2、 然后,需要明白进程与线程的区别?(网上很多,这里简单说明) 1).线程是进程的一部分。 进程是表示资源分配的基本单位,又是调度运行的基本单位,是程序执行的一个实例; 线程是进程中执行运算的最小单位,即执行处理...

slass-mot-odet 2010

进程上下文切换与和线程上下文切换的区别

1.首先,需要搞明白什么是上下文切换? 上下文切换就是从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换之前,会保存上一个任务的状态。 2. 然后,需要明白进程与线程的区别?(网上很多,这里简单说明) 1).线程是进程的一部分。进程是表示资源分配的基本单位,又是调度运行的基本单位,是程序执行的一个实例; 线程是进程中执行运算的最小单位,即执行处理机调度的...

sanliangGoGoGo 2501

线程上下文切换和进程上下文切换的区别

线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。         另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当

fei的专栏 3485

线程的上下文切换和进程的上下文切换有什么区别?

由于同一进程内的线程共享进程的内存空间,因此在切换线程时不需要重新加载和保存整个进程的内存资源,只需要关注线程的局部数据。每当进程切换时,操作系统需要保存和加载这些完整的资源。总结来说,线程的上下文切换相比进程的上下文切换具有较低的开销,因为线程共享同一个进程的资源,切换时只需要保存和恢复线程的执行状态,而进程切换需要处理更多的资源和环境数据。:线程上下文切换的开销相对较小,因为线程共享进程的内存资源,操作系统只需要保存和恢复线程相关的信息(如程序计数器、寄存器等),不需要重新分配内存或修改内存页表。

qh991207的博客 438

线程与进程的区别与联系,线程状态的切换

操作系统运行一个程序,就开启了一个进程(比如QQ、微信),在进程内部有很多个线程(比如qq的不同功能);进程是操作系统管理资源的基本单位;线程是操作系统调度的基本单位(CPU执行的时间片分配是以线程为基本单位分配。协程:( Java里面没有协程)在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

m0_63432840的博客 622

进程切换与线程切换的区别、虚拟内存

进程切换与线程切换的区别 为什么切换线程比切换进程开销小? 由于保存线程的上下文明显比进程的上下文小,因此系统切换线程时,必然开销更小。 而且进程涉及到虚拟空间,页表的切换

m0_46598535的博客 489
上一篇: 彻底理解操作系统:1,什么是程序?
下一篇: 如何实现一个简单的智能指针
码农的荒岛求生
博客等级 码龄10年 969粉丝 122原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值