进程和线程的区别
进程 process
什么是进程
一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位 进程与程序的差别
- 进程是一个动态的概念,而程序只是一组指令。
- 不同的进程可以执行同一个程序
- 每个进程都有自己的生命周期
- 进程之间存在并发性
- 进程间会相互制约 在资源方面或者运行调度方面
- 进程可以创建子进程,程序不能创建子程序
- 从结构上讲,每个进程都由程序、数据和一个进程控制块(Process Control Block, PCB)组成
所以进程具有以下特征:
- 动态特征:进程对应于程序的运行,动态产生、消亡,在其生命周期中进程也是动态的、
- 并发特征:任何进程都可以同其他进程一起向前推进
- 独立特征:进程是相对完整的调度单位,可以获得CPU,参与并发执行
- 交往特征:一个进程在执行过程中可与其他进程产生直接或间接关系
- 异步特征:每个进程都以相对独立、不可预知的速度向前推进
- 结构特征:每个进程都有一个PCB作为他的数据结构
进程的运行状态
运行态:进程正在运行,也即是cpu正在它身上。
就绪(等待)态:进程可以运行,已经处于等待队列中,也就是说调度类下次可能会选中它
睡眠(阻塞)态:进程睡眠了,不可运行。
各状态之间的转换方式为:(也许可能不太好理解,可以结合稍后的例子) (1)新状态->就绪态:当等待队列允许接纳新进程时,内核便把新进程移入等待队列。 (2)就绪态->运行态:调度类选中等待队列中的某个进程,该进程进入运行态。 (3)运行态->睡眠态:正在运行的进程因需要等待某事件(如IO等待、信号等待等)的出现而无法执行,进入睡眠态。 (4)睡眠态->就绪态:进程所等待的事件发生了,进程就从睡眠态排入等待队列,等待下次被选中执行。 (5)运行态->就绪态:正在执行的进程因时间片用完而被暂停执行;或者在抢占式调度方式中,高优先级进程强制抢占了正在执行的低优先级进程。 (6)运行态->终止态:一个进程已完成或发生某种特殊事件,进程将变为终止状态。对于命令来说,一般都会返回退出状态码