1.进程基本概述
- 1.1程序与进程
1,程序是数据+指令的有序集合,是一个静态的概念,同时程序可以长期存在系统中;
2,进程是程序运行的过程,是一个动态的概念,在进程运行的过程中,系统会有各种指标来表示当前运行的状态,同时进程会随着程序的终止而销毁,不会永久存在系统中;
3,进程还具有并发性和交往性,这也与程序的封闭性不同。
- 1.2.进程和线程定义
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
- 1.3.进程和线程区别
1、定义不一样,进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程。
2、一个线程只可以属于一个进程,但一个进程能包含多个线程。
3、线程无地址空间,它包括在进程的地址空间里。
4、线程的开销或代价比进程的小。
1.4并发与并行
- 并发:多个任务看起来是同时运行,这是一种假并行CPU在任务中来回切换);
- 并行:多个任务是真正的同时运行(并行必须有多核CPU才可以实现);
1.5进程运行的状态
一般来说,进程有三个状态,即就绪状态,运行状态,阻塞状态;
运行态:进程占用CPU,并在CPU上运行;
就绪态:进程已经具备运行条件,但需要等待CPU的调度才可运行;
阻塞态:进程因等待某件事发生而暂时不能运行;
三种状态之间转换分为如下几种情况;
- 运行-->阻塞:进程发生I/O操作,需等待事件,而继续无法执行,则进程由运行状态变为阻塞状态;
- 阻塞-->就绪:进程所等待的事件已经完成,但没办法直接运行,需要进入就绪队列,等待调度;
- 就绪-->运行:运行的进程时间片已经用完,CPU会从就绪队列中选择合适的进程分配CPU;
- 运行-->就绪:
> 1、进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
> 2、当有更高优先级的进程要运行时,该进程需要让出CPU,由运行状态转变为就绪状态; - 就绪态-->阻塞:已经就绪了,跟阻塞毫无关系;
- 阻塞-->运行:阻塞状态结束,它必须进入就绪队列中,然后等待cpu从队列中挑选进程分配资源;
进程的生命周期