(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf_第1页
(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf_第2页
(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf_第3页
(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf_第4页
(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(物理电子学专业论文)基于windows的激光电源控制系统的研究.pdf.pdf 免费下载

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

文档简介

摘要 在研制基于w i n d o w s 平台的激光电源数控系统的基础上完成了本 论文。 计算机技术的高速发展,激光技术的广泛应用,使两者紧密结合。 w i n d o w s 操作系统具有开放性、易操作性、集成开发环境的多样性, w i n d o w s 系统已成为p c 机上的主流操作系统,所以开发基于 w i n d o w s 平台的数控系统已是必然趋势。本文研究以p c 机为基础,运 行于w i n d o w s 操作系统的开放式数控系统。其控制主体为y a g 脉冲激 光电源,为了实现激光电源正常工作需要的各种控制信号,制作了基于 p c 机局部总线的接口控制卡。论文的主要工作包括: l 、论述了激光电源的发展趋势及其与计算机技术的融合。 2 、对基于w i n d o w s 的数控系统下的实时控制进行了研究,对采用 动态链接库和v x d 技术处理中断进行了比较和分析,并且详尽地 论述了v x d 技术的原理。 3 、对w i n d o w s 下的数控系统的多任务特性进行了分析,并给出了 采用多线程技术来解决数控系统下并行多任务调度的方法。 4 、论述了基于p c 机的激光电源接1 :7 控制卡的实现。 5 、使用v x d 技术和多线程技术,在w i n d o w s 9 8 下以激光电源接口控 制卡为核心构建了一个基本实验性的数控系统。 关键词:数控系统,实时,虚拟设备驱动,多线程,面向对象,接口 a b s t r a c t 1 1 1 i st h e s i si sa c c o m p l i s h e dw i t ht h e s t u d y i n go ft h ec o n t r o ls y s t e mo f l a s e r p o w e r w i t ht h es h a r p l yd e v e l o p m e n to fn u m e r i c a lc o n t r o l s y s t e ma n dl a s e r t e c h n o l o g y ,t h et w ot e c h n o l o g yh a v eb e e nc o m b i n e d t o d a yw i n d o w s h a sb e e nt h e m a j o ro s ,i tp o s s e s s e s s o m ec h a r a c t e r i s t i c so f o p e n a r c h i t e c t u r e ,e a s yo p e r a t i n ga n di n t e g r a t e de x p l o i t i n ge n v i r o n m e n t ,s oi t i s e s s e n t i a lt oe x p l o i tt h ec n c s y s t e mo nb a s i so fw i n d o w s t h e c n c s y s t e m b a s e do nw i n d o w sh a sb e e na m a j o rd e v e l o p m e n t d i r e c t i o n n l i st h e s i sr e s e a r c h e st h ep c b a s e dc n c s y s t e m u n d e rw i n d o w s0 s t h em a i no b j e c to ft h i ss y s t e mi sy a gp u l s el a s e rp o w e r ac o n t r o lc a r d h a sb e e nd o n et og e n e r a t et h er e q u i r e ds i g n a lo fl a s e rp o w e r n l ef o l l o w i n g h a v eb e e nd o n ei nt h i st h e s i s : 1 d i s c u s st h ed e v e l o p m e n th i s t o r y ,c u r r e n tc o n d i t i o n sa n dt h et r e n do f l a s e rs y s t e ma n dc n c t e c h n o l o g y 2 r e s e a r c ht h er e a l t i m ec h a r a c t e ro fw i n d o w s 。d i s c u s sa n dc o m p a r e t h er e a l t i m ec o n t r o lt e c h n o l o g yu n d e rw i n d o w su s i n gd l la n d v x d b e s i d e s d i s c u s st h ev 心t e c h n o l o g yd e e p l y 3 s t u d y o nt h em u l t i t a s kc h a r a c t e ro f c n cu n d e rw i n d o w so s ,b r i n g f o r w a r dt h ew a y r e s o l v i n gt h em u l t i t a s km a n a g e m e n t o fc n c u s i n g m u l t i - t h r e a dt e c h n o l o g y 4 d i s c u s st h em e t h o du s i n gp cb u st e c h n o l o g yt op r o d u c et h ec o n t r o l c a r do fl a s e rp o w e r 5 p e r f o r ma nb a s i cc n c s y s t e mu s i n g t h ec o n t r o lc a r do fl a s e ru n d e r w i n d o w s 9 8o s k e y w o r d s :c n c s y s t e m ,r e a l - t i m e ,v x d ,m u l t i t h r e a d , o b j e c t o r i e n t e d ,i n t e r f a c e 第一章绪论 1 1 激光电源的发展及其与计算机技术的结合 激光技术已广泛应用于科学研究、工农业、军事及医疗等许多领域。 激光器电源是激光装置的重要组成部分。其性能好坏直接影响整个激 光装置的技术指标。 固体激光器电源的负载实际上就是一个气体放电灯,因此放电灯被 作为电源设计由重要影响的元件来考虑。对于y a g 脉冲激光器电源来 说,它的负载就是脉冲氙灯,当氙灯内有脉动大电流流过时,脉冲氙 灯进行弧光放电,则y a g 激光器的工作物质一掺钕钇铝石榴石晶体吸 收0 7 0 9 微米范围内的光能而形成受激辐射,从而发出激光” 在脉冲激光器电源中,电源的任务就是在重复频率的每一个周期 里,在储能电容器两端线性地到所希望的电压值。 从激光器出现到现在,激光电源已经有了很大发展,由最初的r c 充电方式到l c 恒流充电,开关电源技术的引入,极大的改善了激光器 电源的性能,很好的解决了电源存在的体积和重量问题。随着电子学 技术的不断进步及制造工艺的不断完善,出现了自行关断的功率场效 应晶体管( v m o s ) 和绝缘栅双板晶体管( i g b t ) 。这些是集高频, 高压,和大电流于一体的性能优越的电压控制器件。且具有高速度、 高可靠性、低功耗等特点。这些器件的出现( 压控型具有自关断能 力) 减小了放大和驱动电路的过渡环节,甚至可以采用计算机直接进 行控制,给计算机控制激光电源带来了便利,用微机控制的多功能激 光器电源相继问世 单片机的引入使得电源在控制精度方面有所提高,控制系统中各 种信号的产生及定时均由单片机实现,取代以往电位器调节及阻容定 时的繁琐,所有设置都是通过控制面板上的键盘操作实现的,即对电 源实现了数字化控制,控制系统以液晶等显示器和键盘作为人机交互 的界面,提高了操作的灵活性, p c 从产生到现在,其可靠性和计算能力飞速增长,硬件已完全实 现标准化,这些使得它更加适合于在工业环境下使用。p c 具有充足的 的支持软件来改善控制系统的用户界面、图形显示、动态仿真、数控 编程、故障诊断、网络通讯等功能。 目前,以微软视窗为突出代表的图形用户接口g u i 标准已经完全取 代d o s ,使操作方法与软件开发过程发生了很大变化。w i n 9 8 n t 以其一 致的图形界面风格、完善的内存管理、友善直观的操作方式被广泛接 受。基于p c 机的数控系统可以充分利用微机的软硬件资源,可以充分 利用计算机工业所提供的先进技术。以“性能不断提高,价格迅速下降” 的p c 作为硬件平台、面向具有统一操作界面、性能优良、被广泛接受 的w i n d o w s 操作系统( 目前的典型代表是w i n d o w s 9 5 9 8 、w l n d o w s n t ) 的开放式数控系统,是现在的大势所趋。电力电子技术、激光技术以 及计算机技术的不断发展,使计算机控制的激光电源的研制生产成为 必然。 1 2 本论文主要内容 本文以激光电源的控制系统为主体,探讨了实现p c 机与激光电源 通信的接口电路,对于w i n d o w s 系统下开发数控系统的几个关键问题: 包括w i n d o w s 系统下的实时控制问题及其实现,w i n d o w s 下数控系统 多任务划分及其实现等进行了研究和分析,构建了基于p c 机和w i n d o w s 操作界面的激光电源数控系统。 软件开发使用微软公司的v i s u a i c + + 6 0 作为开发平台,利用多 线程技术和vx d 技术,充分利用面向对象、软件重用等软件工程中的 理论,使系统软件具备了可移植性和互操作性,允许用户扩充或简化 系统基本模块或构件。 第二章w i n d o w s 平台下实时控制研究 2 1w i n d o w s 9 8 系统实现实时控制的难点 过去的实时系统,一般都是基于d o s 操作系统。d o s 是一个过程 控制系统,程序员开发实时系统对程序下一步要做什么完全可以控制, 即使程序被中断也不必担忧,因为中断执行完毕后仍返回被中断的程 序流程,而且d o s 允许修改中断向量,允许直接与硬件打交道,所以 实时性很强。 w i n d o w s 9 8 是事件驱动的操作系统。事件转换成消息,在系统或应 用程序消息队列中排队,通过消息队列的流动来完成任务。但事件的 产生是随机的,因此程序下一步作什么也是未知的 输入消息 系统硬件 发送自定 义消息 定时中断 处理 专用设备 中断服务 程序 专用设备 中断请求 系统队列 应用程 序队列a 应用程 序队列b w i n d o w s 操作系统 图2 - 1w i n d o w s 消息处理机制 w i n m a i n 函数 消息循环 w i n d o w s 函数 w i n m a i n 函数 消息循环 w i n d o w s 函数 由于w i n d o w s 9 8 强制实现同m s d o s 和w i n d o w s 3 1 百分百的兼容, 所以在w i n d o w s 9 8 中包含了大量老的w i n d o w s 31 和m s d o s 的1 6 位 代码,这就导致大量来自w i n d o w s 3 1 和m s d o s 的早期1 6 位代码在 w i n d o w s 9 8 中不可重入,包括多数的图形和窗口管理函数( u s e r 和 g d i ) 。当w i n d o w s 9 5 中的一个3 2 位程序试图调用一个不可重入的1 6 位代码实现的系统服务时,必须首先获得一个系统范围的锁定( 或互斥) 来阻止其他线程进入这段不可重入的代码。更糟糕的是,1 6 位应用程序 在运行时保存这个锁定。因此,尽管w i n d o w s 9 8 的核心包含抢先的3 2 位多线程调度程序,但由于系统的大部分仍在不可重入代码中执行,因 而应用程序在多数时间内运行单个线程。 因此,在w i n d o w s 9 5 应用系统中,体现为调度的基本单位是线程。 如果这个线程在响应某个消息时始终占用c p u ,则系统的其他线程很有 可能不能获得系统资源。因此,在w i n d o w s 9 8 应用层上体现出来的,还 是一个非抢先式的系统,可以说w i n d o w s 9 8 并不是完全意义上的3 2 位 抢先多任务系统。当各种事件发生较为频繁而事件处理时间较长时,一 些事件就会因此而不能及时响应,这会给具有实时响应要求的工业控制 系统带来潜在的可靠性问题,可能会因操作中引发某事件而导致有实时 响应要求的控制响应发生延误,使控制的可靠性得不到保证。 2 2 实时控制中高精度定时实现的方法 实时控制系统的各个任务,包括输入、输出、控制计算和数据传输 都必须在确定时刻开始,在有效的截止时间内完成。因此,要完成实时 控制任务,首先就是要能获得精确的定时。 w i n d o w s 9 8 环境下获得定时时钟的方法有下面几种: 2 2 1 利用w i n d o w s 下的常规定时器 一般常用的是系统计时器,它使用函数s e t t i m e r 进行初始化,应 用程序响应s e t t i m e r 函数发送来的消息w m _ t i m e r 。这个定时器是i b m p c 硬件和r o mb i o s 构造的定时器逻辑的一个相当简单的扩展。p c 的 r o m 初始化i n t e l 8 2 5 9 定时器芯片来产生硬件中断0 8 h 。这个中断有时 称为”定时器滴答”中断。中断0 8 h 每隔5 4 。9 2 5 毫秒产生一次,或大约 每秒1 8 2 次。b i o s 使用中断0 8 h 更新存于b 1 0 s 数据区的”时间”值。因 此,这个定时器在w i n d o w s 中的最大缺点是计时器的最大分辨率是5 5 毫秒,也就是说应用程序每秒只能接收到1 8 个消息。此外,这个计时器 消息的优先权太低,只有在所有的消息( 除了消息w mp a i n t ) 被处理 后才能被处理。因此函数s e t t i m e r 只能用于一般的定时,如斥】屏显示时 间定时等,它远远不能满足实时数据采集的要求。 2 2 2 利用多媒体定时器 多媒体定时器( m u l t i m e d i a t i m e r ) 使用自己单独的线程( t h r e a d ) , 来调用一个自己的回调函数( c a l l b a c kf u n c t i o n ) 。它的优先级很高,它 每隔一定时间就发送一个消息而不管其它消息是否执行完。对于现在的 i n t e lc p u 来说,它的最小定时精度通常都可以达到1 毫秒。该定时器相 关的函数原型及说明见下表 函数原型功能 u n i tt i m e s e t e v e n t设置定时回调事件 ( u n i tu d e l a y ,u d e l a y :定时时间 u n i tu r e s o l u t i o n u r e s o l u t i o n :定时精度 l p t i m e c a l l b a c k l p f u n c t i o n :定时回调函数地址 1 p f u n c t i o n , d w u s e r :用户提供的回调数据 d w o r dd w u s e r u f l a g s :单次触发侗期事件 u n i t u f l a g s ) 函数返回:本定义事件i d 值 u n i tt i m e k i l l e v e n t清除特定定时事件 ( u n i tu t i m e r i d )u t i m e r l d :定时事件i d 函数返回:成功返回o u n i tt i m e b e g i n p e r i o d设置当前任务的最高定时精度,成 ( u n i t u p e f i o d )功返回0 ,并且开始定时周期 u n i tt i m e e n d p e f i o d清除前面设定的最高定时精度,成 ( t i n i tu p e d o d )功返回0 ,并且结束定时 表2 - 1w i n d o w s 中的多媒体定时函数 2 2 3 使用外界时钟定时 由于在w i n 3 2 多任务抢占式工作方式下应用程序不能完全占有 c p u ,因此w i n d o w s 环境下软件定时不准确。所以在实际应用中,也可 采用外界专门的硬件时钟电路来获取可靠的时间触发信号,将外界的定 时触发作为一个硬件中断,采用中断方式来进行实时系统中各种任务的 处理。这种方式既能够保证精确定时,又可随任务的不同而通过编程的 方式将它们的定时周期进行更改。 本课题是在w i n d o w s 9 8 环境下实现数控系统,方案设计期间,综合 考虑了以上三种定时方式,最终选择了外界硬件定时的方法来完成实时 性的激光电源控制任务。外扩1 6 位定时计数器8 2 5 4 提供时序控制信号。 该定时计数器计数速率可达1 0 m t t :,可以满足激光电源控制信号的时间要 求。每次定时结束,通过输出端向主机中请中断处理。只要编写特定的 中断服务程序,将实时处理任务放在中断服务程序中进行,就能满足实 时控制的要求对于实时性并不很强的任务,比如界面显示等,则使用 w i n d o w s 本身的消息机制实现 2 3 w i n d o w s 环境下实时中断的实现 2 3 1 使用动态链接库( d l l ) 技术 动态链接库是一个特殊函数集或资源文件,它与静态链接库( s t a t i c “n k l i b r a r y ) 的重要区别在于连接的时机。d l l 是在应用程序运行期间 被装入和连接的。动态连接库包括若干数据段和若干可执行的远程函数。 d l l 的主要特点是,在运行时与应用程序动态连接,且允许几个应用程 序共享。d l l 每个函数都是一个远程函数,在w i n d o w s 环境下, - 3 应用 程序调用这种远程函数时,它实际上是调用远程函数的重定位代码 ( r e l o a dt h u n k ) 。该重定位代码是在应用程序( 用户编写的) 装入该 d l l 库时,由系统放置于固定段中的一小段装入代码。w i n d o w s 系统以 谊戎码装入远程莲 数,舷将转入拭露该菇数。执行跌后,就遗务莠雩装入 的远程函数,完成一个进程的生命周期。 w i n d o w s 的内存管理,由于需要( 稼往在任务切换或运行大的程序 时) 使用虚拟内存技术岛硬盘动态交换内存数据,从而获得大的内存空 润,所以其内存申一般的段的地址是不阉定的。w i n d o w s 为一般的远程 函数在麓固定段中写了一小段控制段装入的代筠。在远程函数所在的段 发生移动或被遗弃后,w i n d o w s 通过改变这段代码来定位远程函数。虽 然硬件中断也是远程函数,但它帮不受任何程痔酶直接调用,商是靠外 部中断信号触发,内存中没有它相应的“重装入代码”。 它秘地娃穗锌是俸为远箍静保存在w i n d o w s 的辛雏愈量袁申。耋外 部中断发生时,c s :i p 自动指向中断向嚣表中的保存该中断地址的中断 向量跌两运行穰应鹩孛凝蔽务程序。霹势w i n d o w s 没毒秘应酌躲制表修 改中断向量表,以重新指向被移动过的中断服务程序。中断服务程序所 在载段妊缓标记麓不可移动戆袋:否到囊莓次发丧, 部孛錾,c s :i p 瓿 不能正确地跳到已移动的中断服务程序。 联以在楚瑷硬孛 孛錾黢务程序薅,妊矮恕这类程痒躜在的段耪记为 固定的和不可遗弃的。同时,由于硬件中断随时可能发生,所以装入 砖孛凝救务程序最好畏驻在固定酶代码段中。弱为w i n d o w s 巍够保证 动态锻接库中固定的程序段永远长驻农内存里面。所以那些希竖能永 远长驻内存的程序,就可以编篱为d l l 的形式。w i n d o w s 环境下实时 硬件中断向量处理函数( 中断服务程序) 就是利用了这种原理。 2 3 2 使丽虚撅设舒驱动( v x d ) 披术。 w i n d o w s 9 8 搜躅症耘设备驱动程序实瑰硬孛 的隔离。虚拟设备驱 动程序是w i n d o w s 岛各种硬件设备进行交曩的一些特殊的动态连接 库。v x d 跨l 蚤务是磊系统驱动程痔务硬镑设备之间提供了缓砖区,把 对硬件的访问串行化,也就是说w i n d o w s 并不直接访问硬件设备,而 是通适加载该设蚤嚣糕动程序后调用其孛莱囊函数拳霓或对硬传砖慕 些操作。 图2 - 3 是w i n d o w s 处理硬件中断的过程示意图。从中断处理的过程 - f lp ;z 看出,一但v x d 截获了中断,它完全可以不将中断传送到i v t 中 的中断处理程序,中断对用户来说是完全透明的。 图2 - 2w i n d o w s 中断处理过程 i n t e l 的保护环型体系结构分为4 个保护环,w 1 n 9 8 用了两个。用户 编写的应用程序在r i n 9 3 上运行,工作在用户模式,这样- - j - v x 防止用户 程序对一定内存区域的访问。操作系统部件为r i n 9 0 级,工作在内核模 式,具有不受限制的系统访问权。d l l 实际上处于系统的r i n 9 3 级,其 代码访问硬件或接触自身进程空间以外内存的能力受到一定的限制,因 此,响应速度也不是最快。 与d l l 相比较,v x d 因为把“o ”优先级编译在其中,因此它提供 了强大的操作系统扩展功能。同样条件下,v x d 的可靠性更高,速度也 更快,一般比d l l 快2 倍左右。 从程序的编写角度来说:d l l 做实时中断比较简单,而v x d 则比较 困难。尤其是v x d 运行在r i n 9 0 级,一个错误的v x d 会造成整个系统 的崩溃,所以要求程序员强须编写出稳定可靠的v x d 程序。 综合考虑以上各种因素,针对系统的特点我们选择了使用v x d ,因 为它工作更可靠,响应速度更快。下一章我们将从保护模式和w i n d o w s 内核的角度来阐述v x d 的基本原理。 第三章w i n d o w s 虚拟设备驱动程序( v x d ) 原理 3 1i n t e l c p u 编程结构 从8 0 3 8 6 开始,i n t e l 公司不断对其微处理器增加主频提高运行速度 以及对其功能进行扩展和增强,但其微处理器在本质上,无论是从体系 结构还是从内部的寄存器结构看都具有很大的延续性和继承性。而且 8 0 3 8 6 在3 2 位微处理器系列中是最简单的,因此对于要进行系统核心的 开发者来说,掌握8 0 3 8 6 的编程结构是基础,也是关键。 3 1 13 8 6 的体系结构 8 0 3 8 6 芯片内部可以被分为六个独立的处理部件:总线接口部件、 执行部件、分段部件、分页部件、指令预取部件和指令译码部件。这六 个部件可以并行工作,构成一个六级流水线体系结构,从而大大提高了 3 8 6 的工作效率。 总线接口部件:是c p u 与外部设备的连接,同时要处理有可能同时 出现的多个要求访问总线的请求,并进行排序。 指令预取部件:指令译码部件从一个1 6 字节指令缓冲队列中提取指 令,然后指令预取部件试图填充指令缓冲队列。 指令译码部件:从预取队列中提取单个字节组并且决定完成下条指 令所虚的字节数。 执行部件:是c p u 完成运算的部件我,能完成移位、加、除等指令 所必须的操作。它取出由译码部件译码的指令并执行它们。 分段部件:分段部件是执行地址转换的第一步。它负责把逻辑地址 转换成线性地址。每个段寄存器都有段描述符高速缓冲加速地址转换。 一旦转换,线性地址就传送给分页部件。 分页部件:分页部件接收从分段部件传来的线性地址并将其转换成 物理地址。如果分页机制不使能,那么线性地址和物理地址是相同的, 如果分页机制是使能的,那么每次访存还需要通过分页部件进行第二次 的地址转换。 3 1 23 8 6 的寄存器结构 除了实现执行指令的逻辑以外,8 0 3 8 6 还拥有芯片上的存储单元, 称之为寄存器。在芯片内部共有3 0 多个寄存器。可以分为下面几类: 通用寄存器:8 0 3 8 6 有8 冷3 2 位的通用寄存器,是8 0 8 6 中1 6 位寄 存器的扩展,包括e a x ,e c x ,e d x ,e b p ,e s i ,e d i ,e s p ,用来存 放数据或地址。数据可以是1 位,8 位,1 6 位,3 2 位或6 4 位,地址可 以为1 6 位或3 2 住。在8 0 3 8 6 及其后续系列中,用户可以寻址这些寄存 器的各个部分。 段寄存器:与8 0 8 6 相似,存储器地址也是由段基址和段内偏移量构 成的。为此设置了6 个1 6 位的段寄存器c s ,d s ,e s ,s s ,f s ,g s 。 考虑到性能上的因素,每个寄存器都配置了一个描述符高速缓存,它保 存段存储器的起始地址、段的大小界限和访问权限。描述符高速缓存对 于程序员来说是不可访问的,程序员仅可访问1 6 位的段寄存器。 系统地址寄存器:系统地址寄存器用来管理在保护模式下使用的系 统表。系统表有全局描述符表( g d t ) ,中断描述符表( i d t ) ,局部 描述符表( l d t ) ,和用于存储任务内容的任务状态段( t s s ) ,系统地 址寄存器有四个:全局描述符表寄存器( g d t r ) ,中断描述符表寄存 器( i d t r ) ,任务状态寄存器( t r ) ,局部描述符表寄存器( l d t r ) 。 控制寄存器:包括c r 0 、c r 2 和c r 3 ,用来控制分页和数学协处理 器的操作,保存机器的各种全局性状态,这些状态影响系统中所有任务 的运行。它们主要供操作系统使用。 c r 0 的低1 6 位称为机器状态字m s w ,如图3 1 所示: 3 11 61 5543210 e m i p g il 保留i e t l t s ii m p 1 p e l 图3 - 18 0 3 8 6 寄存器结构 c r l 是未定义的控制寄存器。 c r 2 是页面故障线性地址寄存器。当发生一个页面故障时。c r 2 保 存线性故障地址。 c r 3 是页目录基地址寄存器。c r 3 中存放一个表( 页目录) 的基地 址。 调试和测试寄存器:在8 0 3 8 6 中加入了8 个3 2 位调试寄存器。它们 支持断点和数据断点。d r o d 到d r 3 用来保存和定义在d r 7 中的四个断 点条件之一的相关的线性地址。d r 4 和d r 5 没有使用,保留给i n t e l 今后的处理器。d r 6 是调试状态寄存器。d r 7 是调试控制寄存器,定义 和分别地使能每个断点寄存器。t r 6 扣t r - 7 是两个3 2 位的测试寄存器, 是程序员用来证实在芯片加电后转换监视缓冲器( t l b ) 操作的正确性 的一个机制。t r 6 中存放测试控制命令,t r 7 存放测试所得的数据。 3 2 i n t e l c p u 工作模式 从8 0 3 8 6 开始,i n t e l 的c p u 提供了三种完全不同的工作模式:实 地址模式,保护模式,虚拟8 6 模式。8 0 年代末和9 0 年代初的主流操作 系统m s d o s 就是完全运行在实地址模式下。 3 2 1 实地址模式 - 3 加电开机或经硬件r e s e t 重新启动时,c p u 就处于实地址模式下, 在实地址模式下,禁用c p u 的所有保护功能,不支持分页,并且程序地 址对应物理存储器地址。地址空间仅限于i m b 物理存储器可以生成的地 址为0 0 0 0 :0 0 0 0 一f f f f :f f f f ,也即0 0 0 0 0 h 0 0 1 0 f f e f h 。 3 2 2 保护模式 一、存储器管理机制 为了对存储器中的程序及数据实现保护和共享提供硬件支持,为了 对实现虚拟存储器提供硬件支持,在保护方式下,8 0 3 8 6 不仅采用扩充的 存储器分段管理机制,而且提供可选的存储器分页管理机制。这些存储 管理机制由8 0 3 8 6 存储管理部件m m u 实现。 目标 8 0 3 8 6 有3 2 根地址线,在保护方式下,它们都能发挥作用,所以可 寻址的物理地址空间高达4 g 字节。在以8 0 3 8 6 及其以上处理器为c p u 的p c 兼容机系统中,把地址在1 m 以下的内存称为常规内存,把地址在 l m 以上的内存称为扩展内存。 8 0 3 8 6 还要对实现虚拟存储器提供支持。虽然与8 0 8 6 可寻址的l m 字节物理地址空间相比,8 0 3 8 6 可寻址的物理地址空间可谓很大,但实 际的微机系统不可能安装如此大的物理内存。所以,为了运行大型程序 和真正实现多任务,必须采用虚拟存储器。虚拟存储器是一种软硬件结 合的技术,用于提供比在计算机系统中实际可以使用的物理主存储器大 得多的存储空间。这样,程序员在编写程序时不用考虑计算机中物理存 储器的实际容量。 8 0 3 8 6 还要对存放在存储器中的代码及数据的共享和保护提供支持。 任务甲和任务乙并存,任务甲和任务乙必须隔离,以免相互影响。但它 们又可能要共享部分代码和数据。所以,8 0 3 8 6 既要支持任务隔离,又 要支持可共享代码和数据的共享,还要支持特权保护。 地址空间和地址转换 保护方式下的虚拟存储器由大小可变的存储块构成,这样的存储块 称为段。8 0 3 8 6 采用称为描述符的数据来描述段的位置、大小和使用情 况。虚拟存储器的地址( 逻辑地址) 由指示描述符的选择子和段内偏移两部 分构成,这样的地址集合称为虚拟地址空间。8 0 3 8 6 支持的虚拟地址空 间可达6 4 t 字节。程序员编写程序时使用的存储地址空间是虚拟地址空 间,所以,他们可认为有足够大的存储空间可供使用。 显然,只有在物理存储器中的程序才能运行,只有在物理存储器中 的数据才能访问。因此,虚拟地址空间必须映射到物理地址空间,二维 的虚拟地址必须转化成一维的物理地址。由于物理地址空间远小于虚拟 地址空间,所以只有虚拟地址空间中的部分可以映射到物理地址空间。 由于物理存储器的大小要远小于物理地址空间,所以只有上述部分中的 12 部分才能真正映射到物理存储器。 每一个任务有一个虚拟地址空间。为了避免多个并行任务的多个虚 拟地址空间直接映射到同一个物理地址空间,采用线性地址空间隔离虚 拟地址空间和物理地址空间。线性地址空间由一维的线性地址构成,线 性地址空间和物理地址空间对等。线性地址3 2 位长,线性地址空间容量 为4 g 字节。 8 0 3 8 6 分两步实现虚拟地址空间到物理地址空间到物理地址空间的 映射,也就是分两步实现虚拟地址到物理地址的转换,但第二步是可选 的。图3 2 是地址映射转换的示意图。 图3 - 2 地址映射转换示意图 通过描述符表和描述符,分段管理机制实现虚拟地址空间到线性地 址空间的映射,实现把二维的虚拟地址转换为一维的线性地址。这一步 总是存在的。 分页管理机制把线性地址空间和物理地址空间分别划分为大小相同 的块,这样的块称为页。通过在线性地址空间的页与物理地址空间的页 建立之间建立的映射表,分页管理机制实现线性地址空间到物理地址空 间的映射。分页管理机制是可选的,在不采用分页管理机制时,线性地 址空间就等同于物理地址空间,线性地址就等于物理地址。 分段管理机制所使用的可变大小的块,时分段管理机制比较适宜处 理复杂系统的逻辑分段。存储块的大小可以根据适当的逻辑含义进行定 义,而不用考虑固定大小的页所强加的人为限制。每个段可作为独立的 单位处理,以简化段的保护及共享。分页机制使用的固定大小的块最适 合于管理物理存储器,无论是管理内存还是外存都同样有效。分页管理 机制能够有效地支持实现虚拟存储器。 段及分页这两种机制是两种不同的转换机制,是整个地址转换函数 的不同的转换级。虽然两种机制都利用存储在主存储器中的转换表,但 这些表具有独立的结构。事实上,段表存储在线性地址空间,而页表存 储在物理地址空间。因此,段转换表可由分页机制重新进行定位而不需 段机制的参与。段转换机制把虚拟地址转换为线性地址,并在线性地址 中访问段转换机制的表格,而不会觉察分页机制已把线性地址转换为物 理地址。类似地,分页机制对于程序产生的地址所使用的虚拟地址空间 一无所知。分页机制只是直接地把线性地址转换为物理地址,并且在物 理地址中访问转换表格,并不知道虚拟地址空问的存在,甚至不知道段 转换机制的存在 虚拟存储器概念 虚拟存储器是一种设计技术,用于提供比在计算机系统中实际可以 使用的物理主存储器大得多的存储空间。使用者会产生一种错觉,好象 在程序中可以使用非常大的物理存储空问。使用虚拟存储器的好处是: 一个程序可以很容易地在物理存储器容量大不一样的、配置范围很广的 计算机上运行;编程人员使用虚拟存储器可以写出比任何实际配置的物 理存储器都大得多的程序。虚拟存储器由存储管理机制及一个大容量的 快速硬盘存储器支持。在程序运行的任何时刻,只把虚拟地址空间的一 小部分映射到主存储器,其余部分则存储在磁盘上。因为只有存储在主 存储器中的部分虚拟存储器可由处理器使用,这种虚拟存储技术将依赖 程序内部访问存储器的局部化特性,在程序执行中只需整个虚拟存储器 中的少量存储内容在主存储器中驻留。而当访问存储器的范围发生变化 时,有必要把虚拟存储器的某些部分从磁盘调入主存储器,虚拟存储器 的另外的部分,也能从主存储器传送回磁盘上。 地址转换机制以两种方式支持虚拟存储器。第一,把实际驻留在主 存储器中的那部分虚拟存储器标记为无效,并建立起虚拟存储器驻留部 分的虚拟一物理映射关系,把驻留部分的相应虚拟存储器地址,转换为 对应物理存储器的地址。如果程序访问的虚拟地址对应于虚拟存储器未 驻留的部分,将由于无效映射信息而引起异常。操作系统通过把未驻留 部分从磁盘上读入到主存储器申,来处理这种异常,并根据需要更新地 址转换表。在引起异常的原因排除以后,异常处理程序完成异常事件的 处理,并返回原来的程序恢复执行。在后面的文章中将会看到,从异常 处理程序返回后,这时要重新执行一次原来引起异常的指令,而该指令 在后一次执行时自然会成功地完成。第二,地址转换机制通过收集驻留 在主存储器中的虚拟存储器部分的使用统计信息来支持虚拟存储器,这 些使用统计信息,在主存储器空问紧缺时,帮助操作系统决定可以将哪 些部分传送回磁盘。 二、保护机制 为了支持多任务,对各任务实施保护是必需的。从8 0 2 8 6 开始,处 理器就具备了保护机制。保护机制能有效地实现不同任务之间的保护和 同一任务内的保护。 不同任务之间的保护 保护的一个重要方面是应用程序之间的保护。通过把每个任务放置 在不同的虚拟地址空间的方法来实现任务与任务的隔离,达到应用程序 之间保护的目的。虚拟地址到物理地址的映射函数在每个任务中进行定 义,随着任务切换,映射函数也切换。任务a 的虚拟地址空间映射到物 理地址空间的某个区域,而任务b 的虚拟地址空间映射到物理地址空间 的另外区域,彼此独立,互不相干。因此,两个不同的任务,尽管虚拟 存储单元地址相同,但实际的物理存储单元地址可以不同。 每个任务各有一组独立的映射表,即具有不同的地址转换函数。在 8 0 3 8 6 上,每个任务都有自己的段表及页表。当处理器进行切换并执行 新的任务时,这种任务切换的一个重要部分,就是为新任务切换任务的 转换表。为了使操作系统与所有的应用程序相隔离,可以把操作系统存 储在一个单一的任务中。然而,我们即将看到,在一个任务内操作的保 护机制,更适合于保护操作系统,使其不被应用程序破坏。这种机制, 使操作系统由所有任务共享,并且可在每一任务中对其进行访问,而且 仍然保护了操作系统,使其不被应用程序破坏。这种保护操作系统的方 法,是把操作系统存储在虚拟地址空间的一个公共区域,然后,再使每 一任务按此区域分配一个同样的虚拟地址空间,并进行同样的虚拟一物理 地址映射。各个任务公用的这部分虚拟地址空间,被称为全局地址空间。 仅由一个任务占有的虚拟地址空间部分,即不被任何其它任务共享 的虚拟地址部分,称为局部地址空间。局部地址空问包含的代码和数据, 是任务私有的,需要与系统中的其它任务相隔离。 在每个任务中有不同的局部地址空间。因此,两个不同的任务中, 对同一虚拟地址的访问,实际上转换为不同的物理地址。这就使操作系 统对每个任务的存储器,可以赋予相同的虚拟地址,仍然保证任务的隔 离另一方面,对全局地址空间中同一虚拟地址的访问,在所有任务中 都转换为同样的物理地址,从而支持公共的代码及数据的共享,例如对 操作系统的共享。 同一任务内的保护 在一个任务之内,定义有四种执行特权级别,用于限制对任务中的 段进行访问。按照包含在段中的数据的重要性和代码的可信程度,给段 指定特权级别。把最高的特权级别分配给最重要的数据段和最可信任的 代码段。具有最高特权级别的数据,只能由最可信任的代码访问。给不 重要的数据段和一般代码段分配较低的特权级别。具有最低特权级别的 数据,可被具有任何特权级别的代码访问。 特权级别用数字o 、l 、2 和3 表示,数字。表示最高特权级别。为 了避免模糊和混淆,在比较特权级别时,使用“里面”或“内层”这样的术 语表示较高特权级,级别的数字较小:使用“外面”或“外层”这样的术语 表示较低特权级别,级别的数字较大。o 级为最内层的特权级别,3 级为 最外层的特权级别,四种特权级的层次关系如下图所示。 | l j “l t l r 妇n 舔托虻_ 1 1 i _ 氧j “* 哥 性n 1 糸嚆媛心 图3 3特权级环 每一特权级都有各自独立的程序堆栈,以避免与共享栈区有关的保 护问题。 - 3 一个程序从一个特权级切换到另一个特权级执行时,程序使 用的堆栈,从原特权级的栈段改变为新特权级的栈段。对于堆栈段寄存 器s s 来说,描述符特权级( d p l ) , 5 - 须等于当前代码段的特权级( c p l ) 。 从一个特权级切换到另一特权级的方法将在控制转移方法一文申描述。 每个存储器段都与一个特权级别相联系。特权级别限制是指,只有 足够级别的程序,才可对相应的段进行访问。在任何时候,一个任务总 是在四个特权级之一下运行,任务在特定时刻的特权级称为 - 3 前特权级 ( c u r r e n tp r i v i l e g el e v e l ) ,标记为c p l ,即 - 3 前运行程序的特权级。每当 一个程序试图访问一个段时,就把c p l 与要访问的段的特权级进行比较, 以决定是否允许这一访问。对给定c p l 执行的程序,允许访问同一级别 或外层级别的数据段。如上图所示,c o d e k 可访问同级的数据段d a t a k , 也可访问外层的d a t a o s 、d a t a a p l 及d a t a a p 2 等。如果试图访问内层 级别的数据段则是非法的,并引起异常。如上图所示,c o d e o s 可访问同 级的d a t a o s ,也可访问外层的d a t a a p l 和d a t a a p 2 等,但不能访问内 层的d a t a k 。 虽然应用程序都在最外层,但由于各个不同的应用程序存储在不同 的虚拟地址空间中,所以各应用程序被隔离保护。如上图所示,最外层 的c o d e a p l 只能访问d a t a a p i ,不可能访问同级的另一应用程序的 d a t a a p 2 ;同样,c o d e a p 2 只能访问d a t a a p 2 ,不可能访问d a t a a p l 。 这实际上是组合保护。应用程序1 和操作系统构成任务a ,应用程 序2 和操作系统构成任务b 。操作系统被任务a 和任务b 共享,在任务 a 和任务b 的两个不同的虚拟地址空间中,操作系统占用虚拟地址空间 相同的部分。 特权级的典型用法是,把操作系统的核心部分放在0 级,操作系统 的其余部分放在1 级,而应用程序放在3 级,留下的2 级供中间软件使 用。对特权级进行这样的安排,使得在0 级的操作系统核心有权访问任 务中的所有存储段;而在3 级的应用程序只能访问程序本身的存储段, 这些存储段也是在3 级( 注意,w i n d o w s9 x 操作系统只使用了0 级和3 级,以便于移植到精简指令集的计算机上,如r s 4 0 0 0 等,这些处理器 一般只有两个特权级,即系统级和用户级) 。 3 2 3 虚拟8 6 模式 继推出8 0 3 8 6 之后,i n t e l 又推出了8 0 3 8 6 、p e n t i u m 和p e n t i u mp r o 。 这些处理器都具有实模式和保护模式两种工作方式。前面已介绍过,实 模式与8 0 8 6 兼容,可以运行d o s 及以其为平台的几乎所有软件;但在 实模式下,处理器不能发挥自身的优越性能,不能支持多用户、多任务 操作系统的运行。为了充分发挥处理器的功能,同时使d o s 及以其为平 台的软件继续有效地运行,从8 0 3 8 6 开始增加了虚拟8 0 8 6 模式。 虚拟8 0 8 6 模式是保护模式下的一种工作方式,也称为v 8 0 8 6 模式, 或者简称为v 8 6 模式。在虚拟8 0 8 6 模式下,处理器类似于8 0 8 6 。寻址 的地址空问是1 m 字节;段寄存器的内容作为段值解释;2 0 位存储单元 地址由段值乘以1 6 加偏移构成。在v 8 6 模式下,代码段总是可写的, 这与实模式相同,同理,数据段也是可执行的,只不过可能会发生异常。 所以,在虚拟8 0 8 6 模式下,可以运行d o s 及以其为平台的软件。但v 8 6 模式毕竟是虚

温馨提示

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

评论

0/150

提交评论