进程 是操作系统资源分配的最小单位
线程 是任务调度和执行的最小单位
开始一个进程时, 一个进程享有独立地址空间, 因此每启动一个进程, 系统就会自动分配地址空间, 堆栈段,代码段,数据段。
同一进程内的线程共享进程中的数据(也造成了线程的调度问题),比如说全局变量,静态变量。而同一进程之间的通信需要以通信(IPC)的方式进行.
因此,切换一个进程花的资源,比切换一个线程大得多。
进程和线程的资源:
一个进程中的线程,共享一个堆。全局堆是没有分配的空间,而局部堆是用户分配的空间。每个线程享有一个栈(stack), stack的寿命随着每个线程的结束而结束。
多进程:
多进程可以在fork()中嵌套一个fork, 而多进程程序更健壮。因为如果进程中一个线程死掉了,那么一个进程可能会受影响。而多个进程互不影响,一个进程的结束并不会影响另一个。只不过在资源配置方面会有所不同。
网友评论