面试题:线程与进程区别
本文转自我的另一个公众号:爽哥玩编程
线程与进程
今天在牛客网上看面经,看到了这个题目。线程和进程在学习操作系统时,是必学的科目之一。但是往往第一眼看上去,都会有点懵。今天整理一篇短文章,来写一下线程和进程的区别。
根据我的理解,画了一幅图。
首先我们需要明白的是进程 > 线程 (虽然并不严谨,但是可以这样认为)
用一句专业术语来描述他们之间的区别:进程是CPU资源分配的最小单位,线程是CPU调度的最小单位
我在知乎上看到了一个匿名用户很好的比喻:
但是我们到底要怎么去跟面试官说清楚呢?
其实大家可以总结一下:
进程
一个进程就是CPU执行的单个任务的过程,是程序在执行过程当中CPU资源分配的最小单位,并且进程都有自己的地址空间,包含了运行态、就绪态、阻塞态、创建态、终止态五个状态。
线程
线程是CPU调度的最小单位,它可以和属于同一个进程的其他线程共享这个进程的全部资源
两者之间的关系
一个进程包含多个线程,一个线程只能在一个进程之中。每一个进程最少包含一个线程。
两者之间的区别
其实最根本的区别在刚开始就说了:进程是CPU资源分配的最小单位,线程是CPU调度的最小单位
进程之间的切换开销比较大,但是线程之间的切换开销比较小。
CPU会把资源分配给进程,但是线程几乎不拥有任何的系统资源。因为线程之间是共享同一个进程的,所以线程之间的通信几乎不需要系统的干扰。
今天就说这么多了,日后会把自己看到的面试题都分享出来,文字很简短,对阅读比较友好。
希望你看完能点个赞!