操作系统 - 处理器管理课件_第1页
操作系统 - 处理器管理课件_第2页
操作系统 - 处理器管理课件_第3页
操作系统 - 处理器管理课件_第4页
操作系统 - 处理器管理课件_第5页
已阅读5页,还剩174页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章处理器管理概述处理器管理是操作系统中最核心的部分,因为它管理的也是计算机中最重要的硬件处理器管理负责管理、调度和分配处理器,并控制程序的执行。处理器管理的优劣直接影响系统的性能两种并发的形式:交替执行(单CPU)并行执行(多CPU)在设计一个操作系统时,既要考虑单CPU,也要考虑多CPU或者说,在设计时,不能假设CPU的数目对一个进程的资源,在调度时还可以进一步细分,最小的调度单位称作线程(Thread)各种操作系统对线程的实现方式,各不相同处理器硬件介绍根据处理器的数目,可以分为单处理器系统和多处理器系统早期的计算机是单处理器结构,采用流水线、发射体系结构等技术,加快指令的执行所谓共享式存储,是指共享所有处理器,平等地访问同一个物理内存根据处理器分配策略,又可以分为两类:主从式系统(Main/SlaveMulti-Processor,MSP)对称式系统(SymmetricMulti-Processor,SMP)SMP:内核与应用程序可以运行在任意CPU优点:对称性,单一地址空间,可靠性、扩充性好缺点:实现复杂分布式存储:每个处理单元有自己独立的主存与通道,各个单元之间通过线路或网络相连例如集群(Cluser)就是一种典型的分布式系统现今大多数通用操作系统既支持单处理器系统,也支持多处理器系统和集群系统寄存器寄存器用于存储数据、变量和运算的中间结果,用于加快运算,保存状态某时刻寄存器的内容,描述了一个进程当时的执行状态,称为处理器现场指令每台计算机的机器指令的集合,称为指令系统,它反映了该计算机的能力指令可分为特权指令和非特权指令特权指令,是指只能被内核使用的指令,比如启动设备,设置时钟,控制中断屏蔽位,清空主存,建立存储键,加载PSW等关键操作非特权指令,是指可以被应用程序使用的一些指令,当然内核也可以使用即,内核可以使用全部指令(特权与非特权),而应用程序只能执行非特权指令处理器状态:表明此时处理器是运行在内核上还是应用程序上,即当时可以使用哪些指令分为两种状态:核心态(KernelMode,也叫管态),用户态(UserMode,也叫目态)核心态:运行在内核上可以执行所有指令可以访问所有内存与其他资源可以改变处理器状态Intelx86中,定义了这么几种级别0内核级1系统调用级2 共享库级3应用程序级实际使用时,根据操作系统自己的策略何时可由用户态转入核心态,两种途径:执行系统调用,申请操作系统服务产生中断或异常前者为应用程序主动发起的后者是由于产生了意外事件导致的总之,应用程序需要在受控制的情况下,改变处理器状态,并被安排跳转到指定的地方开始执行每个CPU都有一个存放PSW的硬件装置,而相应,每一个进程都有一个PSW的数据结构,当某一个进程占用CPU执行时,它把自己的PSW放入CPU,当这个进程被换出时,也更新它的PSW数据结构注:并非每个CPU都有一个真正的PSW寄存器,一些CPU采用几个寄存器来实现PSW寄存器的方式如Intelx86中,用EFLAGS和EIP来表示PSW分为三类标志状态标志:OF,SF,ZF,AF,CF,PF,AC,串扫描,串比较等。控制标志:DF,VM,IF位系统标志:IOPL,NT,RF,用户保护模式中断现代的操作系统,是由中断驱动的定义(interrupt):是指在程序执行过程中,遇到急需处理的事件时,暂时中止现行程序在CPU上的运行,转而执行相应的事件处理程序,待处理完成后,再返回断点或调度其他程序执行请大家思考下,中断有什么好处?中断最初是用来解决CPU轮询外围设备导致大量浪费CPU时间的问题,后来这种机制被应用到其他各种情形中,包括系统调用、异常,也出现了用软件模拟中断机制这种行为中断有中断源或中断装置发出,其共性:改变处理器的操作执行次序,同时也是实现了把控制权从应用程序转移出来的功能,比如从应用程序转移到内核分类:按照中断是由硬件还是软件发出的,可分为:硬中断:由硬件发给CPU的中断软中断:由软件发给软件的中断硬中断可以继续按照中断源硬件所处的位置,分为:外中断:来自处理器之外的硬件产生的中断信号,比如键盘中断,设备中断内中断:来自处理器内部的硬件产生的中断外中断信号,不一定是代表了一定发生了需要CPU处理的事情,很多时候,只是告诉一下CPU设备完成了某项工作,这个时候,CPU其实并不一定要知道这个中断发生了因此,外中断可以分为可屏蔽中断与不可屏蔽中断有一些中断,是比较紧急的情况,是不可以忽略的,CPU在收到这些中断信号后,必须马上进行处理,否则会引起系统的问题,这些就是不可屏蔽中断内中断:CPU在运算过程中,也会出现一些错误或者意外事件,这里面一部分是运算发生了错误,比如除数为零等,另外一部分是程序“故意”而为之,目的就是触发中断机制,使控制权强行跳转到另一个地方一般,把外中断就叫做“中断”,内中断叫做“异常”,有些书上,把故意而为之的异常,称为“陷阱”,把异常中的错误,叫“故障”具体对内中断(异常)的产生原因,做一下分类:访管中断:主动引发进行系统调用硬件故障:处理器内部的硬件问题程序性异常:运算过程中出现错误,比如除数为0、页故障、地址越界等异常均不可屏蔽,因为其不是错误,就是有意为之,都是有目的的,而中断则是要分情况,有些可屏蔽,有些不可屏蔽举例:Intelx86规定的一些中断和异常:Linux中把异常按照发生之后处理的方式,分为以下四种:故障(Fault):发生问题处理完毕后,再执行一次原来的指令陷阱(Trap):执行特定的调试指令时触发,被调试的进程遇到所设置的断点处会暂停等待终止(Abort):某些错误发生后,无法恢复,不会返回原进程,有时甚至需要重启计算机编程异常(ProgrammedException):用于实现系统调用总结一下上面的故障发生后,处理完毕后将原来引发故障的指令再执行一遍陷阱与编程异常发生后,处理完毕之后,执行原指令的下一条指令终止则不再返回原来的指令软中断:不必由硬件产生的中断。实质是用一种软件的办法来模拟硬中断的一种方式软中断利用一般中断的思想方法,来处理进程之间的一些问题软中断:模仿硬中断的方法,内核与进程之间,或进程与进程之间的一种通信方式信号软件中断几种中断各自的用途:中断(外中断):外部设备对CPU的中断异常(内中断):因指令执行不正常而对CPU的中断软件中断:用于硬中断服务程序对内核的中断信号:用于内核或进程,对某个进程的中断中断与信号有很多类似之处:概念上一致:都是中断源向某个目的地发送中断信号均是异步:不知道何时会发生中断事件实现方式均采用向量表,以向量号做索引查找中断处理程序均设有“中断屏蔽位”,可以对于一些中断信号,置之不理中断与信号的区别:中断由硬件和软件实现,信号则专门由软件实现中断向量表与中断处理程序位于内核空间,而信号向量表属于内核空间,但信号处理程序一般位于用户空间中断会立即处理,而信号则可能会延时响应方式尽管中断有这样那样的分类,但其处理起来的方式是一致的:根据中断源提供的中断向量,在主存中找到相应的处理程序入口,并执行中断向量由硬件或内核预先定义中断的捕获:外:每个指令执行结束后,CPU检查中断寄存器中是否有中断事件,来判断是否有外中断需要执行内:指令执行的时候,就会发生,无需去检查中断寄存器中断的响应:发现中断源保护现场:保护PSW转向中断/异常处理程序:切换用户态至核心态恢复现场:恢复用户态,恢复PSW,下一条指令是什么,要根据中断的类型以Linux中断机制为例:采用中断描述符表(IDT),含有256个中断描述符,表示相应的中断或异常用一个专门的中断描述符表寄存器IDTR来指代IDT的位置每个中断/异常有一个向量号,0-255,表示在IDT中的索引在系统初始化时,创建IDT,分配向量号Linux对向量号的使用情况:0–31异常或硬件非屏蔽中断32–47硬件可屏蔽中断48–255软中断,其中128号为系统调用具体的处理方式:程序性中断:几类错误:1,语法错误;2,逻辑错误;3,运行异常一般借助于信号机制,内核往往将这类事件交给应用程序自行处理访管中断(异常的一种):以Linux为例,调用号放入EAX,其余参数分别放入EBX,ECX,EDX,ESI,EDI中,然后执行访管指令int0x80,陷入内核,返回值也放回EAX时钟中断:时钟是内核进行调度工作的重要工具,利用定时器能够确保内核可以获得控制权时钟:绝对时钟间隔时钟绝对时钟:每隔一定时间间隔,产生一次中断间隔时钟:当寄存器内容为0时,产生中断,相当于闹钟中断需要硬件和软件结合来发挥作用,比如这里时钟中断硬件只按已知时间间隔产生中断,至于中断以后干什么,由软件来负责中断优先级、多重中断:问题出现的背景:当同一时刻出现了多个中断,怎么办处理的原则:以不发生中断丢失为前提,把紧迫程度相当的中断源归为同一级别,紧迫程度差别大的归为不同的级别级别高的中断有优先获得响应的权利,低优先级的中断可以被高优先级的打断,反之不行中断优先级:中断装置所预设的响应顺序中断优先级事先通过评估各种中断事件的紧急程度,来规定不同的优先级当同时出现了多个中断事件时,可以用软硬件相结合的办法,将中断事件排成一个队列,根据优先级来排定。例如:IBM机器中,优先级如下:机器校验中断、自愿性中断、程序性中断、外部中断、I/O中断Intelx86,优先级如下:复位、异常、软件中断、非屏蔽中断、可屏蔽中断有关多重中断的另一个概念:中断屏蔽位当某个中断处理程序正在执行时,可以暂时关闭中断响应,这是通过对中断屏蔽位来做到的中断屏蔽:产生并提出中断请求后,CPU允许响应或禁止响应的状态位复位(0):禁止响应中断置位(1):允许响应中断中断屏蔽可以暂时禁止对某些中断,协调中断响应与中断处理之间的关系进程一些概念定义:进程是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和保护的基本单位注:现代操作系统,往往把线程当做调度的基本单位,但分配资源时,是以进程为单位的通俗讲:进程就是一个正在执行的程序理论上:对当前运行程序的一种抽象实践上:是一种数据结构,用来刻画当时的程序的动态执行状态进程的想法最早在MULTICS项目和CTSS/360机器设计中出现,因此叫法不一MIT:Process进程IBM:Task任务Univac:Action活动为何要引入进程这个概念?在多道程序设计之下,原来的“程序”概念已经不能用来描述这时候的情况了,程序只是一个静态的概念,而进程是一个动态的概念程序:存放在磁盘上的文件进程:运行着的程序实例,包括代码,数据,信号,栈等多种信息进程的一些属性:结构性:至少包括程序块、数据块、进程控制块共享性:多个进程执行的是相同的程序、各个进程之间可共享资源动态性:是程序在数据上的一次计算过程,有生命周期独立性:各个进程之间的资源彼此独立、由操作系统保护各个进程之间不互相干扰制约性:各个进程共享系统资源,同时彼此之间存在制约并发性进程的状态:由于进程是一个动态的概念,因此其具有状态,基本的可以分为三种:运行态、就绪态、等待态分类标准:是否满足运行条件、是否占有CPU运行态(running):满足运行条件、占有CPU就绪态(ready):满足运行条件、不占有CPU(等待被调度)等待态(wait):不满足运行条件、不占有CPU,也叫睡眠,阻塞运行态就绪态等待态调度换出调度换进运行条件满足等待事件在各个操作系统设计时,为了便于管理,在此三态基础上,又会增加一些状态增加“新建态(new)”和“终止态(exit)”,描述进程刚创建和结束时候的两种状态增加“挂起态(suspend)”,指暂时把进程换到磁盘缓冲区内在suspend状态基础上,又可以继续增加两种状态:挂起就绪态(readysuspend):把就绪态的进程,换到磁盘缓冲区中挂起等待态(blockedsuspend):把等待态的进程,换到磁盘缓冲区中挂起的原因:内存不够用了系统发生一些故障,一些进程暂时换出去处于等待态的进程,没必要占用资源调试进程的需要注:只有在内存的调度队列里的进程,才具有被调度的资格,挂起的进程位于磁盘上,因此尽管具有运行条件,但也无法被调度,如需被调度,先要将其状态转为就绪态进程的描述和组成从单个角度看,一个运行的程序由以下组成:

程序块:组成程序的代码集合

数据块:全局数据

栈:用来管理函数调用关系的结构如果在多道程序设计情况下,光靠以上三个,已经不能描述出一个进程的状态了,所以需要再引入一些数据结构进程控制块:存储进程的标志信息,现场信息和控制信息,每一个进程分配一个进程控制块另一个概念:进程上下文(processcontex)

进程执行时,除了本身自己的代码,数据,栈外,还需要时不时地向内核申请服务,当陷入内核后,就用到了内核自己专用的一些资源,如核心栈,内存管理信息表等,所有这些资源,称为进程上下文进程上下文包括:用户级上下文(userlevelcontex):进程自己的代码、数据、栈等系统级上下文(systemlevelcontex):进程陷入内核后,内核所使用的内存管理信息表、核心栈,也包括进程控制块寄存器上下文(registercontex):各个寄存器当时的信息,用于保护和恢复现场进程控制块(processcontrolblock):进程存在的唯一标识内核用来记录和刻画进程状态的数据结构管理和调度进程的依据进程控制块具有的信息:标识信息:进程号,进程组号等现场信息:各个寄存器当时的值控制信息:调度相关信息、进程间通信信息、段页表指针信息等内核管理各个进程的方式----进程队列根据进程的各种关系,定义队列:

按照进程状态队列:运行队列、就绪队列、等待队列

按照进程间的父子关系因此一个进程可能同时处于几个队列之中进程切换进程切换的大致过程:

用户空间发生中断或异常进入内核

回到用户空间进程切换进程切换可能发生在每一次陷入内核之后,如果进程不再满足运行条件,内核就会再次挑选另外的进程,而把当前进程放入其他队列(就绪队列、等待队列、挂起队列等)并非每一次陷入内核,就会发生切换,在下列条件下,会发生切换:当进程失去了某些运行必要条件进程完成了系统调用,却发现失去了CPU进程完成了中断处理,却发现失去了CPU进程时间片已到步骤:保存原进程的处理器现场修改原进程PCB把原PCB加入相关队列选择另一进程修改该进程的PCB信息恢复挑选进程的地址空间恢复挑选进程的处理器信息处理器模式切换:

用户态和核心态相互转化与进程上下文切换的区别:进程上下文是在不同进程间切换,处理器模式转化是在同一个进程间切换具体的步骤:保存原进程的处理器现场处理器状态从用户态转为核心态设置中断屏蔽位(可选)根据调用号或者中断号,进入相应的服务程序入口地址从CPU角度看,可以认为CPU在轮流为系统中的各个进程服务每时刻,CPU都处在下列三种状态之一:用户空间,处于进程上下文,使用用户栈内核空间,处于进程上下文,使用核心栈内核空间,处于中断上下文注:当处于内核时,不能被抢占,即当一个进程申请进入内核,或者发生中断之后,在内核处理时,不能再响应另一个进程的系统调用但是内核可以响应中断进程的控制和管理

内核有专门的进程管理程序,控制着众多进程的生命周期

主要工作:创建进程,阻塞、唤醒进程,挂起、激活进程,终止和撤销进程新概念:原语primitive

是指一个不可分割的动作,在这个动作执行期间,不允许中断

上述的几个行为,就是一种原语,采用特殊的硬件指令实现注:并非内核所有的行为,都是原语,只有少部分的比较关键的行为是原语

原语执行时不响应中断,会影响系统的效率进程创建:从PCB池中申请一个空闲的PCB,分配进程号为新进程分配地址空间并加载分配其他资源初始化PCB把新进程设置为就绪态,放入就绪队列通知其他模块更新信息进程撤销根据要撤销的进程号,从相应队列中找到并删除释放该进程占用的全部资源撤销其所有子进程回收PCB放入池中阻塞、唤醒

阻塞是进程主动调用阻塞原语来进行的,也就是说,是主动行为

唤醒则要另一个进程来唤醒它阻塞步骤:停止执行,保存现场信息修改PCB内容,特别是进程状态,并移入相应队列进入调度程序,选择另外的进程运行唤醒步骤:取出待唤醒的进程修改PCB的相关内容,移入就绪队列等待下次被调度进程挂起和激活

这个过程跟阻塞、唤醒很相似,只不过阻塞、唤醒是在就绪和等待队里移动,挂起、激活是在内存和磁盘缓冲区移动线程

进程内部可以再进一步分为线程(Thread)

进程实现的需求:同一个计算机中,多个程序需要同时运行

线程实现的需求:同一个进程内,多个功能需要同时运行

宗旨:提高并行性,提高效率

传统的进程,都是运行在同一个处理器上,在同一个进程内,是串行的

引入了线程,就可以把进程的不同部分放到不同的处理器上

可以在一个功能暂时不执行时,转而去执行其他的功能比如:Eclipse在进行编写程序的时候,可以实现实时编译Word在进行编辑工作的时候,可以实现拼写检查,自动保存等等对于一个用户来讲

如果是单进程和多进程,用户会有很明显的感觉

如果是单线程和多线程,则不会有太大的感觉,他们的表象很相似,内部实现不同从进程到线程,是对并行性进一步要求的结果

实质是把CPU的分配权,进行进一步的细分定义:线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度的基本单位一个进程可以有多个线程

这些线程共享进程的资源,它们协同完成整个进程的工作

各个线程之间也会有资源竞争线程组成部分:

线程控制块

线程上下文

核心栈

线程私有数据区

线程与进程的主要区别,就是进程有自己的独立空间,线程没有自己完全独立的空间

各个线程共享进程的代码区和全局数据去,各个线程执行的代码区的不同代码,访问全局数据的不同数据线程状态

与进程不同,线程只有运行、就绪和等待态

线程没有挂起态,线程的挂起和激活,是随着宿主进程挂起和激活,线程的实现用户级线程内核级线程混合式线程用户级线程:

指提供可以进行线程管理的工具,负责线程的创建、管理、调度,与内核无关优点:

无需陷入内核

比较容易地修改线程调度算法

即使内核不支持多线程,也能实现多线程缺点:

一个线程阻塞,会引起所有其他线程阻塞

只能在当前进程的CPU上进行调度内核级线程

内核具体创建、管理线程的功能,同时提供系统调用供用户程序使用优点:

阻塞一个线程,不会影响整个进程的阻塞,其他线程可以继续运行

可以把线程分配到多个处理器上进行缺点:

线程管理需要陷入内核,开销大

内核需要专门进行修改,才能具备此功能Linux的进程和线程处理器调度主存、处理器与作业、进程之间,永远是供不应求的关系处理器调度:按照何种原则挑选作业进入主存运行,如何把处理器进行分配作业(job):用户交给操作系统的一个独立任务,每个作业必须经过若干相对独立且相互关联的顺序加工步骤才能得到结果

作业由用户组织,作业步骤由用户指定,操作系统根据用户的指定,创建进程来完成相应的处理任务,并返回处理的结果作业与进程的关系:

作业是任务实体,进程是执行实体

操作系统通过创建进程,来完成作业要求作业管理:

作业组织、作业调度、运行控制作业管理与调度的步骤:批处理和交互型批处理作业的组织和管理批处理作业的输入批处理作业的建立批处理作业的调度批处理作业的输入

脱机方式

作业=程序+数据+作业说明书

程序和数据用于解决问题

作业说明书告诉操作系统如何组织程序和数据来工作批处理作业的建立

建立作业控制块,组成作业表,建立好作业队列,等待高级调度程序的调度批处理作业的调度

选择作业、分配资源、创建进程、作业控制、后续处理交互型作业的组织和管理

交互型作业,即我们平时的工作方式,靠命令行或图形界面来与操作系统进行交互

可以认为用户的一次上机过程,就是一次交互型作业,只不过与批处理作业相比,交互型作业的作业说明书就是用户键入的每一条命令或鼠标动作处理器调度层次:高级调度(作业调度)中级调度(进程调度)低级调度(线程调度)高级调度:在多道批处理操作系统中,从输入的作业中,按照预定的调度策略挑选一些作业,为其分配资源,做好运行前准备工作,以及作业完成后的善后工作

高级作业调度挑选出来的作业,等待下一级调度流程的继续挑选中级调度: 根据内存资源情况,决定哪些作业可以继续留在内存中,哪些作业被“挂起”到磁盘缓冲区中

即在上一级调度选择的作业中,继续挑选作业,进入下一级调度低级调度:

根据某种调度算法,决定哪些进程(线程)占有CPU运行,哪些进程(线程)必须让出CPU

这是处理器调度中最核心的部分注:低级调度是所有多道程序设计环境中必备的,但中级和高级调度,则可有可无

根据具有哪几种调度方式,可有:三级调度模型,两级调度模型,一级调度模型衡量调度算法好坏的原则资源利用率吞吐量公平性响应时间周转时间资源利用率

许多资源经常会发生等待,好的调度算法,应该尽量避免资源白白的等待,浪费时间,而应该把等待的时间分配给当时其他可以执行的线程,提高资源的利用率吞吐率:

单位时间内处理作业的个数公平性

确保每个进程都能获得合理的CPU份额和其他份额,避免出现饥饿现象

饥饿:指一个进程长时间没得到执行的机会响应时间:从交互式进程提交一个请求,到得到响应之间的时间间隔,这是分时和实时系统很重要的指标周转时间:

批处理用户从向系统递交作业开始,到作业完成为止的时间间隔

具体是指一个作业在系统中的等待时间和运行时间

操作系统比较看重各个作业的平均周转时间掌握如何计算平均作业周转时间和平均带权作业周转时间调度算法

这里的调度算法,很多都适用于三种调度层次,以低级调度为例低级调度的对象------在内核不支持线程的环境中,是进程,在内核支持线程的环境中,是线程

现代的操作系统,一般都是以线程为最小的调度单位低级调度的主要功能:

调度和分派

调度:决定把哪个线程换进或换出处理器

分派:如何进行换进和换出

前者称为“调度策略”,后者称为“调度机制”低级调度的基本类型:

抢占式(preemptive):内核可以随时根据某个原则来剥夺当前进程的运行权利

非抢占式(nonpreemptive):除非进程自己主动让出处理器,否则别的进程没有机会执行很多操作系统混合了两种调度类型:内核线程是非抢占式的,用户线程是抢占式的

注:内核非抢占式,是指不能被其他线程所抢占,但可以响应中断,此时还处在原来的进程上下文中,只在处理中断的时候,短暂处于中断上下文主要的一些调度算法介绍:

每一种调度算法,都可以解决一部分问题,但也会带来一部分问题,操作系统在选择具体算法的时候,可以根据自身的需求,选择相应的算法在一个作业从开始准备,到最后执行完毕,可能需要经过多次调度,可以为每一级调度都采用不一样的调度算法,或在同一级调度中,结合几种调度算法先来先服务算法(FirstComeFirstServed,FCFS)

按照作业进入系统的顺序来逐个执行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论