进程和线程的基本概念
进程, 是指在系统中正在运行的一个应用程序, 程序一旦运行就是进程. 每个进程都有自己独立的一块内存空间, 一个进程可以有多个线程.
线程, 进程内独立执行的一个单元执行流, 负责当前进程中程序的执行, 一个进程中至少有一个线程, 一个进程可以运行多个线程, 多个线程之间可以共享数据.
进程和线程的区别
-
根本区别
进程是操作系统资源分配的基本单位, 而线程是CPU任务调度和执行的基本单位.
-
资源开销
每个进程都有独立的代码和数据空间, 程序之间的切换会有比较大的开销. 线程可以看做是轻量级的进程, 同一类线程共享代码和数据空间, 每个线程都有自己独立的运行栈和程序计数器, 线程之间的开销小.
-
包含关系
一个进程有多个线程, 执行过程不是一条线, 而是多条线共同完成. 线程是进程的一部分, 线程也被成为轻量级的进程.
-
内存分配
同一进程的线程共享本进程的地址空间和资源, 而进程之间的地址空间和资源是相互独立的.
-
影响关系
一个进程崩溃后, 在保护模式下不会对其他进程产生影响, 但是一个线程崩溃后整个进程都会死掉, 所以多进程要比多线程健壮.
-
执行过程
每个独立的进程有程序运行的入口、顺序执行序列和程序出口. 但是线程不能独立执行, 必须依赖于应用程序之中, 由应用程序提供的多个线程执行控制, 两者均可并发执行.