目录
概念
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
为什么引入线程?
首先我们引入了进程这个概念,虽然进程有利于资源的管理和保护。然而在实际应用中,进程有这样的问题:
1. 进程切换的代价、开销比较大;
2. 在一个进程内也需要并行执行多个程序,实现不同的功能。
3. 进程有时候性能比较低。
线程的属性
- 有标识符ID
- 有状态及状态转换,所以需要提供一些状态转换操作
- 不运行时需要保存上下文环境,所以需要程序计数器等寄存器
- 有自己的栈和栈指针
- 共享所在进程的地址空间和其它资源
进程与线程区别
- 定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。(进程可以创建多个线程)
- 角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是CPU调度的单位。
- 资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
- 独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
- 开销方面。进程切换的开销较大。线程相对较小。
进程调度的方式
非剥夺方式
分派程序一旦把处理机分配给某进程,便一直执行下去,直到完成或者阻塞。
剥夺方式
当进程正在运行时,系统可以依据某种原则剥夺它的处理机,分派给其他进程。
剥夺原则:优先级原则、短进程优先原则、时间片轮转原则等。
进程调度算法
先进先出
总是把处理机分派给最先进入就绪队列的进程,之后以非剥夺方式执行进程。
最短cpu运行期优先调度算法
就是短作业优先的原则,把处理机分派给cpu执行期最短的进程。
时间片轮转
简单轮转法,系统中的就绪进程按照先进先出的规则排队,按一定时间间隔把处理机分配给队列中的进程,这样就绪队列中的进程均可获得一个时间片。
多级反馈队列
将系统中的进程分为若干类,每类为一级,每一级设置一个队列,赋予每个队列不同的优先级。