一、进程
1.1 进程的概念
是计算机系统进行资源分配和调度的基本单位。在现在的面向线程的计算机结构中,进程是线程的容器。程序是指令、数据及其组织关系形式的描述,进程是程序的实体
一个进程通常有三部分组成:进程控制块PCB、数据、程序
1.2 进程的优势
(1)每个进程相互独立,不影响主程序的稳定
(2)通过增加CPU,可以扩充性能
(3)可以尽量减少线程枷锁、解锁的影响
1.3 进程的劣势
(1)逻辑控制复杂,需要和主程序交互
(2)需要跨进程边界
二、线程
2.1 线程的概念
是程序执行流的最小单位。线程是程序中一个单一的顺序控制流程。进程内一个单独的、可调度的执行单元,是系统独立调度和分配CPU的基本单位。在单个程序中同时运行多个线程完成不同的工作,成为多线程。线程的栈是独立的,堆是共享的
2.2 线程的优势
(1)无需跨进程边界
(2)程序逻辑和控制方式简单
(3)所有线程可以直接共享内存和变量
(4)线程方式消耗的总资源比进程程方式少
2.3 线程的劣势
(1)每个线程与主程序公用地址空间
(2)线程之间的同步和加锁控制麻烦
(3)一个线程的崩溃可能影响整个程序的稳定性
三、区别和联系
(1)资源分配和处理器调度:进程是资源分配的基本单位,线程是处理器调度的基本单位
(2)地址空间:进程拥有独立的地址空间,线程没有独立的地址空间,同一进程内的多个线程共享其资源
(3)执行:一个程序至少有一个进程,一个进程至少有一个线程
(4)线程是操作系统可识别的最小执行和调度单位
(5)资源分配给进程,同一进程中的线程共享该进程的所有资源。同一进程中的所有线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。
(6)CPU分配给线程,即真正在处理器运行的是线程