为什么校招面试中总被问“线程与进程的区别”?我该如何回答?_AI科技大本营-CSDN
博客
作者| 宇宙之一粟
责编| 徐威龙
出品| AI 科技大本营rgznai100
进程与线程Process vs. Thread
面试官正襟危坐中给我说说“线程”与“进程”吧。
我总是不太聪明的样子“限乘”、“进什么城程”
面试官“操作系统中的进程与线程你回去了解一下。门在左边记得关门。”
当翻译过来后这两个概念都带了个“程”字但进程的英文Process 而线程的英文Thread 好像并没有什么联系。
大多数初学者一开始都会被这两个概念弄的晕头转向包括我本人。
当你看完这篇文章可能你就有了新的理解。
不信你接着往下看看。
进程和线程基础理论概念
1. 定义
看了下面的定义可能会有点晕但我还是要把他写下来为了严谨。
进程是资源CPU、内存等分配的基本单位具有一定独立功能的程序关于某个数据集合上的一次运行活动进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体是独立运行和独立调度的基本单位CPU上真正运行的是线程。线程自己基本上不拥有系统资源只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈) 但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
2.区别
进程是资源分配的基本单位线程是程序执行的基本单位。
进程拥有自己的资源空间没启动一个进程系统就会
为它分配地址空间而线程与CPU资源分配无关多个线程共享同一进程内的资源使用相同的地址空间。
一个进程可以包含若干个线程。
3. 优劣
正是因为这二者有区别所以带来的各自的优劣
线程之间的通信更方便同一进程下的线程共享全局变量、静态变量等数据而进程之间的通信需要以通信的方式Inter Process Communication IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
线程的调度与切换比进程快很多同时创建一个线程的开销也比进程要小很多。
但是多进程程序更健壮多线程程序只要有一个线程死掉整个进程也死掉了而一个进程死掉并不会对另外一个进程造成影响因为进程有自己独立的地址空间。
除此之外推荐看一下阮一峰的一篇博客进程与线程的一个简单解释用图解释十分生动形象。
为什么这个问题是面试高频
既然这个问题是面试当中会被经常问到的所以我去网上一个答案背出来不就好了。
但是真的背答案就可以了吗
我们来分析一下为什么众多面试官老是问这个问题他应该并不是想听到一个对书本上概念的重复。
那么他究竟想考什么
侧重点一面试官想要了解面试者对这一知识点的理解程度因为这是操作系统中不得不提的一个概念。如果这个概念回答不上来意味着面试者对操作系统的学习并不深。
侧重点二面试官可以对你的回答作进一步展开通过你的回答某个侧重点方向来进一步提问你对你自己回答的理解。这个高频问题的价值所在。
进程间通信 共享内存
比如
当你回答到进程与线程的内存结构不同。进程与进程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。