用户可见寄存器
DR:AX、BX、CX、DX
AR:索引SI、DI;栈指针SP、BP;段地址:CS、DS、SS、ES
控制与状态寄存器:PC、IR、条件码CC、标志位(中断位、中断允许位、内存保护位)
程序状态字PSW
U 机器指令机器执行过程
U 指令流水线
M 特权指令与非特权指令
M 处理器模式及其切换
机器指令:计算机系统执行的基本指令,是处理器执行的基本单位。
机器指令由一个字节或多个字节组成,包括操作码、操作数地址、表征状态字特征码
指令执行过程:CPU根据程序计数器取出指令放入指令寄存器,并对指令译码,发出控制命令,执行微操系列。
STEP 1.取指令
STEP 2.解码
STEP 3.执行
执行周期与指令流水线
特权指令:只能被操作系统内核使用,如启动IO指令,置DC指令等重要资源
处理器模式:0.内核;1.系统调用;2.共享库程序;3.用户程序等保护级别
模式切换:内核模式和用户模式相互切换
中断、异常引发用户模式切换到内核
OS内核处理完成后又从内核模式切换到内核模式
M概念
操作系统是中断驱动的,中断时激活操作系统的唯一方式
狭义中断:来源处理器的中断事件,如IO中断,时钟中断,外部信号中断(关机)
异常:CPU运行当前指令引起的中断事件,比如地址异常,读写异常,虚存异常,算术异常,硬件故障
系统异常:执行陷入指令而触发系统调用引起的中断时间,如请求设备、请求IO,创建进程。
K 中断系统
K 中断管理与指令运行周期
K 中断响应与中断装置
中断系统:硬件中断系统(响应系统)、软件中断系统(处理中断)
中断装置:计算机发现并响应中断/异常的硬件装置
处理器外的中断:中断控制器发现和响应
处理器内部的中断:由指令的控制逻辑和实现线路发现和响应,相应机制称为陷进
请求OS服务的系统响应:处理器执行陷入指令时直接出发,响应机制为系统陷进
中断控制器:CPU的一个控制部件,包括中断控制逻辑线路和中断寄存器,外部设备向其发出中断请求IRQ,在中断寄存器中设置已发生的中断,指令中断结束前,会检查中断寄存器,若有不被屏蔽的中断产生,则改变处理器的操作顺序
陷进与系统陷进
指令的逻辑实现线路的一部分
执行指令出现异常,激活操作系统异常处理程序,出现虚拟地址异常后,需要重新执行指令,越过陷进独立设置异常处理程序。
中断响应的过程
1.发现中断,提出中断请求
①发现中断寄存器中记录的中断
②决定是否可屏蔽
③当有多个响应中断源,根据优先级选择一个
2.中断当前程序的执行
保存当前程序的PSW/PC核心栈
3.转向操作系统的中断处理程序
中断处理程序:处理中断事件的程序,恢复正常操作
处理中断:保护未被硬件保护的处理器状态,通过分析被中断进程的PSW中断码字段,分别处理发生的中断时间,恢复正常操作(可能恢复到原进程,也有可能恢复到另一个进程)。
M 中断屏蔽
M 中断优先级
M 中断的嵌套处理
M 多中断的响应处理
中断屏蔽->中断装置有选择的响应中断
中断优先级->中断装置响应中断的顺序
一种可能的处理次序:
硬件故障
资源性中断
程序性中断
时钟中断、外部事件中断
I/O中断
重启和关机中断
不同的OS有不同的优先级
M 进程的基本概念
M 进程的三状态模型
U 进程挂起的概念
进程的五个实体:数据机构P,内存代码C,内存数据D,通用寄存器信息R,PSW
OS必须全方位管理计算机系统中运行的程序
操作系统为正在进行的程序建立一个管理实体,这就是进程。
进程是一个具有独立功能的程序,是关于某个数据集合的一次运行活动。
进程是OS进行资源分配和调度的一个独立单位。
不同程序在不同数据集合上运行构成两个无关的进程
概念级的进程状态
运行态:进程占有处理器运行
就绪态:进程具备运行条件,等待处理器
等待态:进程由于等待资源、输入输出、信号等而不具备运行条件
进程挂起的概念:
OS无法预期进程的数目与资源需求,计算机系统在运行过程中可能出现资源不足的情况,表现为性能低、死锁。解决办法是,剥夺进程的内存及其他资源,调入OS管理的对换区,不参加进程调度,待到适当时候在调入内存,恢复资源参与运行。
挂起态:没有任何资源
等待态:占有已申请到的资源,处于等待态
等待态->挂起等待态->挂起就绪态
就绪态->挂起就绪态->进入内存->就绪态
运行态->挂起就绪态
M 进程控制块的概念
K 进程控制块的内容
U 进程的内存映像
U 进程上下文的概念
进程控制块 PCB PRocess Control BLOCK
是进程用于记录和刻画进程状态及环境的数据结构
借助于PCB,OS可全面管理进程的物理实体,刻画进程的执行现状,控制进程的执行。
PCB内容
标识信息:存放唯一标识该进程的信息
系统分配的标识号
系统分配的进程组
用户定义的进程名
用户定义的进程组名
现场信息:用于存放进程运行时的处理器现场信息
用户可见寄存器的内容:DR、AR
控制与状态寄存器的内容:PC、IR、PSW
栈指针的内容:核心栈与用户栈
PCB控制信息:用于存放与管理调度进程相关的信息
调度相关:状态、等待事件/原因)、优先级
进程的组成信息:代码/数据地址,外村映像
队列指引元:进程队列指针,父子兄弟进程指针
通信相关信息:消息队列,信号量,锁
进程特权信息:如内存访问权限,处理器特权
处理器使用信息
资源清单信息
进程映像 Process IMage
某一时刻进程的内容及其执行状态的集合:PCB、PCB、PDB、核心栈
进程映像是内存级的物理实体,又称进程的内存映像。
进程上下文 PRocess Context
进程的执行需要环境支持,包括CPU现场,Cache中的执行信息
OS中的进程物理实体和支持进程运行的环境合成进程上下文,包括用户级上下文,寄存器上下文,系统级上下文
K 进程管理程序的概念级组成
M 进程队列管理和队列管理模块
U 进程控制与进程管理程序的实现
概念级OS进程管理软件
关键的进程管理软件包括 系统调用/中断/异常处理程序
队列管理模块->操作系统管理PCB的程序
进程控制程序->操作系统控制进程状态转化
进程调度程序
进程通信程序
终端登录与作业控制程序、性能监控程序、审计程序等外围程序
队列管理模块是OS实现进程管理的核心模块
OS建立多个队列,包括就绪队列和等待队列,按需组织先进先出,以及优先队列。队列中的进程可通过PCB中的队列指引元采用单/双指引元或索引完成出队和入队操作。
进程与资源调度围绕进程队列展开,涉及
进程创建
进程撤销
进程阻塞
进程唤醒
进程挂起
进程激活
原语primitive与进程控制原语
M 概念
U 流程
进程切换:指从正在运行的程序的进程中收回处理器,让待运行进程来占有处理器运行。
进程切换的实质就是被中断运行进程的上下文切换,处理过程是
①保存被中断程序的上下文
②转向进程调度程序
③恢复待运行程序的上下文
模式切换:进程切换必须在OS内核模式下完成,这就必须模式切换,模式切换又
称处理器状态切换,包括
用户模式切换到内核模式,由(中断/异常/系统调用)中断用户进程而触发。
模式切换的基本工作任务
中断装置完成正向模式切换,包括
①处理器模式->内核模式
②保存当前进程的PC/PSW值到核心栈
③转向中断/异常/系统调用处理程序
中断返回指令完成逆向模式切换,包括:
①从待运行进程核心栈中弹出PSW/PC
②处理器模式切换为用户模式
进程切换的工作过程
①中断/异常等触发正向模式切换并压入PSW/PC
②保存被中断进程的现场信息
③处理具体中断/异常
④把被中断进程的系统堆栈指针SP保存到PCB
⑤调整被中断进程的PCB信息,如进程状态
⑥把被中断进程的PCB加入相关队列
⑦选择下一个占用CPU运行的进程
⑧修改被选中进程的PCB的信息,如进程状态
⑨设置被选中进程的地址空间,恢复存储器管理信息
恢复被选中进程的SP值到处理器寄存器SP
恢复被选中进程的现场信息,进入处理器
(中断返回指令触发)->逆向模式转换,并弹出PSW/PC
进程切换的发生时机
进程切换一定发生在中断/异常/系统调用处理过程中,常见的情况是:
阻塞式系统调用,虚拟地址异常寻址杯中的进程进入等待态
时间片中断,I/O中断后发现更高优先级进程导致被中断进程转入就绪态
终止用系统调用,不能继续执行的异常导致被中断进程进入终止态
进程切换与模式切换
一些中断/异常不会引起进程切换,只是在处理完成后把控制权交回给被中断进程。
处理流程是:
①(中断/异常触发)正向模式切换压入PSW/PC
②保存被中断进程的现场信息,处理中断/异常
③恢复被中断进程的现场信息
④(中断返回指令触发)逆向模式切换弹出PSW/PC
M 单线程结构进程
M 多线程结构进程
M 多线程环境下进程与线程的概念
U 多线程并发程序设计的优势与应用
单线程结构进程
问题:1.进程切换开销大;2.进程通信开销大,限制了进程并发,降低了并行计算的效率。
多线程结构进程
多线程环境下进程的概念:OS进行保护和资源分配的独立单位。
容纳进程映像的虚拟地址空间
对进程、文件和设备存取保护机制
线程是进程的一条执行路径,是调度的基本单位,同一个进程中的所有线程共享进程获得的主存空间和资源。它具有线程执行状态、受保护的线程上下文,当线程不运行时,用于存储现场信息独立的程序指令计数器PC
执行堆栈容纳局部变量的静态存储器。
多线程环境下线程的状态与调度
线程状态:运行、就绪、休眠、无挂起态
与线程状态变化有关的线程操作有:孵化、封锁、活化、剥夺、指派、结束
操作系统感知线程,处理器调度对象是线程,进程无三态(只有挂起态)
操作系统不感知线程环境下,处理器调度仍是进程,用户空间中的用户调度程序调度线程。
线程的优点:快速线程切换,减少系统管理开销,线程通信易于实现。
M 内核级多线程KLT
M 用户级多线程ULT
U KLT和ULT的区别
内核级多线程Kernel Level Threads
由OS内核来做,OS提供一个API,供开发者使用KLT
特点:进程中的一个线程被阻塞了,内核能调度同一进程的其他线程占有处理器继续使用。
多处理器环境中,内核能同时调度同一进程中的多个线程执行,内核自身也可用多线程技术来实现,能提高OS的速度和效率
用户级多线程 USer Level Thread
如Java 可移植
不能利用多处理器的优点。OS调度进程,仅有一个ULT能执行
一个ULT的阻塞将引起整个进程阻塞。
Jacketing技术
不进入进程等待状态,用户调度线程调度选择下一个用户级线程程序继续占有进程运行。
KLT和ULT的区别
相同:进程是资源保护的单位,进程有多个线程,线程接口类似,共享资源通信块。
不同:ULT适用于解决逻辑并行问题,KLT适用于解决物理并行问题。
组合ULT和KLT,线程创建完全在用户空间中完成,线程调度和同步也在应用程序中进行。
KLT三态 Running Runnable Blocked
ULT三态
强调,Active ULT代办绑定KLT的三态
Active ULT运行时可激活用户调度,非阻塞系统调度可使用Jacketing启动用户调度。
高级调度:长程调度,作业调度,决定能否加入到进程池中。
低级调度:短程调度,进程调度,决定哪个可用进程占有处理器执行
中级调度:平衡负载调度,决定主存中国的可用进程集合
进程七态模型
高级调度决定:
①是否接受一个终端用户连接
②是否接纳命令构成进程
③创建进程是否加入就绪进程队列
批处理OS中,高级调度又称作业调度,从后备作业中选择一定的作业让它进入内存执行。
中级调度:平衡CPU和内存使用,剥夺某些进程的资源送入磁盘兑换器,暂时让它不参与组成调度,与进程挂起密切相关。
低级调度:处理器调度,把处理器分配给就绪进程或内核级线程。
进程调度程序:分派程序,OS实现进程的程序,是操作系统最核心的部分。
处理器调度策略直接影响到整个OS的性能。
低级调度的功能:
①记住进程或内核级线程的状态
②决定某个进程或KLT什么时候获得处理器以及占用多长时间
③把处理器分配给进程或KLT
④收回处理器
U 选择原则
U 先来先服务调度算法
M 时间片轮转调度算法
M 优先数调度算法
原则:资源利用率高,CPU或其他资源使用率高,且能够并行工作。
响应时间短、周转时间短、吞吐量大、公平
优先数调度算法
抢占式 CPU忙时抢占
非抢占式 CPU空闲时占有
优先数确定准则:紧迫性、交互性、使用外设频度、进入系统时间
计算时间短进程优先,剩余计算时间短进程优先,响应比高优先
响应比等于等待时间除估计计算时间
先来先服务用于高级调度,用于低级调度中过于优越。
时间片轮转调度算法
占有一个时间片
时间片中断
时间片的确定
M 分级调度算法
M 彩票调度算法
分级调度:多队列策略。
基本思想:建立多个不同优先级的就绪进程队列,多个就绪进程队列按照优先数调度,高优先级就绪队列进程分配时间片短,单个就绪进程队列中进程的优先数和时间片相同。
一般考虑:外设访问、交互性、时间紧迫性、系统效率、用户现场