目录
1.1 先来先服务 first-come first-serverd(FCFS)
1.2 短作业优先 shortest job first(SJF)
1.3 最短剩余时间优先 shortest remaining time next(SRTN)
1.4 最高相应比优先 highest response ratio next(HRRN)
进程与线程
1. 进程
进程是具有独立功能的程序在某个数据集合上的一次运行活动,是系统进行资源分配的独立单位。
- 进程是资源分配的基本单位。
- 进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。
- 进程控制表:所有进程的 PCB 集合,上限即为操作系统的并发度。
多道程序设计:允许多个程序同时进入内存并运行,其目的是为了提高系统效率
下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。
程序的一次执行过程
是正在运行程序的抽象
将一个CPU变成多个虚拟的CPU
系统资源以进程为单位分配,如内存、文件、 ……每个具有独立的地址空间
操作系统将CPU调度给需要的进程
2. 线程
线程是进程中的一个运行实体,是 CPU 独立调度的基本单位。
一个进程中可以有多个线程,它们共享进程资源。
Word 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。
Word 中同时运行 I/O 线程(保持输入)、排版线程(输入后进行相应的排版)和保存线程(实现每隔一段时间自动保存)。
- 线程之间相互通信无需调用内核(同一进程内的线程共享内存和文件)。
- 同一个进程的线程之间共享所在进程的地址空间和其他资源
- 同进程一样,线程也可以创建与撤销另一个线程。
3. 区别
Ⅰ 拥有资源
进程是资源分配的基本单位,线程不拥有资源,但可以访问隶属进程的资源。
Ⅱ 调度
线程是 CPU 独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。
Ⅲ 系统开销
由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。
Ⅳ 通信方面
线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。
进程状态的切换
- 就绪状态(ready):已具备运行条件,但由于没有空闲 CPU 而暂时不能运行,等待被调度
- 运行状态(running): 占有 CPU,并在 CPU 上运行
- 阻塞状态(waiting):等待某一事件(如等待读盘结果)而暂时不能运行,等待资源
应该注意以下内容:
- 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。
- 阻塞状态是缺少需要的资源或需要等待某一事件的结果从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。
- 状态的改变就是PCB从一个进程队列进入另一个进程队列的过程
其他状态:
- 创建态:已创建进程并分配了PID、PCB,但因资源有限而未执行
- 终止态:数据记录,资源回收
- 挂起态:过载时需进行负载调节,会将内存空间收回映像暂时写入磁盘
进程调度算法
- CPU 调度:控制、协调多个进程对 CPU 的竞争,按一定的调度算法从就绪队列中选择一个进程。
- 系统场景:N 个进程、M 个 CPU
- 衡量指标:吞吐量、周转时间、响应时间、CPU 利用率、等待时间
不同环境的调度算法目标不同,因此需要针对不同环境来讨论调度算法。
1. 批处理系统
批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。
1.1 先来先服务 first-come first-serverd(FCFS)
按照进程就绪的先后顺序进行调度,非抢占,公平,实现简单。
有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长,即平均周转时间过长。
1.2 短作业优先 shortest job first(SJF)
按估计运行时间最短