书签 分享 收藏 举报 版权申诉 / 235
上传文档赚钱

类型操作系统教程第三版课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5186873
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:235
  • 大小:1.20MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《操作系统教程第三版课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    操作系统 教程 第三 课件
    资源描述:

    1、操作系统教程(第3版)第二章第二章 处理器管理处理器管理面向面向2121世纪课程教材世纪课程教材高等教育出版社出版2003年年8月月第二章第二章 处理器管理处理器管理2.1 中央处理器 2.2 中断技术2.3 进程及其实现2.4 线程及其实现2.5 处理器调度2.6 批处理作业的管理与调度2.7 低级调度2.1中央处理器2.1.1单处理器系统和多处理器系统2.1.2寄存器2.1.3特权指令与非特权指令2.1.4处理器状态2.1.5程序状态字寄存器2.1.1单处理器和多处理器系统 计算机系统的核心是中央处理器 单处理器系统:单处理器系统:一个计算机系统只包括一个运算处理器。多处理器系统:多处理器

    2、系统:一个计算机系统有多个运算处理器。计算机系统结构分类 单指令流单数据流单指令流单数据流(SISD)(SISD):一个处理器在一个存储器中:一个处理器在一个存储器中的数据上执行单条指令流的数据上执行单条指令流 单指令流多数据流单指令流多数据流(SIMD)(SIMD):单条指令流控制多个处理:单条指令流控制多个处理单元同时执行,每个处理单元包括处理器和相关的数据单元同时执行,每个处理单元包括处理器和相关的数据存储,一条指令控制了不同的处理器对不同的数据进行存储,一条指令控制了不同的处理器对不同的数据进行操作。向量机和阵列机是这类计算机系统的代表操作。向量机和阵列机是这类计算机系统的代表 多指令

    3、流单数据流多指令流单数据流(MISD)(MISD):一个数据流被传送给一组:一个数据流被传送给一组处理器,通过处理器上不同指令操作最终得到处理结果处理器,通过处理器上不同指令操作最终得到处理结果 多指令流多数据流多指令流多数据流(MIMD)(MIMD):多个处理器对各自不同的:多个处理器对各自不同的数据集同时执行不同的指令流。可以把数据集同时执行不同的指令流。可以把MIMDMIMD系统划分系统划分为共享内存紧密耦合系统和内存分布松散耦合系统两类为共享内存紧密耦合系统和内存分布松散耦合系统两类2.1.2寄存器(1)计算机系统的处理器包括一组寄存器,其个数根据机型的不同而不同,它们构成了一级存储,

    4、比主存容量小,但访问速度快。这组寄存器所存储的信息与程序的执行有很大关系,构成了处理器现场。寄存器(2)通用寄存器:数据寄存器:基地址寄存器:I/O地址寄存器:I/O缓冲寄存器:控制寄存器:其他寄存器2.1.3 特权指令与非特权指令(1)机器指令的集合称指令系统(1)数据处理类指令;(2)转移类指令;(3)数据传送类指令;(4)移位与字符串指令;(5)I/O类指令。特权指令与非特权指令(2)从资源管理和控制程序执行的角度出发,必须把指令系统中的指令分作两部分:特权指令和非特权指令特权指令和非特权指令。特权指令是指只能提供给操作系统的核心程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位

    5、、清内存、建立存储键,加载PSW等。2.1.4 处理器状态 中央处理器怎么知道当前是操作系统还是一般用户程序在运行呢?处理器状态标志和设置处理器成不同状态:管理状态(特权状态、系统模式、特态或管态)和用户状态(目标状态、用户模式、常态或目态)处理器处于管理状态时,程序可以执行全部指令,使用所有资源,具有改变处理器状态的能力;处理器处于用户状态时,程序只能执行非特权指令 Intel Pentium的处理器状态有四种,支持4个保护级别,0级权限最高,3级权限最低 2.1.5 程序状态字寄存器(1)计算机如何知道当前处于何种工作状态?这时能否执行特权指令?通常操作系统都引入程序状态字PSW(Prog

    6、ram Status Word)来区别不同的处理器工作状态 PSW用来控制指令执行顺序并保留和指示与程序有关的系统状态,主要作用是实现程序状态的保护和恢复 每个程序都有一个与其执行相关的PSW,每个处理器都设置一个PSW寄存器。程序占有处理器执行,它的PSW将占有PSW寄存器 程序状态字寄存器(2)PSW寄存器包括以下内容:程序基本状态:(1)程序计数器;(2)条件码;(3)处理器状态位。中断码。保存程序执行时当前发生的中断事件。中断屏蔽位。指明程序执行中发生中断事件时,是否响应出现的中断事件。IBM360/370系列计算机程序状态字的基本格式 XX X X XXXX X X XXXXXX8位

    7、系统屏蔽4位CMWP字段4位程序屏蔽4位保护键16位中断码字段指令长和条件码24位指令地址Intel Pentium程序状态字 Intel Pentium中,PSW由标志寄存器EFLAGS和指令指针寄存器EIP组成,均为32位。EFLAGS的低16位称FLAGS,标志可划分为三组:状态标志、控制标志、系统标志。2.2中断技术2.2.1中断的概念2.2.2中断源分类2.2.3中断装置2.2.4中断处理程序2.2.5中断事件的具体处理方法2.2.6中断的优先级和多重中断2.2.7实例研究:Windows2000/XP中断处理2.2.8实例研究:Solaris中断处理2.2.9实例研究:Linux中

    8、断处理2.2.1中断的概念 请求系统服务,实现并行工作,处理突发事件,满足实时要求,都需要打断处理器正常的工作,为此,提出了中断概念。中断的定义 中断中断是指程序执行过程中,当发生某个事件时,中止CPU上现行程序的运行,引出处理该事件的程序执行的过程。2.2.2中断源分类(1)从中断事件的性质和激活的手段来说,可以分成两类:强迫性中断事件强迫性中断事件强迫性中断事件不是正在运行的程序所期待的,而是由于某种事故或外部请求信息所引起的,分为:机器故障中断事件。程序性中断事件。外部中断事件。输入输出中断事件。自愿性中断事件自愿性中断事件自愿性中断事件是正在运行的程序所期待的事件。中断源分类(2)两类

    9、中断事件 运行程序中断处理程序中断装置中断处理程序中断装置机器故障中断事件程序性中断事件外部中断事件输入输出中断事件运行程序访管指令中断源分类(3)按照中断信号的来源,可把中断分为如下两类:外中断(又称中断)指来自处理器和主存之外的中断。内中断(又称异常)指来自处理器和主存内部的中断。中断源分类(4)外中断包括:电源故障中断、时钟中断、控制台中断、它机中断和I/O中断等。不同的中断具有不同的中断优先级,处理高一级中断时,往往会屏蔽部分或全部低级中断。内中断包括:通路校验错、主存奇偶错、非法操作码、地址越界、页面失效、调试指令、访管中断、算术操作溢出等各种程序性中断。异常是不能被屏蔽的,一旦出现

    10、应立即响应并加以处理。中断和异常的区别 中断中断是由与现行指令无关的中断信号触发的(异步的),且中断的发生与CPU处在用户模式或内核模式无关,在两条机器指令之间才可响应中断,一般来说,中断处理程序提供的服务不是为当前进程所需的;异常异常是由处理器正在执行现行指令而引起的,一条指令执行期间允许响应异常,异常处理程序提供的服务是为当前进程所用的。异常包括很多方面,有出错(fault),也有陷入(trap)。出错和陷入的区别 它们发生时保存的返回指令地址不同,出错保存指向触发异常的那条指令,而陷入保存指向触发异常的那条指令的下一条指令。从异常返回时,出错会重新执行那条指令,而陷入就不会重新执行那条指

    11、令。如缺页异常是一种出错,而陷入主要应用在调试中。硬中断与软中断 中断和异常要通过硬件设施来产生中断请求,可看作硬中断硬中断。不必由硬件发信号而能引发的中断称软中断,软中断软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。2.2.3 中断装置 发现中断源并产生中断的硬件称中断装置 所有计算机系统都采用硬件和软件结合的方法实现中断处理 中断装置主要做以下三件事:发现中断源 保护现场 启动处理中断事件的程序2.2.4 中断处理程序 处理中断事件的程序称为中断处理程序。它的主要任务是处理中断事件和恢复正常操作 不同中断源对应不同中断处理程序,故快速找到中断处理程序的入口地址是

    12、一个关键问题 中断处理程序主要做四项工作:保护未被硬件保护的一些必需的处理状态 识别各个中断源,分析产生中断的原因 处理发生的中断事件 恢复正常操作 IBM中大型机中断响应过程 外中断旧PSW访管中断旧PSW程序中断旧PSW机器故障中断旧PSWI/O中断旧PSW外中断新PSW访管中断新PSW程序中断新PSW机器故障中断新PSWI/O中断新PSW18202830385860687078现行PSW中断时保存现行PSW中断时装入现行PSW 中断后恢复PSW主存专用双字单元 (16进制)装配中断码 IBM PC机中断的响应过程 IPCSPSW现行PSW 寄存器新IP新CS老IP老CS老PSW新栈顶主存

    13、新PSW2.2.5 中断事件具体处理方法1、机器故障中断事件的处理 事件是由硬件故障产生的,排除故障须进行人工干预。中断处理能做的工作是:保护现场,防止故障蔓延,报告给操作员并提供故障信息以便维修和校正,及对程序中所造成的破坏进行估价和恢复。2、程序性中断事件的处理 终止程序执行 警告用户 交给用户处理3、外部中断事件的处理 时钟是操作系统进行调度工作的重要工具,如让分时进程作时间片轮转、让实时进程定时发出或接收控制信号、系统定时唤醒或阻塞一个进程、对用户进程进行记账 时钟可分成绝对时钟和间隔时钟两种 控制台中断事件的处理4、I/O中断的处理(1)I/O中断种类较多,处理方法各异1)I/O操作

    14、正常结束后的处理2)I/O操作发生故障后的处理3)I/O操作发生异常后的处理4)设备报到或设备结束的处理 5、自愿中断事件的处理(1)系统程序或用户程序执行访管指令而引起的中断,它表示运行程序对操作系统功能的调用,所以,也称系统调用,可以看作是机器指令的一种扩充。自愿中断事件的处理(2)系统调用机制通过特殊硬指令和中断系统来实现。共性处理流程:用户程序执行n号系统调用 通过中断系统进入访管中断处理,保护现场 通过系统调用入口表,按功能号跳转找到相应功能入口地址 执行相应例行程序,结束后正常情况返回系统调用的下一条指令执行2.2.6 中断优先级和多重中断1、中断的优先级2、中断的屏蔽3、多重中断

    15、事件的处理 1 中断优先级 计算机执行的每一瞬间,可能有几个中断事件同时发生,中断装置如何来响应同时发生的中断呢?它按照预定顺序来响应,这个预定顺序称中断的优先级中断的优先级,首先响应优先级高的中断事件。2 中断的屏蔽 主机可允许或禁止某类中断的响应,如允许或禁止所有的I/O中断、外部中断、及某些程序性中断。有些中断是不能被禁止的,例如,计算机中的自愿性访管中断就不能被禁止。3多重中断事件的处理 中断正在进行处理期间,这时 CPU又响应了新的中断事件,于 是暂时停止正在运行的中断处理 程序,转去执行新的中断处理程 序,这就叫多重中断(又称中断多重中断(又称中断 嵌套)嵌套)。2.2.7实例研究

    16、:Windows 2000/XP中断处理 Windows 2000/XP中断类型 中断中断有有I/O设备、处理器时钟或定时器等,可以启用或禁用。中断是异步事件,可能随时发生,与处理器正在执行的内容无关。异常异常是同步事件,它是某一个特定指令执行的结果。异常的例子是内存访问错误、调试指令及被零除。内核也将系统服务调用视作异常。硬件和软件都可以产生中断和异常,如总线出错异常由硬件造成,而被零除异常是由软件引起的;同样,I/O设备可产生中断,而内核自身也可以发出中断。Windows2000/XP陷阱调度 中断服务例程中断服务例程中断服务例程异常调度器虚存管理的页面管理器中断调度器系统服务调度器异常调

    17、度器陷阱处理程序异常帧虚拟地址异常硬件异常软件异常系统服务调用中断 Windows2000/XP中断请求级 系统关闭高31掉电30处理器内的中断29时钟28配置文件设备n设备1Dispatch/DPC2APC1低0硬件中断软件中断正常的线程执行Windows 2000/XP中断中断屏蔽 高掉电处理器内的中断时钟配置文件设备n设备1在处理器A上被屏蔽的中断Dispatch/DPCAPC低IRQL=时钟处理器A在处理器B上被屏蔽的中断IRQL=Dispatch/DPC处理器BWindows 2000/XP硬件中断处理 高掉电处理器间的中断时钟设备n设备1中断调度程序接收 到中断源的IRQL,用作查

    18、询IDT的索引Dispatch/DPCAPC低有中断产生线程调度程序/DPC处理程序(无)系统关闭例程系统调电例程处理器间中断处理程序时钟处理程序设备n ISR设备1 ISRAPC处理程序中断调度程序跟随该指针,调用相应的处理程序Windows 2000/XP软件中断处理 多数中断由硬件产生,但内核也为多种任务产生软件中断,包括:启动线程调度、处理计时器到时、在特定线程的描述表中异步执行一个过程及支持异步I/O等。延迟过程调用DPC软件中断延迟过程调用延迟过程调用-提交DPC 高掉电如果IRQL降到比Dispatch/DPC级低,则DPC中断发生。Dispatch/DPCAPC低定时器到时,内

    19、核排好DPC队列,准备释放等候在定时器上的所有 线程,然后内核请求软件中断。调度程序DPC中断之后,控制传送给(线程)调度程序DPCDPCDPC调度程序执行DPC中的每一个DPC例程,然后使队列变空。如果需要,调度程序还重新安排处理器异步过程调用 异步过程调用APC为用户程序和系统代码提供了一种在特殊用户线程的描述表(特殊的地址空间)中执行代码的方法。异常调度 异常是由运行程序的执行产生的情况。异常处理工具,允许应用程序在异常发生时可以得到控制。应用程序可以固定这个状态并返回到异常发生的地方展开堆栈,也可以向系统声明不能识别异常,并继续搜寻能处理异常的异常处理程序。除陷阱处理程序解决的异常外,

    20、所有异常均由异常调度程序提供服务,它的任务是找到能处理该异常的异常处理程序。如果异常产生于核心态,异常调度程序将调用一个例程来定位处理该异常的异常处理程序。没有被处理的核心态异常是一种致命的系统错误。用户态核心态系统服务调用陷阱处理程序系统服务调度程序系统服务调度表0123n系统服务扩展系统服务2系统服务调度(1)系统服务调度(2)调用WriteFile()Win32应用程序调用NtWriteFile返回调用者KERNEL32.DLL中的WriteFileINT 2E返回调用者NTDLL.DLL中的NtWriteFile调用NtWriteFile开中断NTOSKRNL.EXE中的KiSyste

    21、mService执行操作返回调用者NTOSKRNL.EXE 中的NtWriteFile调用USER及GDI服务应用程序INT 2E返回调用者GDI32.DLL或USER32.DLL调用WIN32例程开中断NTOSKRNL.EXE中的KiSystemService执行操作返回调用者WIN32K.SYS 中的服务入口点用户态核心态WIN32专用WIN32专用所有子系统使用软件中断软件中断WIN32内核APIWIN32 USER及GDI API2.2.9实例研究:Linux中断处理 1 Linux中断处理过程 2 快中断与慢中断 3 底半处理 4 任务队列 5 底半处理数据结构 6 底半处理的执行过

    22、程7 Linux软中断机制 快中断与慢中断Linux中,可以区分快中断和慢中断两类中断事件。处理慢中断前需保存所有寄存器的内容,而快中断处理仅要保存被常规C函数修改的寄存器;慢中断处理时,不屏蔽其他中断信号,而快中断处理时会屏蔽所有其他中断;慢中断处理完毕后,通常不立即返回被中断的进程,而是进入调度程序重新调度,调度结果未必是被中断的进程运行(是抢先式调度)。而快中断处理完毕后,通常恢复现场返回被中断的进程继续执行(是非抢先式调度)。底半处理 为了尽快缩短快中断处理时间,以便及时响应处理期间到达的其他中断信号,引入了底半处理的概念。(1)什么是底半处理?(2)为什么需要有底半处理?bottom

    23、 half handling是一种任务延迟处理机制 “硬中断”是外部设备对CPU的中断,top half是硬中断;同时,“软中断”通常是硬中断服务程序对内核的中断,bottom half是软中断;而“信号”也是一种软中断,“信号”是由内核或进程对其他进程的中断。任务队列 Linux内核中设立任务队列,这是核心对任务进行延迟处理的方法,提供对任务队列中任务排队及处理的通用机制。任务队列和底半处理过程bottom half的关系?核心建立和维护三个一般性任务队列:(1)定时器队列(TQ-TIMER)(2)即时队列(TQ-IMMEDIATE)(3)进程调度队列(TQ-SCHEDULER底半处理数据结

    24、构 bh-active31 0 bh-mask31 0bh-base底半处理过程031底半处理的执行过程 三种情况下执行bottom half处理过程:当调度程序欲选择下一个运行进程之前(Schedule()。当从系统调用返回之前(ret_from_syscall)。当每个中断处理和异常处理返回前(ret_from_intr和ret_from_exception)。定时器中断(IRQ0)中断服务例程的top half与bottom half处理过程间的联系。定时器中断服务例程(函数)叫timer-interrupt,执行它的top half函数为do-timer。执行它的bottom half

    25、函数为timer-bh。Linux软中断机制 Linux的 bottom half Linux的 tasklet Linux的 softirq2.3 进程及其实现2.3.1 进程的定义和属属性2.3.2 进程的状态和转换2.3.3 进程的描述2.3.4 进程切换与模式切换2.3.5 进程的控制2.3.6 实例研究:UNIX SVR4进程管理2.3.7 实例研究:Linux进程管理2.3.1 进程的定义和性质进程进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。进程是一个既能用来共享资源,又能描述程序并发执行过程的一个基本单位。操作

    26、系统引入进程的概念 从理论角度看,是对正在运行的程序过程的抽象;从实现角度看,是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。操作系统为什么要引入进程概念?原因1-刻画系统的动态性,发挥系统的并发性,提高资源利用率。原因2-它能解决系统的“共享性”,正确描述程序的执行状态。“可再用”程序 “可再入”程序 “可再入”程序具有的性质 进程的属性 结构性:共享性:动态性:独立性:制约性:并发性:“可再入”程序举例 编译程序P(P的入口,处 理 源程序乙)(P把源程序甲的信息记盘等磁盘完成)AB源程序甲源程序乙2.3.2 进程的状态和转换进程三态模

    27、型及其状态转换 运行态就绪态等待态选中落选出现等待事件等待事件结束进程五态模型及其转换运行态就绪态等待态选中落选出现等待事件等待事件结束新建态终止态进程的挂起 为什么要有“挂起”状态?由于进程的不断创建,系统资源已不能满足进程运行的要求,就必须把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参与进程调度,起到平滑系统操作负荷的目的。进程的挂起原因(1)(1)系统中的进程均处于等待状态,需要把一些阻塞进程对换出去,腾出足够内存装入就绪进程运行。(2)进程竞争资源,导致系统资源不足,负荷过重,需要挂起部分进程以调整系统负荷,保证系统的实时性或让系统正常运行。(3)定期执行的进程(如审计

    28、、监控、记账程序)对换出去,以减轻系统负荷。进程的挂起原因(2)(4)用户要求挂起自己的进程,以便进行某些调试、检查和改正。(5)父进程要求挂起后代进程,以进行某些检查和改正。(6)操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏时,需要挂起某些进程以排除故障。具有挂起功能的进程状态及其转换 挂起等待事件结束出现等待事件解除挂起挂起落选选中运行态就绪态等待事件结束终止态新建态挂起就绪态解除挂起挂起挂起等待态等待态提交提交具有挂起进程功能的进程状态 进程增加了两个新状态:挂起就绪态(ready suspend)表明进程具备运行条件但目前在二级存

    29、储器中,当它被对换到主存才能被调度执行。挂起等待态(blocked suspend)表明进程正在等待某一个事件且在二级存储器中。挂起进程具有如下特征该进程不能立即被执行。挂起进程可能会等待事件,但所等待事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。结束进程挂起状态的命令只能通过操作系统或父进程发出。2.3.3 2.3.3 进程的描述进程的描述 操作系统核心控制结构是进程结构,资源管理的数据结构将围绕进程结构展开。操作系统的控制表分为四类,进程控制表,存储控制表,I/O控制表和文件控制表。操作系统控制表的通用结构 Mem

    30、oryDevicesFilesProcessesMemory TablesI/O TablesFile TablesPrimary Process TableProcess 1Process NProcess 2Process ImageProcess 1ImageProcess NImage 进程映像 操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文(context)。当系统调度新进程占有处理器时,新老进程随之发生上下文切换。进程的运行被认为是在上下文中执行。进程上下文组成 用户级上下文:由用户程序块、用户数据块和用户堆栈组成的进程地址空间。系统级上下文:包括进程的标识信息、现场

    31、信息和控制信息,进程环境块,及系统堆栈等组成的进程地址空间。寄存器上下文:由PSW寄存器和各类控制寄存器、地址寄存器、通用寄存器组成。进程有四个要素组成进程程序块进程程序块进程数据块进程数据块系统堆栈系统堆栈用户堆栈用户堆栈用户进程在虚拟内存中的组织 进程标识信息进程现场信息进程控制信息用户堆栈用户私有地址空间(代码、数据)进程控制块共享地址空间 进程控制块 进程控制块P C B,是操作系统用于记录和刻划进程状态及有关信息的数据结构。也是操作系统掌握进程的唯一资料结构,它包括了进程执行时的情况,以及进程让出处理器后所处的状态、断点等信息。进程控制块包含三类信息 标识信息 现场信息 控制信息 进

    32、程管理 处于同一状态的所有PCB链接在一起的数据结构称为进程队列(Process Queues)。同一状态进程的PCB既可按先来先到的原则排成队列;也可按优先数或其它原则排成队列。单向链接与双向链接队列标志 系统为每个队列设置一个队列标志:单向链接时,队列标志指引元指向队列中第一个进程的队列指引元的位置;双向链接时,队列标志的后向指引元指向队列中第一个进程的后向队列指引元的位置;队列标志的前向指引元指向队列中最后一个进程的前向队列指引元的位置 进程控制块的链接 队列标志0队列标志00后向前向(a)单向连接(b)双向连接是队列指引元队列管理和状态转换示意图 处理器指派提交完成超时事件1等待队列事

    33、件2等待队列事件n等待队列就绪队列等待事件1等待事件2等待事件n事件1出现事件2出现事件n出现表格法组织PCB 表格法组织PCB。所有进程的PCB都组织在一个线性表中,进程调度时需要查找整个PCB表;也可以把相同状态进程的PCB组织在一个线性表中,系统有多个线性表,这样可缩短查表时间。2.3.4 进程切换与CPU模式切换 进程切换是让处于运行态的进程中断运行,让出处理器,这时要做一次进程上下文切换、即保存老进程状态而装入被保护了的新进程的状态,以便新进程运行进程切换的步骤 保存被中断进程的处理器现场信息 修改被中断进程的进程控制块的有关信息,如进程状态等 把被中断进程的进程控制块加入有关队列

    34、选择下一个占有处理器运行的进程 修改被选中进程的进程控制块的有关信息 根据被选中进程设置操作系统用到的地址转换和存储保护信息 根据被选中进程恢复处理器现场调度和切换时机问题 请求调度的事件发生后,就会运行低级调度程序,低级调度程序选中新的就绪进程后,就会进行上下文切换。实际上,由于种种原因,调度和切换并不一定能一气呵成。通常的做法是,由内核置上请求调度标志,延迟到上述工作完成后再进行调度和进程上下文切换,Linux进程调度标志位need-resched,Windows延迟过程调用DPC/dispatch软件中断。CPU模式切换 当中断发生时,暂时中断正在执行的用户进程,把进程从用户状态切换到内

    35、核状态,去执行操作系统例行程序以获得服务,这就是一次模式切换模式切换,内核在被中断了的进程的上下文中对这个中断事件作处理,即使该中断可能不是此进程引起的模式切换的步骤保存被中断进程的处理器现场信息。根据中断号置程序计数器。把用户状态切换到内核状态,以便执行中断处理程序。CPU模式切换与进程上下文切换 模式切换不同于进程切换,它并不引起进程状态变化,也不一定引起进程的切换,在完成了中断调用之后,完全可以再通过一次逆向的模式切换来继续执行用户进程。UNIX中进程上下文切换和模式切换 核心态运行系统调用或中断(隐含模式切换)模式切换用户态运行等待状态就绪状态发生事件唤醒调度进程中断、中断返回允许的上

    36、下文切换切换2.3.5 进程的控制 处理器管理的一个主要工作是对进程的控制,包括:创建进程、阻塞进程、唤醒进程、挂起进程、激活进程、终止进程和撤销进程等。这些控制和管理功能由操作系统中的原语实现。原语原语(Primitive)是在管态下执行、完成系统特定功能的过程。原语和机器指令类似,其特点是执行过程中不允许被中断,是一个不可分割的基本单位,原语的执行是顺序的而不可能是并发的。2.3.6 实例研究:UNIX SVR4的进程管理 UNIX SVR4采用基于用户进程的运行模型,操作系统功能在用户进程的环境中执行,需要在用户和内核模式间切换。UNIX SVR4允许两类进程:用户进程和系统进程。系统进

    37、程在内核模式下执行,完成系统的一些重要功能。用户进程在用户模式下执行用户程序,系统调用、中断和异常将引起模式切换。UNIX SVR4 进程状态 user running:kernel running:preempted:ready to run,in memory:Asleep in memory:ready to run,swapped:sleeping,swapped:zombie:UNIX SVR4进程状态及其转换 内存就绪用户态运行内核态运行被剥夺就绪换出创建内存睡眠睡眠换出僵死返回用户模式系统调用或中断返回剥夺 选中退出中断,中断返回内存空间足够内存空间不足唤醒唤醒换出换进换出睡眠F

    38、ork UNIX SVR4的进程描述UNIX进程由三部分组成:proc结构、数据段和正文段,合称进程映像,UNIX中把进程定义为映像的执行。PCB由基本控制块proc结构和扩充控制块user结构组成。proc结构存放一个进程最基本、必需的信息,常驻内存;user结构存放进程运行时才用到的数据和状态信息,当进程暂时不在处理机上运行时,就把它放在磁盘的对换区中,进程的user结构总和进程的数据段一起,在主存和磁盘对换区之间换进/换出UNIX SVR4进程组成 processstructureuserstructurekernelstacktextstructure stack data textS

    39、ystem data structureuser spaceSwappable process imageResident tablesUNIX SVR4的进程创建 fork()创建子进程,系统执行操作:为子进程分配进程表。为子进程分配进程标识符。复制父进程的进程映像,但不复制共享内存区。增加父进程所打开文件的计数,表示新进程也在使用这些文件。把子进程置为ready to run状态。返回子进程标识符给父进程,把0值返回给子进程。2.3.7 实例研究:Linux进程管理 Linux的进程概念与传统操作系统中的进程概念完全一致,进程是操作系统调度的最小单位。用户态称进程,核心态称任务,实质上是一

    40、个实体Linux的进程状态 TASK_RUNNING:TASK_INTERRUPTIBLE:TASK_UNINTERRUPTIBLE:TASK_ZOMBIE:TASK_STOPPED:TASK_SWAPPING:Linux的进程状态转换 僵死TASK_ZOMBIE就绪TASK_RUNNING不可中断TASK_UNINTERRUPTIBLE可中断TASK_INTERRUPTIBLE停止TASK_STOPPED占有CPU运行调度schedulle 时间片到申请资源未果,调用interruptible_sleep_on()申请资源未果,调用sleep_on()申请资源可用后wake_up()申请资源

    41、可用,收到信号、wake_up()wake_up_interruptible()创建do_fork()执行do_exit()跟踪系统调用,执行syscall_trace()sys_exit()schedulle()收到SIG_KILL或SIG_CONT后,执行wake_up()Linux创建进程 sys_fork()和sys_clone都通过调用do_fork()函数来完成进程的创建。分配进程控制块task_struct的内存和进程所需的堆栈,并监测是否可以增加新进程;拷贝当前进程的内容,并对数据成员初始化;为进程运行做准备;返回生成的新进程的进程标识号(pid)。如果进程是根据sys_clo

    42、ne()产生的,它的进程标识号就是当前进程的进程标识号,并且进程控制块中的一些成员指针并不进行复制,仅仅把这些成员指针的计数count增加1。这样,父子进程可以有效地共享资源。Linux进程终止 进程终止的系统调用sys_exit()通过调用do_exit()函数实现。函数do_exit()释放进程占用的大 部 分 资 源,进 入TASK_ZOMBIE状态。2.4 线程及其实现 2.4.1 引入多线程技术的动机 2.4.2 多线程环境中的进程和线程 2.4.3 线程的实现 2.4.4 实例研究:Solaris的进程与线程 2.4.5 实例研究:Windows2000/XP的进程与线程2.4.1

    43、 引入多线程技术的动机 考察一个文件服务器的例子 单线程(结构)进程(Single Threaded Process)多线程(结构)进程(Multiple Threaded process)单线程结构进程给并发程序设计效率带来问题进程切换开销大进程通信代价大进程间的并发性粒度较粗,并 发度不高不适合并行计算和分布并行计算 的要求不适合客户/服务器计算的要求。线程的概念(1)操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。线程的概念(2)解决问题的基本思路:把进程的两

    44、项功能“独立分配资源”与“被调度分派执行”分离开来,进程作为系统资源分配和保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。2.4.2 多线程环境中的进程与线程 单线程进程的内存布局和运行单线程进程的内存布局和运行进程控制块进 程用户地址空间用户堆栈系统堆栈管理者执行序列 单线程进程(模型)用户地址空间进程控制块用户堆栈系统堆栈 管理和执行相分离的进程模型 用户堆栈系统堆栈执行控制进 程进程控制块用户地址空间共 享执行序列管理者执行序列用户堆栈系统堆栈执行控制 多线程进程的内存布局 多线程进程模型 用户地址

    45、空间进程控制块线程控制块系统堆栈用户堆栈线程1线程控制块系统堆栈用户堆栈线程N多线程环境中进程的定义 进程进程是操作系统中进行保护和资源分配的基本单位。它具有:一个虚拟地址空间,用来容纳进程的映像;对处理器、其他(通信的)进程、文件和I/O资源等的存取保护机制。多线程环境中的线程概念 线程线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。线程组成与特性组成 线程执行状态(运行、就绪、);当线程不运行时,有一个受保护的线程上下文,用于存储现场信息。所以,线程也可被看作是执行在进程内的

    46、一个独立的程序计数器;一个执行堆栈 一个容纳局部变量的主存存储区。特性 并行性:共享性:动态性:结构性:线程又称轻量进程 线程运行在进程的上下文中,并使用进程的资源和环境。系统调度的基本单位是线程而不是进程,每当创建一个进程时,至少要同时为该进程创建一个线程,否则该进程无法被调度执行。线程的状态 线程状态有:运行、就绪和阻塞,线程的状态转换也类似于进程。挂起状态对线程是没有意义的,如果进程挂起后被对换出主存,则它的所有线程因共享了进程的地址空间,也必须全部对换出去。线程管理和线程库(1)多线程技术利用线程包(库)提供线程原语集来支持多线程运行,有的操作系统直接支持多线程,而有的操作系统不支持多

    47、线程。线程包(库)可分成两种:用户空间中运行的线程包(库)和内核中运行的线程包(库)。线程管理和线程库(2)线程包(库)提供一组API,支持应用程序创建、调度、撤销和管理线程的运行。基本线程控制原语:孵化(Spawn):又称创建线程。封锁(Block):又称阻塞线程。活化(Unblock):又称恢复线程。结束(Finish):又称撤销线程。并发多线程程序设计的优点 快速线程切换。减少(系统)管理开销。(线程)通信易于实现。(线程)通信易于实现。并行程度提高。节省内存空间。多线程技术的应用 进程中线程多种组织方式:第一种是调度员工作者模式 第二种是组模式 第三种是流水线模式 多线程技术的应用 前

    48、台和后台工作 C/S应用模式 异步处理 加快执行速度。设计用户接口。2.4.3 线程的实现从实现的角度看,线程可以分成:用户级线程ULT(如Java,Informix)内核级线程KLT(如OS/2)。混合式线程(如,Solaris)。各种线程实现方法 用户空间线程库P内核空间2)用户级线程用户空间P内核空间1)内核级线程用户空间线程库PP内核空间3)混合式线程ULTKLTProcessP1.内核级线程(1)纯内核级线程设施中,线程管理的所有工作由操作系统内核做。内核专门提供KLT API,应用程序区不需要有线程管理代码。Windows NT 和 OS/2都是采用这种方法的例子。内核级线程(2)

    49、线程执行中可通过内核创建线程原语来创建其他线程,这个应用的所有线程均在一个进程中获得支持。内核要为整个进程及进程中的单个线程维护现场信息,应在内核中建立和维护PCB及TCB,内核的调度是在线程的基础上进行的。内核级线程主要优点 多处理器上,内核能同时调度同一进程中多个线程并行执行。进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行。内核线程数据结构和堆栈很小,KLT切换快,内核自身也可用多线程技术实现,能提高系统的执行速度和效率。内核级线程的主要缺点 应用程序线程在用户态运行,而线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户

    50、态的模式切换,系统开销较大。2 用户级线程 纯ULT设施中,线程管理工作由应用程序做,内核不知道线程的存在。任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行来实现多线程。线程库是一个ULT管理的例行程序包,实质上线程库是线程的运行支撑环境。ULT线程“孵化”过程 进程开始只有一个线程,它可以孵化新线程,通过过程调用把控制权传送给“孵化”过程,由线程库为新线程创建一个TCB,并置为就绪态,按一定的调度算法把控制权传递给进程中处于就绪态的一个线程。当控制权传送到线程库时,当前线程的现场信息应被保存,而当线程库调度一个线程执行时,要恢复它的现场信息。ULT优点 线程切换不需要内核特权方式

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:操作系统教程第三版课件.ppt
    链接地址:https://www.163wenku.com/p-5186873.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库