进程
概念
定义:进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和运行调度的基本单位。
目的
刻画系统的动态性,发挥系统的并发性
解决共享性,正确描述程序的运行状态。
进程与程序的区别
进程是一个动态概念,而程序是一个静态概念
进程具有并发性
进程间会相互制约
进程与程序之间存在多对多关系
进程的特征
动态性(由创建而产生,由调度而执行,由事件而等待,由撤销而消亡),并发性,独立性,异步性,结构性(数据+程序+控制结构)
进程控制块PCB(进程存在的唯一标志)
标识信息(用于唯一地标识一个进程),现场信息(主要由寄存器构成,记录当前信息),调度信息(进程调度和进程对换的相关信息),控制信息(用来管理进程)。
进程控制块的组织方式
线性方式:根据操作系统内进程最大数目,静态的分配主存中的某块空间。
链接方式:利用链接指针将同一状态的进程控制块链接为一个队列。
索引方式:建立若干个索引表,记录不同状态进程的PCB地址。
操作系统在进程管理方面的工作
进程控制——进程创建,进程撤销,进程的状态切换。
进程通信——协调多个进程,合作完成一个任务。
进程同步——通过进程的互斥或同步,对进程的运行进行协调。
进程调度——分配CPU给进程。
进程控制
进程创建的原因:用户登录,提供服务,作业调度,应用请求。
创建进程的过程:申请空白PCB,分配地址空间,分配主存外其他资源,初始化PCB,插入到相应对列
进程终止的原因有正常终止和非正常终止(14种)
进程终止的过程:若正在运行,则立即停止,重新调度;回收子进程的资源,并终止子进程;在队列中移除进程标识号;回收PCB。
三状态模型
执行态:进程占用处理器并执行
就绪态:具备执行条件,等待处理器运行。
阻塞态(等待态):不具备执行条件,等待某个事件完成。
五状态模型
新建态:进程刚建立,还没有被OS提交到可运行进程对列。
终止态:进程结束后被OS从可执行队列中释放。
七状态模型
挂起就绪态:具备运行条件,存储在辅助存储器中,当进程被兑换到储存时,才能调度执行。
挂起阻塞态:进程在辅助存储器等待某一事件发生。
状态转换
就绪态-执行态,执行态-就绪态,执行态-阻塞态,阻塞态-就绪态
新建态-就绪态,执行态-终止态
阻塞态-挂起阻塞态,挂起阻塞态-挂起就绪态,挂起就绪态-就绪态,就绪态-挂起就绪态,挂起阻塞态-阻塞态,执行态-挂起就绪态,新建态-挂起就绪态
线程
定义:
进程的组成部分,可独立调度和指派的执行单元。
线程的组成:线程控制块(TCB,线程的唯一标识符),独立的程序计数器,核心栈(函数调用时返回地址),私有存储区(存放局部变量和用户栈)。
状态:就绪状态,运行状态,阻塞状态
特征
是进程中的一个相对独立的运行单元。
是操作系统中的基本调度单位。
在线程机制中,以线程作为调度单位
一个进程中至少包含一个线程。
只共享进程所拥有的资源。
可以创建其他线程,有生命周期,状态变化。
进程与线程的区别
资源方面:线程只能访问所属进程的资源
调度方面:一个进程中的线程切换到另一个进程中的线程时,会引起进程间的切换。
并发性方面:一个进程内的多个线程之间可以并发执行。
系统开销方面:线程切换时只需要少量寄存器,时空开销很小。
处理器调度
作业:一个比程序更广泛的概念,包含程序和数据,还有作业说明书。
特点:在批处理系统中以作业为基本单位从外存调入内存。
作业通常分成若干个相对独立,相互关联的加工步骤,每个步骤称为一个作业步
作业一般经历提交,后备,执行,完成四个状态。
分类:I/O繁忙型,CPU繁忙型
低级调度(进程调度,短程调度)
决定哪个就绪进程得到处理器
主要功能:
1.选择就绪进程:根据进程的优先级和资源使用情况
2.进程切换
主要方式:
1. 非抢占方式,当某个进程主动结束之后,才将处处理器分配给其他进程
2. 抢占方式,强制结束当前进程,执行其他进程
中级调度(内存调度)
是进程在内存和外存之间的兑换
在内存空间紧张时,可以将不能运行的进程换到外存上等待。
在虚拟存储管理系统中,进程只有被中级调度选中才有资格占用主存。
高级调度(作业调度,长程调度)
根据算法将外存上处于后备作业队列中的作业调入内存,为其分配资源和建立相应进程。决定哪些作业可以进入内存,参与资源竞争。
调度算法的目标:
1.面向用户:周转时间短,响应时间快,截止时间保证,优先权。
2.面向系统:资源利用率高,主要指标为CPU利用率(有效工作时间除以总的运行时间),系统吞吐量大,公平性
批处理作业调度
1.先来先服务(FCFS)
非剥夺式调度算法,易实现效率不高。
不利于短作业而优待长作业。
只考虑等待时间,而未考虑运行时间的长短。
2.短作业优先调度算法(Short job first,SJF)
对长作业不利
完全没考虑作业的紧迫程度。
作业的长短是根据用户提供的数据估计的,所以并不一定能做到真正的短作业优先。
3.高响应比调度算法(HRRN)
交互系统进程调度
1.时间片轮转调度算法(Round Robin,RR)
当前进程在时间片内未完成的话,将切换成就绪队列中的第一个进程。
是一种抢占式调度算法。
是分时系统中采用的调度算法。
时间片过短,进程切换耗费资源时间。时间片过长,则退化为FCFS。
2.优先级调度算法
当发生调度时,调度当前处于就绪队列中优先级最高的进程
非抢占式优先级调度方式:就绪队列中优先级最高的进程将获得CPU的使用权,直到进程完成。
抢占式优先级调度方式:优先级更高的进程获得CPU使用权。
静态优先级:静态优先数在进程创建时固定。
动态优先级:动态优先数随进程的推进而动态改变。
3.多级反馈队列调度算法
实时系统进程调度
所需基本信息:
就绪时间——任务成为就绪态所需的时间。
开始截止时间和完成截止时间,一般只需要知道一个。
任务执行时间,执行时所需资源
实时任务的优先级
子任务结构
处理器利用率:
值越接近1时效率最大。大于1时,调度算法失效。
经典实时调度算法——最早截止时间优先调度算法(EDF):根据实时任务的开始截止时间确定任务的优先级,截止时间越早,优先级越高。
线程调度
用户级线程调度:在用户态下创建,系统内核并不知道线程的存在。
核心级线程调度:在核心支持线程技术的系统中,内核直接调度线程
区别:
用户级线程切换只需要少量机器指令,速度快。核心级线程间切换需要完整的进程上下文切换。
用户级线程可为某用户态程序定制线程调度程序,比内核更好地满足用户态程序需要。
名词解释:
前趋图:一个有向无循环图,有初始节点,终止节点,直接前屈,直接后继
程序顺序执行的特征:顺序性,封闭性,可再现性。
程序并发执行的特征:间断性,失去封闭性,不可再现性。
周转时间:作业提交给系统到作业完成为止的这段时间间隔。
响应时间(从提交一个请求到开始接受响应之间的时间)=等待时间+服务时间
截止时间:某任务必须开始执行的最迟时间
周转时间=完成时间-到达时间。
带权周转时间=周转时间%服务时间。
响应比=响应时间/服务时间
因果转换:一个进程转换的发生会引起另一个进程转换的发生。
小提一嘴(了解)
进程的阻塞,唤醒,挂起,激活步骤
中断处理和调度过程
线程的分类:用户级线程,内核级线程
在多道批处理系统中,系统为每个作业设置了一个作业控制块(JCB),方便管理和调度作业。
超线程技术HT
在最高优先级调度算法中,那些具有相同优先级的进程分配CPU的次序为FCFS
操作系统的作业管理是一种宏观的高级管理