线程和进程的区别(线程和进程的区别是什么)

线程和进程的区别(线程和进程的区别是什么)

线程和进程的区别(线程和进程的区别是什么)

作者|宇宙中的米勒之一

编辑|许

| AI技术大本营(rgznai100)

进程和线程?(进程vs .线程?面试官:说说“线程”和“过程”吧。

我(总是不太聪明):“有限乘法?”“你会进入哪个城市(旅程?”

面试官:“回去了解一下操作系统中的进程和线程。门在左边,记得关好。”

线程和进程的区别(线程和进程的区别是什么)

翻译过来,这两个概念都有“process”这个词,但是Process的英文和Thread的英文好像没有关系。

大部分初学者一开始都会被这两个概念搞糊涂,包括我自己。

线程和进程的区别(线程和进程的区别是什么)

看完这篇文章,你可能会有新的认识。

如果你不相信我,继续往下看。

线程和进程的区别(线程和进程的区别是什么)

和线程基础(理论概念)

1.定义

看完下面的定义可能会有点晕,但还是要写下来(为了严谨)。

进程是资源分配(CPU、内存等)的基本单位。).具有某些独立功能的程序是数据集上的运行活动。进程是系统中用于资源分配和调度的独立单元。线程是一个进程的实体,是独立运行、独立调度的基本单位(真正在CPU上运行的是线程)。基本上,一个线程并不拥有系统资源,只是拥有一些运行所必需的资源(比如程序计数器、一组寄存器和堆栈),但它可以与属于同一进程的其他线程共享一个进程所拥有的所有资源。2.差异

流程是资源配置的基本单位;它是线程程序执行的基本单位。

进程有自己的资源空 room。如果某个流程未启动,系统将为其分配地址空 room。线程与CPU资源分配无关。多个线程在同一个进程中共享资源,使用同一个地址空。

一个进程可以包含几个线程。

3.优点和缺点

正是因为两者的不同,才带来了各自的优缺点。

线程之间的通信更加方便。同一进程中的线程共享全局变量、静态变量等数据,而进程间的通信需要通过进程间通信(IPC)的方式进行。但是,如何处理同步和互斥是编写多线程程序的难点。

线程的调度和切换比进程快得多,创建一个线程的开销也比进程小得多。

然而,多进程程序更健壮。多线程程序只要有一个线程死了,整个进程就死了,一个进程的死不会影响到另一个进程,因为进程有自己独立的地址空。

另外推荐看一下阮一峰的博客:流程和线程的简单讲解,非常生动形象。

线程和进程的区别(线程和进程的区别是什么)

为什么这个问题是面试频率?

由于这个问题在面试中经常被问到,我就在网上找个答案背一下。

然而,你真的能背出答案吗?

我们来分析一下为什么很多面试官总是问这个问题。他应该不想听到书中重复这个概念。

那么,他想测试什么呢?

焦点一:面试官想知道面试官对这个知识点的理解程度(因为这是操作系统里不得不提的概念)。如果这个概念不能回答,说明面试官对操作系统了解不多。焦点二:面试官可以进一步展开你的回答,通过你回答的某个焦点方向,进一步询问你对自己回答的理解。(这个高频问题的价值在于)。例如:

当你回答:进程和线程的内存结构是不一样的。进程不能共享内存,但线程可以。然后面试官可以问一些关于记忆的深度问题——记忆是如何解决的?

当你回答:线程间通信方便,进程间通信不方便。那么问题又来了。告诉我进程之间如何通信。进程之间的通信方式有哪些?不同的沟通方式各有什么优缺点?

线程和进程的区别(线程和进程的区别是什么)

比较满意的答案?

如何回答,才能展现一个让面试官更满意的答案?

这里要用到张三丰教张无忌的太极传的那一招——算了。。。

是啊,把上面的概念都忘了吧。只留下一个目的:“战胜敌人”。

最后用自己的一招一式(理解)来回答。

线程和进程的区别(线程和进程的区别是什么)

论“过程”与“线索”(口语表达)

进程的本质:正在执行的程序,可以比作容器或工厂。

线程和进程的区别(线程和进程的区别是什么)

通过上图,方便我们理解和记忆:

相对独立于过程。

一个进程可以包含几个或数百个正在运行的线程。

内存(逻辑内存)包含在进程中,每个进程的内存都是相互独立的。但是从更高的层面来说,不同的进程也共用一个巨大的空 room,这个空 room就是整个电脑。

进程共享文件/网络句柄,因此它们可以打开相同的文件并获取相同的网络端口。

从不同的角度来看这个过程:

线程和进程的区别(线程和进程的区别是什么)

线程的本质:真正运行的是一个个线程。

线程和进程的区别(线程和进程的区别是什么)

同理,从上图我们知道,该线程包含:

堆栈:主线程的主函数,函数调用的参数和返回地址,局部变量等内容都会被推入堆栈。

PC(程序计数器):程序计数器,PC的指针指向代码所在的内存地址。

TLS(线程本地存储):分配内存和存储变量。

以上述问题作为引子,面试官可以引出更多的话题:

1.如何沟通(交流)的内容

沟通是人类的基本需求,进程之间是相互独立的,也有沟通需求。根据这个问题,你可以就内容提问:

进程/线程如何通信?

答:进程可以通过管道、套接字、信号交互、共享内存、消息队列等进行通信。线程本身共享内存,指针指向相同的内容,因此交互很容易。

通信方式有什么区别,比如进程和消息队列之间的共享内存?

2.如何同步(协调)内容

一旦有了交流,人与人之间就会产生冲突,过程也是如此。这些矛盾会体现在如何同步上。

在单个CPU下,实际上任何时候只能执行一个进程。而其他进程处于非执行状态。我们如何确定在任何时候哪个进程会执行,哪个不会执行?这就引出了锁的概念。(如何安排流程?)

线程之间的关系是合作的。既然是合作,就要有一些约定好的规则,否则合作就会出现问题。(如何同步线程?)

3.与记忆原理相关的问题。

进程需要分配内存,所以开销非常大。进程只需要分配栈,只需要分配一台PC,内存开销小。

这个块可以问一下操作系统中内存的原理。

线程和进程的区别(线程和进程的区别是什么)

摘要

总之,如果你知道以上所有,你肯定不怕被问(请接受我的膝盖,大哥);如果你看完这篇文章能给出一个大概的答案,相信面试官会饶了你。毕竟我们真的不是代言机器。所以在回答的过程中,尽量不要给自己挖坑,用自己理解的知识点来回答。

不要给出背书式的回答,模棱两可,因为面试官几把连环枪很容易暴露问题。

注意,该敲黑板了。

线程和进程的区别(线程和进程的区别是什么)

流程是怎样的?它指的是运行中的程序。从名字上看,流程就是进行中的流程。一旦一个程序在计算机中运行,它就变成了一个进程。它可以与进程通信、同步和竞争,在某些情况下可能会形成死锁。

那么线索是什么呢?我们知道,进程是一个正在运行的程序,是为了在CPU上实现多通道编程而发明的概念。但是一个进程一次只能做一件事。如果你想同时做两件事,解决方法是线程。它是线程中的执行上下文或执行序列。

最后,祝大家回答愉快!面试!传球!传球!

本文首发于CSDN博客,原文链接:https://blog . csdn . net/Yuzhou _ 1 Shu/article/details/105326063。

线程和进程的区别(线程和进程的区别是什么)

线程和进程的区别(线程和进程的区别是什么)

GitHub标了2000+,如何在30天内完成TensorFlow2.0?

清华周界“基于图神经网络的事实验证”详解|百万人学习AI

百年IBM终于全部在人工智能和混合云!

微软一个人买公司?破解索尼程序,写黑客小说,看他艰苦的程序生活!

机器学习项目模板:ML项目的6个基本步骤

BM、微软、苹果、谷歌、三星……这些区块链的科技巨头已经做了这么多事情了!

本文标题:线程和进程的区别(线程和进程的区别是什么)

本文地址:https://www.xbwxq.com/a/22338.html

本文来自投稿,仅供学习参考!不代表本站立场,该文观点仅代表原作者本人,本站不拥有所有权,不承担相关法律责任。如发现本站有抄袭侵权/违规的内容,请发送邮件至8###7@qq.com举报,一经查实,本站将立刻删除。