形象理解
程序
待执行任务的一个作战小队。
不同队伍可能含有的人数是不等的,有的是5人,有的是7人。(战争随时可能发生,时刻准备着)
进程
执行任务的作战小队。
当程序被执行的时候,一个进程就开始执行
线程
执行任务的作战队伍中的每个队员。
每个队伍有一个队长,(每个队员都是一个线程,所以每个进程含有至少一个线程)。
常见问题
进程和线程的包含关系
每个队员都是一个线程,所以每个进程含有至少一个线程
进程是资源的分配单位
执行任务的作战小队是分配弹药的单位,资源共享
线程是调度的基本单位
每个队员有自己的分工,狙击手、医疗兵、侦察员。。。所以任务调度是以每个队员为基本单位(即线程),更加灵活高效
为什么引入线程(线程和进程区别)
-
拥有资源
进程是拥有资源的独立单位,线程一般不拥有自己的资源
-
调度
线程自身不带资源,在同一个进程中的线程切换不会引起进程切换,由一个进程中的线程切换到另一个进程中的线程才会引起进程切换。从而显著地提高系统的并发程度。
-
并发性
引入线程的操作系统,不仅进程之间可以实现并非操作,线程之间也可并发执行,因而提高系统并发性,更有效地使用系统资源和提高系统吞吐量。
-
系统开销
由于创建和撤销进程,系统都要为之分配和回收资源,开销太大。线程切换的开销就远小于进程切换。
以上都可利用作战小队来形象比喻,不多叙述