《处理器管理》目录
处理器与寄存器
1、cpu组成
寄存器:
①用户可见寄存器:使得程序员减少访问主存储器的次数,提高指令执行效率
分为:数据寄存器(通用寄存器)和地址寄存器(索引、栈指针、段地址等)
②控制与状态寄存器:用于控制处理器的操作,主要被具有特权的操作系统程序使用,以控制程序的执行
包括:程序计数器PC(存储将取指令的地址)和指令寄存器IR(存储最近使用的指令),条件码CC(cpu为指令操作结果设置的位,标志正/负/零/溢出等结果),标志位(中断位,…)
程序状态字(PSW):指记录当前程序运行的动态信息,通常包括:
程序计数器、指令寄存器、条件码
中断字、中断允许/禁止、中断屏蔽、处理器模式、内存保护、调试控制
注:PSW也是计算机系统的寄存器,通常设置一组控制与状态寄存器
指令与寄存器模式
机器指令:是计算机系统执行的基本指令,是cpu的基本执行单位,由一个或多个字节组成,包括操作码字段、一个或多个操作数地址字段、以及一些表征机器状态的状态字以及特征码
执行过程:
①取指:根据PC从存储器或高速缓冲存储器中取指令到IR
②解码:解译IR中的指令来觉得其执行行为
③执行:连接到cpu部件,执行运算,产生结果并写回,同时在cc里设置运算结论标志;跳转指令操作cc,其他指令递增pc值
特权指令(只能被操作系统内核使用的指令)与非特权指令(能被所有程序使用的指令)
处理器模式:
0-操作系统内核(可以执行全部指令)
1-系统调用
2-共享库函数
3-所有用户程序保护级别(只能执行非特权指令)
一般而言,现代操作系统只使用0和3两种模式,对应于内核模式和用户模式
模式切换:用户模式->内核模式,或者,内核模式->用户模式
中断
中断:程序执行过程时,遇到急需处理的事件时,暂时中止cpu现行程序的运行,转去执行相应的事件处理程序,待处理完成后,再返回执行原程序
操作系统是“中断驱动的”,中断是激活操作系统的唯一方式
狭义的中断值来源于cpu外部的中断事件,即与当前运行指令无关的中断事件,如I/O中断、时钟中断、外部信号中断等
广义的中断:当前cpu(内部)运行指令引起的中断事件,如地址异常、算术异常、硬件处理异常
系统异常:值执行陷入指令而出发系统调用引起的中断事件,如请求设备,请求I/O,创建进程等
中断源
①处理硬件故障中断事件:由处理器、内存储器、总线故障灯引起
处理原则:保护现场、停止设备
②程序性中断事件
处理器执行机器指令引起:除数为0,操作数溢出等
非法指令、地址异常
中止进程指令
虚拟地址异常(调整内存后重新执行指令)
③自愿性中断事件
处理器执行陷入指令请求OS服务引起
处理流程:陷入OS,保护现场,根据功能号查入口地址,跳转具体处理程序
④I/O中断事件
来源于外围设备报告I/O状态的中断事件
I/O完成;I/O出错(等待人工干预);I/O异常
⑤外部中断事件
时间中断、间隔时间中断:计时与时间片处理,设备报到与结束中断,键盘与鼠标信号中断,关机/重启中断
中断系统
中断系统:是计算机响应和处理中断的系统,包含硬件子系统(负责中断响应)和软件子系统(负责中断处理)
中断装置:计算机系统中发现并响应中断/异常的硬件装置,通常有:
处理器外的中断(中断控制器)
处理器内部的异常(由指令的控制路基和实现线路发现和响应,陷阱)
请求OS服务的系统异常(处理器执行陷入指令直接出发,系统陷阱)
中断控制器:cpu中的一个控制部件,包括中断控制逻辑线路和中断寄存器,由外部设备向其发出中断请求IRQ
中断响应过程:
①发现中断源,提出中断请求
发现中断寄存器中记录的中断
决定这些中断是否要屏蔽
当有多个要响应的中断源时,根据规定的优先级选择一个
②中断当前程序的执行
记录当前程序的PSW/PC到核心栈(以便恢复)
③转向操作系统的中断处理程序
多中断的响应与处理
中断屏蔽:计算机检测到中断时,中断装置通过中断屏蔽位来决定是否响应已经发生的中断
中断优先级:同时检测到多个中断时,中断装置响应中断的顺序
中断嵌套处理:计算机响应中断后,在处理过程中可以再响应其他中断(出于性能考虑,一般嵌套限制在3层)
进程及状态
进程:是具有一定独立功能的程序关于某个数据集的一次运行活动
,进程是操作系统进行资源分配和调度的一个独立单位
进程包括:
①(OS管理运行程序的)数据结构P
②(运行程序的)内存代码C
③(运行程序的)内存数据D
④(运行程序的)通用寄存器信息R
⑤(OS控制程序执行的)程序状态字信息PSW
进程状态:
①运行态:指进程占有处理器运行
②就绪态:指进程具备运行条件等待处理器运行
③等待态:指进程由于等待资源、输入输出、信号灯而不具备运行条件
进程挂起:计算机由于运行资源不足(性能低、死锁),出现挂起状态
解决办法:剥夺某些进程的内存及其他资源,调入OS管理的对换区,不参与进程调度,待适当的时候再调入内存、恢复资源、参与运行
(与等待态有本质区别,等待态占有已申请的资源处于等待,而挂起状态没有任何资源)
进程的数据描述
进程控制块PCB是OS用于记录和刻画进程状态、环境信息的数据结构,借助PCB,OS可以全面管理进程的物理实体,刻画进程的执行状态,控制进程的执行
进程映像:某一时刻进程的内容及其执行状态的集合
进程上下文:进程的执行需要环境支持,包括CPU现场和cache中的执行信息
进程的管理
关键的进程管理软件包括:
①系统调用/中断/异常程序处理
②队列管理模块
③进程控制程序
④进程调度程序
⑤进程通信程序
⑥终端登录、性能监控等外围程序
进程实现的队列模型
队列管理模块是操作系统实现进程管理的核心模块,OS建立多个进程队列,包括就绪队列、等待队列,按需组织为先进先出队列和优先队列。进程与资源的调度围绕进程队列展开。
进程的控制与管理:
进程创建:进程表增加一项,申请PCB并初始化,生成标识,建立映像,分配资源,移入就绪队列
进程撤销:从队列中移除,归还资源,撤销标识,回收PCB,移除进程表项
进程阻塞:保存现场信息,修改PCB,移入等待队列,调度其他进程执行
进程唤醒:等待队列中移除,修改PCB,移入就绪队列(高进程优先级高于运行进程出发抢占)
进程挂起:修改状态并出入相关队列,收回内存等资源,送至对换区
进程激活:分配内存,修改状态并出入相关队列
其他,如修改进程特权
原语与进程控制原语:
原语是由若干条指令构成的完成某种特定功能的程序,在执行上具有不可分割性,原语的执行可以通过关中断实现
进程控制原语/进程通信原语
进程切换与模式切换
进程切换:指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行,实质是被中断运行进程与待运行进程的上下文切换,处理过程是:
①保存被中断进程的上下文
②转向进程调度
③恢复待运行进程的上下文
进程切换必须在操作系统的内核模式下完成,需要模式切换
模式切换(处理器状态切换),包括:
多线程技术概述
传统进程是单线程结构,在并发程序设计上存在进程切换开销大,进程通信开销大的问题,限制了进程并发的粒度,降低了并行计算的效率
计算机领域中粒度指系统内存扩展增量的最小值
多线程结构进程
在多线程环境中,进程是操作系统进行保护和资源分配的独立单位,包括:
用来容纳进程映像的虚拟地址空间
对进程、文件和设备的存取保护机制
线程是进程的一条执行路径,是调度的基本单位,同一个进程中所有线程共享进程获得的主存空间和资源,它具有:
线程的执行状态;
受保护的线程上下文,当线程不运行时,用于存储现场信息;
独立的程序指令计数器;
执行的堆栈;
容纳局部变量的静态存储器。
线程状态具有运行、就绪和睡眠,无挂起
线程操作有:孵化、封锁、活化、剥夺、指派、结束
并发多线程程序设计优点:
快速的线程切换;
减少系统管理开销;
通信易于实现;
并行程度提高;
节省内存空间。
多线程技术的应用:
内核级多线程KLT与用户级多线程ULT
KLT的所有工作由OS内核来做,OS提供了一个应用程序设计接口API,供开发者使用KLT,OS直接调度KLT,具有如下特点:
ULT
特点:
1.所有线程管理数据结构均在进程的用户空间中,线程切换不需要内核模式,能节省模式切换开销和内核的宝贵资源;
2.允许进程按特点需要选择调度算法,设置根据应用需求裁剪调度算法;
3.能运行在任何OS上,内核在支持ULT方面不需要做任何工作;
4.不能利用多处理器的优点,OS调度进程,仅有一个ULT执行;
5.一个ULT阻塞,将引起整个进程的阻塞(致命的缺点)。
Jacketking技术:把阻塞式调用改成非阻塞式调用,jacketing程序来检查资源的使用情况,以决定是否执行进程切换或传递控制权给另一个线程
多线程的实现的混合策略
线程的创建是完全在用户空间做的,单应用的多个ULT可以映射成一些KLT,通过调整KLT数目,可以达到较好的并行效果
特点:
1.组合用户线程/内核级线程设施
2.线程创建完全在用户空间完成,线程的调度和同步也在应用程序中进行
3.一个应用中的多个用户级线程被映射到一些内核线程上(小于等于用户级线程数目)
4.程序员可以针对特定的应用和机器调节内核级线程的数目,使得达到整体最佳效果
5.该方法会结合纯粹用户级线程方法和内核级线程方法的优点,同时减少它们的缺点。
活跃态的ULT代表绑定的KLT的三态
处理器的调度层次
高级调度(长程调度,作业调度):决定能否加入到执行的进程池中
低级调度(短程调度,进程调度):决定哪个可用进程占用处理器的执行
中级调度(平衡负载调度):决定主存中的可用进程集合
高级调度:是否接受一个终端用户的连接;命令能否被系统接纳并构成进程;新建态进程能否加入就绪进程队列
中级调度:是为了提高内存利用率和作业吞吐量,决定哪些进程被允许驻留在主存中,参与竞争处理器及其他资源,起到短期调整系统负荷的作用。中级调度吧一些进程换出主存,从而使之进入“挂起”状态,不参与进程调度,以平顺系统的负载
低级调度:又称处理器调度、进程调度,短期调度,是按照某种原则把处理器分配给就绪态进程或内核级线程
进程调度程序:又称为分派程序,操作系统中实现处理器调度的程序,是操作系统的最核心部分。
低级调度的主要功能:记住进程或内核级线程的状态;决定某个进程或者内核级线程什么时候获得处理器,以及占用多长时间,把处理器分配给进程或者内核级线程
处理器调度算法1
选择处理器调度算法的原则:资源利用率,响应时间,周转时间,吞吐量,公平性
优先数调度算法:根据分配给进程优先数决定运行进程,分为抢占式优先数调度算法,和非抢占式优先数调度算法
优先数的确定准则:进程负担任务的紧迫程度,进程的交互性,进程使用外设的频度
与进入系统时间相关的优先数:
计算时间短(作业/进程)优先;
剩余计算时间短优先;
响应比高者(作业/进程)优先,响应比=等待时间/估计计算时间
先来先服务:先进队先被选择,多用于高级调度
时间片轮转调度算法:根据各个进程进入就绪队列的时间先后轮流占有cpu的一个时间片
时间片的确定:根据长短合适的时间片,过长则退化为先来先服务算法,过短则调度开销大,不同的OS分为单时间片,多时间片和动态时间片
处理器调度算法2
分级调度算法(多队列策略,反馈循环队列),其基本思想:
建立多个不同优先级的就绪进程队列,多个就绪进程队列间按照优先数调度,高优先级就绪进程,分配的时间片短;某个就绪进程队列中进程的优先数和时间片相同
分级原则:外设访问,交互性,时间紧迫程度,系统效率…
现代OS采用优先数和时间片,综合采用分级调度算法来实现的。