所用教材为:操作系统教程(第5版) 费翔林 骆斌编著
线程及其实现
引入多线程的动机
(1)引入进程是为了程序的并发执行,以改善资源的利用率,提高系统吞吐量
(2)可以看出传统进程既是资源分配的单位,又是调度分派的单位,这使得系统在进程管理调度时的时空开销较大,速度较低。
(3)因此引入线程,将资源分配与调度分派分开,进一步提高系统的并发程度,提高系统的吞吐率和资源利用率。
线程的概念:
(1)把进程的两项概念——“独立分配资源”与“被调度分派执行”分离开
(2)进程不需要频繁地切换
(3)线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。
线程的特点:
(1)线程是进程的一个实体,是比进程更小的能被系统独立调度和分派的j基本单位
(2)线程基本上不拥有系统资源,但可以与统一进程的其它进程共享该进程的全部资源。
(3)同一进程的多个线程间可并发执行,它们之间可存在创建与被创建关系
(4)线程同进程一样,有就绪、阻塞、执行三种基本状态。
多线程结构进程的优点:
(1)快速线程切换
(2)通信易于实现
(3)减少管理开销
(4)并发程度提高
多线程环境中的进程与线程
多线程结构进程定义
(1)进程是操作系统中出处理器外进行的资源分配和保护的基本单位
(2)它有独立的虚拟地址空间,容纳进程映像,并以进程为单位对各种资源实施保护
多线程环境的线程概念
(1)线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。
(2)线程是进程的组成部分,每个进程内允许包含多个并发的实体,这就是多线程
线程的组成
(1)线程唯一标识符即线程状态信息
(2)线程是一条执行路径,有独立的程序计数器;未运行时保护程序上下文
(3)线程有执行栈和存放局部变量的私用存储空间
(4)可访问所属进程的内存和资源,并与该进程中的其他线程共享这些资源。
线程的作用
系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程。
线程的状态
(1)包括运行、就绪、等待和终止。状态转换也类似于进程。
(2)挂起状态对线程是没有意义的
线程的实现
从实现角度线程分三类:
用户级线程ULT
内核级线程KLT
混合式线程
线程调度
处理器调度
处理器调度层次
作业从进入系统成为后备作业开始,直到运行结束退出系统为止,需经历不同级别的调度
高级调度(作业调度、长程调度)
(离用户比较近,离CPU比较远)
作业、作业控制块JCB
(1)作业是用户提交给操作系统计算的一个独立任务
(2)JCB的主要内容包括:
作业情况
资源需求
资源使用情况
作业生命周期状态
输入状态、后备状态、执行状态、完成状态
作业和进程的关系
(1)作业是任务实体,进程是完成任务的执行实体
(2)没有作业任务,进程无事可做
(3)没有进程,作业任务无法完成
(4)作业的概念更多地用于批处理操作系统中,而进程则用于各种多道程序设计系统
作业调度
(1)接纳多少个作业
(2)接纳哪些作业
中级调度(交换调度、中程调度)
目的
提高内存利用率和系统吞吐量
方法
(1)将暂时不能运行的进程调至外存上去等待,此时进程状态为:就绪驻外存状态或挂起状态
(2)再次满足运行条件时,由中级调度把外存上的具备运行条件的进,调入内存,挂在就绪队列上等待进程调度
低级调度(进程调度、短程调度)
(直接靠在CPU上,本身就是一个进程)
低级调度的主要功能:调度程序两项任务:调度和分派
调度:实现调度策略
分派:实现调度机制
功能
(1)保存处理器的现场信息
(2)按某种算法选取进程
(3)把处理器分配给进程
进程调度的三个基本机制
(1)排队器(进程队列)
(2)分派器(分派程序、调度程序)
(3)上下文切换机制(环境信息切换)
进程调度的方式(类型)
(1)非抢占式
引发调度的事件:
正在执行的进程执行完毕
发生某事件而不能再继续执行
执行中的进程因提出I/O请求而暂停执行
执行了某种原语操作
特点:实现简单、系统开销小、适用于大多数的批处理系统环境,难以满足紧急任务的要求
(2)抢占式
抢占的原则:
优先权原则
短作业(进程)优先原则
时间片原则
处理器的调度模型
仅有进程调度的调度队列模型
具有高级和低级调度的调度队列模型
处理器三级调度模型
选择调度算法原则
面向系统的性能指标
(1)资源利用率
CPU利用率 = CPU有效工作时间/CPU总的运行时间
CPU总的运行时间 = CPU有效工作时间+CPU空闲等待的时间
(2)吞吐率
单位时间内处理的作业数
(3)公平性
面向用户的性能指标
(1)响应时间
交互式进程从提交一个请求(命令)到接收到响应之间的时间间隔
(2)周转时间
批处理用户从作业提交给系统开始,到作业完成为止的时间间隔成作业周转时间
(3)截止时间的保证
(4)优先权准则
作业周转和带权周转时间
作业管理与调度
作业管理任务
作业组织、作业调度、运行控制
批作业的调度
(1)选择作业
(2)分配资源
(3)创建进程
(4)作业控制
(5)后续处理
作业调度与进程调度的关系
作业调度和低级调度算法
先来先服务算法FCFS
(1)要点:按照作业进入系统后备作业队列的先后次序来挑选次序,先进入系统的作业优先被挑选进内存。
非剥夺式调度算法
(2)例子:
•三个作业同时到达系统并立即进入调度:作业名/所需CPU时间:作业1/28,作业2/9,作业3/3。采用FCFS算法,平均作业周转时间为35。
• 若三个作业提交顺序改为作业2、1、3,平均作业周转时间约为29。若三个作业提交顺序改为作业3、2、1,平均作业周转时间约为18。
(3)注意:FCFS调度算法的平均作业周转时间与作业提交的顺序有关。
最短作业优先算法SJF
(1)要点:以进入系统作业所要求的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。
非剥夺式调度算法
(2)弱点:
1、要预先知道作业所需的CPU运行时间
2、忽视作业等待时间,可能会出现饥饿现象
3、尽管能客服对长作业的偏爱,但由于缺少剥夺机制,对于分时、实时处理仍然不理想
(3)例子
(4)比较与总结:SJF比FCFS平均作业周转时间小,所以它的调度性能比FCFS好
最短剩余时间优先SRTF
(1)要点: 把SJF算法改造为抢占式的。
一个新作业进入就绪状态,如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需的CPU时间短,SRTF强行赶走当前正在执行作业。称最短剩余时间优先算法
不仅适用于作业调度,同样适用于进程调度。
(2)例子:
最高响应比优先算法HRRF
既考虑作业等待时间,又考虑作业处理时间
响应比的定义
响应比 = 1 + 作业等待时间/作业处理时间
特点:
(1)短作业容易得到较高响应比
(2)长作业等待时间足够长后,也将获得足够高的响应比
(3)饥饿现象不会发生
举例:
优先级调度算法
静态优先数法
动态优先数法
时间片轮转调度算法
时间片调度:
(1)调度程序每次把CPU分配给就绪队列首进程使用一个时间片,就绪队列中的每个进程轮流地运行一个时间片。
(2)当这个时间片结束时,强迫一个进程让出处理器,让它排列到就绪队列的尾部,等候下一轮调度
多级反馈队列调度
主要思想
将就绪进程分为两级或多级,系统相应建立两个或多个就绪进程队列,较高优先级的队列一般分配给较短的时间片。