进程和线程的区别
1、概念:进程是程序的一次动态执行,而线程是进程中执行的一段程序片段。
2、地址空间和其它资源:进程作为分配系统资源的基本单位,相互之间独立,包括内存空间和上下文环境;而线程作为独立运行和独立调度的基本单位,运行在进程空间内,同一进程的多个线程共享该进程的所有资源,但拥有自己的堆栈空间和执行序列。某进程内的线程在其它进程不可见。
3、调度和切换:线程占有的资源很少,其上下文切换比进程上下文切换更高效,但不利于资源管理和保护,而进程正好相反。
4、通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
在多线程OS中,进程不是一个可执行的实体,而线程是。
多进程和多线程的区别:
用多进程时每个进程都有自己的地址空间,多线程则是共享地址空间。所有其他区别也都由此而来,
1、速度快:线程产生的速度快,因为大部分资源都是共享进程的;线程间的切换速度快,因为线程体积小,只有自己的堆栈空间和执行序列;线程的通信速度快,因为共享内存。
2、资源利用率高:因为共享内存,所以利用率高
3、同步问题:因为共享内存,需要使用同步机制,不利于资源的管理和保护,而进程则相反