进程

进程与线程是操作系统上的概念。
进程是正在运行的程序的实例。

进程的状态

三种状态:running运行, ready就绪, blocking阻塞
image.png
运行和就绪状态的进程可以运行,是否运行取决于CPU分配时间。
阻塞状态的进程就算CPU空闲也不能进行,解除阻塞状态需要一个外部事件,比如磁盘IO返回了结果。

进程通信

管道,消息队列,共享内存,socket走TCP或UDP

线程

线程是CPU工作的最小单位。
线程之间不共享的是:寄存器,PC,栈,线程ID

进程线程区别

从概念角度:进程是由一个个线程组成的。
从效率角度:创建和销毁线程比进程要高效和省空间。
从通信机制:进程之间相互独立,需要更复杂的通信机制。同一个进程的线程们共享一块内存,通信方便。
从程序员角度:进程编程需要处理pid,更复杂
从使用场景:大量计算和IO处理 -> 大量的CPU上下文切换 -> 线程。频繁创建销毁 -> 线程。
追求稳定、安全 -> 进程

虚拟内存

程序的地址空间是虚拟的,不被直接映射到物理内存,而且虚拟地址空间被分割成多块,每块叫一页。
解决了程序所需内存大到物理内存无法容纳的问题。

死锁

进程A锁住了资源1,进程B锁住了资源2,他们互相又想获取对方锁住的资源 - > 死锁