codeegginterviewgroup / CodeEggDailyInterview

码个蛋每日面试题
393 stars 55 forks source link

线程和进程的区别?,为什么不仅仅用进程? #119

Open kukyxs opened 5 years ago

kukyxs commented 5 years ago

进程:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度(若不支持线程机制,进程的系统调度的单位。否则,线程是系统调度的单位)的独立单位。特点:一、进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。二、进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。三、系统资源(如内存、文件)以进程为单位分配。四、操作系统为每个进程分配了独立的地址空间。五、操作系统通过“调度”把控制权交给进程。进程的弊端:一、进程切换的代价、开销比较大。二、在一个进程内也需要并行执行多个程序,实现不同的功能。三、进程有时候性能比较低。(线程的引入为了解决进程的弊端)。

线程:一、有标识符ID。二、有状态及状态转换,所以需要提供一些状态转换操作。三、不运行时需要保存上下文环境,所以需要程序计数器等寄存器。四、有自己的栈和栈指针。五、共享所在进程的地址空间和其它资源。

总结:一、进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。(进程可以创建多个线程)。二、在支持线程机制的系统中,进程是系统资源分配的单位,线程是CPU调度的单位。三、进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。四、进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。五、进程切换的开销较大。线程相对较小。(前面也提到过,引入线程也出于了开销的考虑)。