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

下载本文档

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

文档简介

摘要 数控系统的产生和发展与计算机技术的发展是紧密相连的,当前数 控技术研究的热点之一是在p c 机操作系统上构建在硬件和软件上都具 有良好的开放性的数控系统。 w i n d o w s 系统是p c 机上的主流操作系统,w i n d o w s 操作系统 具有开放性、易操作性、集成开发环境的多样性,所以开发基于 w i n d o w s 平台的数控系统已是必然趋势本文研究以p c 机为基础, 运行于w i n d o w s 操作系统的开放式数控系统即研究数控系统的开 放式结构,利用通用硬件和软件,使数控系统能够作为通用的控制器, 控制通用机床、专用机床、和其他机械装置f 。论文的主要工作包括: 1 、论述了开放式数控的现状及发展趋势。 2 、对基于w i n d o w s 的数控系统下的实时控制进行了研究,对采 用动态链接库和v x d 技术处理中断进行了比较和分析,并且详 尽地论述了v x d 技术的原理 3 、对w i n d o w s 下的数控系统的多任务特性进行了分析,并给出 了采用多线程技术来解决数控系统下并行多任务调度的方法 4 、论述了采用面向对象技术来实现数控系统软件可重用性,开放性 的方法 5 、使用v x d 技术和多线程技术,在w i n d o w s 9 8 下以p c l 8 3 2 运动 控制卡为核心构建了一个基本实验性的数控系统】一一一一 关键词:开放式数控,实时,虚拟设备驱动,多线程,面向对象 - ”_ _ 一_ “_ 。- 一 a b s t r a c r t h ep r o d u c t i o na n dd e v e l o p m e mo fn u m e r i c a lc o n t r o l s y s t e md o s a l y c o n t a c tw i t hc o m p u t e rt e c h n o l o g y ,n o w ,t h eo p e nc n c s y s t e mb a s e do n w i n d o w sh a sb e e nam a j o r d e v e l o p m e n t d i r e c t i o n t o d a y w i n d o w sh a sb e e nt h e m a i o r o s ,i tp o s s e s s e s s o m e c h a r a c t e r i s t i c so fo p e na r c h i t e c t u r e ,e a s yo p e r a t i n ga n d i n t e g r a t e de x p l o i t i n g e n v i r o n m e n t ,s oi t i se s s e n t i a lt o e x p l o i tt h ec n cs y s t e mo nb a s i so f w i n d o w s t h i st h e s i sr e s e a r c h e st h ep c - b a s e do p e nc n c s y s t e mu n d e r w i n d o w so s i ta i m so nr e s e a r c h i n go p e nc h a r a c t e r i s t i c so fac n c s y s t e m b a s e do ng e n e r a lh a r d w a r ea n ds o f t w a r e ,g e n e r a t eag e n e r a ls y s t e m t oc o n t r o lt h eg e n e r a lm a c h i n et o o l s ,s p e c i a l i z e dm a c h i n et o o l sa n dt h eo t h e r m a c h i n e s t h e f 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 c 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 s u s i n gd l l a n d v x d b e s i d e s 。d i s c u s st h ev x dt 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 fc n cu n d e rw i n d o w s o 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 m t n s km a n a g e m e n t o fc n c u s i n g m u i t i - 0 n - 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 go b j e c t - o r i e n t e dt e c h n o l o g yt or e a l i z et h e o p e n r e u s a b l ec h a r a c t e ro fc n c s y s t e m s o t h e t e 。 5 p e r f o r ma nb a s i cc n c s y s t e mu s i n gp d - 8 3 2 u n d e rw i n d o w s 9 8o s k e yw o r d s :o p e n 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 第一章绪论 1 1开放式数控系统的现状及发展趋势 随着科学技术不断发展,数控技术的发展也越来越快,数控机床也 朝着高性能,高精度、高速度、高柔性化和模块化方向发展但其中最 主要的趋势是开放化的数控系统欧洲、美国、日本为了适应发展的要 求,一些研究机构和生产厂商先后开展了开放性数控的研究各自成立了 开放性数控的研究机构,发展计划的代号分别为o s a c a ( o p e ns y s t e m a r c h i t e c t u r ef o rc o n t r o lw i t h i na u t o m a t i o n ) 、o m a c ( o p e nm o d u l a r a r c h i t e c t u r ec o n t r o l l e r ) 、o s e ( o p e n s y s t e me n v i r o n m e m ) 人们越来越 希望能够自由地选择c n c 装置、伺服放大器、执行单元、传感器、p l c 等外部设备,而且能够具有与外部信息高度的通讯功能,使c n c 装置能 够灵活运用在综合化的生产环境中所谓开放性数控,就是指机床制造 厂( c n c 的中问用户) 和机床用户【c n c 的最终用户) 能够更改,添加 c n c 装置的功能,并能够实现整个装置的廉价化p c 化是实现开放式 数控的比较现实的途径p c 从产生到现在,其可靠性和计算能力飞速增 长,硬件已完全实现标准化,这些使得它更加适合于在工业环境下使用 p c 具有充足的的支持软件来改善c n c 系统的用户界面、图形显示、动 态仿真、数控编程、故障诊断,网络通讯等功能利用p c 丰富的程序 开发工具,机床制造商和用户可以采用通用的编程语言编制软件模块代 替系统的原有模块,便于厂商和用户添加具有自己独特的技术特色的模 块以“性能不断提高,价格迅速下降”的p c 作为硬件平台面向具有 统一操作界面,性能优良。被广泛接受的w i n d o w s 操作系统( 目前的 典型代表是w i n d o w 8 9 5 9 8 、w i n d o w s n t ) 的开放式数控系统,是现 在的大势所趋 目前,以微软视窗为突出代表的圈形用户接口g u i 标准已经完全取 代d o s 。使操作方法与软件开发过程发生了很大变化w l n 9 8 n t 以其一致 的图形界面风格、完善的内存管理、友善直观的操作方式被广泛接受 随着计算机软、硬件升级换代步伐的加快和控制系统的多样化,计算机技 术的发展与数控技术的发展两者之间的差距越来越大,封闭式数控系统 的弊端越来越明显所以,美国、欧洲、日本等都在进行数控系统开放化 研究,各大数控系统制造商都在致力于推出以p c 机作为硬件平台、 w i n n t 作为软件开发平台的开放式数控系统 基于p c 机的数控系统可以充分利用微机的软硬件资源,可以充分利 用计算机工业所提供的先进技术当前,利用现有的p c 机的软硬件规范 实际开放式数控系统,从研究进展和实现技术上看,可以分为以下3 种: 1 、数控专用模板嵌入通用p c 机构成的数控系统 在专有系统硬件中简单地嵌入p c 技术使得数控系统可以享用p c 的部分资源( 主要是存储器资源) ,专有的数控软件( 通常难以区分系统软 件和应用软件1 2 、通用p c 机与可编程运动控制器构成的数控系统 运动控书3 ( 包括轴控制和机床逻辑控静j ) 功能由独立的运动控制器完 成,运动控制器通常由以p c 插件形式的硬件或通过网络连接的嵌入式系 统实现数控上层软件( 数控语言解释器人机界面等) 以p c 为计算平台 是主流操作系统( 例如w i n d o w s 9 8 ) 之上的标准应用并支持用户定制 3 、软件数控系统 全软件数控系统还没有形成产品,还处于理论研究中,但它代表了 数控系统的发展方向,将对数控系统产生革命性的影响 数控专用模板嵌入通用p c 构成的数控系统只是实现了有限的“开 放”,而且保留有不少专用系统的痕迹,开放性还不够,开发环境和支 持手段也不足,要作为用户方便地进行二次开发的开放程度远没有这到 p c + 功能模板的数控系统是比较先进的技术,这种系统以通用微机 为计算平台以p c 机上的标准插件形式的开放式运动控制器为核心,伺 服控制和机床逻辑控制均由运动控制器完成,实现了两个级别的开放: 人机界面和非实时控制部件的定制和参数化,实时控制部件的参数化 这种系统也存在一些不足,即c n c 的核心部分运动控制和伺服控制仍是 封闭的,还没有达到整个控制产品的硬件通用化 全软件式数控系统将是开放式数控系统的一个里程碑这种系统支 持运动控制策略的用户定制,体现了一种核心级的开放思想 从开放式数控系统目前的研究成果来看,全软件数控虽然提供了一 种高度开放的体系结构,但由于操作系统的实时性、标准统一性、及系 统稳定性等一系列问题,其实现技术还处于研究扣实验阶段相对于全 软件数控系统而言,p c + 功能模板型是目前比较现实的实现开放数控系 统的途径这种方式既能够借助所插入功能模板的编程能力,实现对系 统核心部分的定制,而且由于数控功能板所采用的专用数控技术已非常 成熟和稳定,因此这样架构出来数控系统既有前端p c 机的柔性,又具有 原来专用c n c 系统的稳定性和可靠性 单机系统在硬件成本上是最经济的,但在软件开发上是最复杂的 w l n 9 5 n t 系统为了保证系统的可移植性,不鼓励直接对硬件进行操作, 由虚拟设备管理器( 在w i n d o w s 9 8 系统中) 或系统服务接口( 在 w i n d o w s n t 中) 将系统分为用户态和核心态,通过加栽设备驱动程序 后调用其中的函数来完成相应的操作当底层硬件设备发生改变时,只需 安装相应的驱动程序,调用相应的函数即可,对高层没有太大的影响,这 与数控系统开放化思想是一致的,所以这种结构将会被广泛接受 1 2 本课题研究的意义 本课题对于w i n d o w s 系统下开发数控系统的几个关键问题:包括 w i n d o w s 系统下的实时控制问题及其实现,w i n d o w s 下数控系统多任务 划分及其实现等进行了研究和分析,并比较了各种不同的实现方法的优 劣并且采用p c + 运动控制功能模板的硬件结构,以台湾研华公司的p c l - - 8 3 2 多轴运动控制器为核心,构建了一个基本的开放性数控系统 软件开发使用微软公司的v i s u a lc + + 6 0 作为开发平台,利用多线程 技术和v x d 技术,充分利用面向对象,软件重用等软件工程中的理论, 使系统软件具备了可移植性和互操作性,允许用户扩充或简化系统基本 模块或构件 第二章w i n d o w s 平台下实时控制研究 2 1 w 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 是事件驱动的操作系统。事件转换戍消息,在系统或应 用程序消息队列中排队,通过消息队列的流动来完成任务但事件的 产生是随机的,因此程序下一步作什么也是未知的 l 输入消息i 7 i 系统队争 一w i n m a i n 函数 一 消息循环 j l 系统硬件 1r 上 应用程l 发送自定 序队列 h w i n d o w s 函数 义消息 定时中断 处理 1 、1w i n m n l n 函瓣 专用设备皿用杜i 7 i 一一一 中断服务序队列b l i消息循环 程序 丁 w n a 操作系统 上 l 专用设备 w i n d o w s 函数 l 中断请求 图2 - 1w 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 3 1 和m s d o s 的1 6 位 代码,这就导致大量来自w i n d o w s 3 ,l 和m s d o s 的早期】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 位 抢先多任务系统当各种事件发生较为频繁而事件处理时间较长时,一 些事件就会因此而不能及时响应,这会给具有实时响应要求的工业控制 系统带来潜在的可靠t # - f q 题,可能会因操作中引发某事件而导致有实时 响应要求的控皋畸响应发生延误,使控书】的可靠性得不到保证 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 _ i 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 i o s 数据区的”时间”值因 此,这个定时器在w i n d o w s 中的最大缺点是计时器的最大分辨率是5 5 毫秒,也就是说应用程序每秒只能接收到1 8 个消息此外,这个计时器 消息的优先权太低,只有在所有的消息( 除了消息w mp a i n t ) 被处理 后才能被处理因此函数s e t t i r n e r 只能用于一般的定时,如刷屏显示时 问定时等,它远远不能满足实时数据采集的要求。 2 2 2 利用多媒体定时器 多媒体定时器( m u l t i m e d i at i m e r ) 使用自己单独的线程( t h r e a d ) , 来调用一个自己的回调函数( c a l l b a c k f u n c t i o n ) 它的优先级很高,它 每隔一定时间就发送一个消息而不管其它消息是否执行完对于现在的 i n t e lc p u 来说,它的最小定时精度通常都可以达到1 毫秒该定时器相 关的函数原型及说明见下表 函数原型功能 t i n i yt 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 l i d )u t i m e r l d :定时事件i d 函数返回:成功返回0 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 r i o d )功返回0 ,并且开始定时周期 u n i tt i m e e n d p e r i o d清除前面设定的最高定时精度,成 ( u n i tu p e r i 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 环境下实现数控系统,方案设计期间,综合 考虑了以上三种定时方式,最终选择了外界硬件定时的方法来完成强实 时性的位置控制任务选用带有定时功能的三轴位置控制卡p c l 8 3 2 , 该控制卡可以提供1 m s - 2 s 范围的精确定时,并通过一个d d a 中断向主 机可编程中断控制器8 2 5 9 申请中断处理。只要编写特定的中断服务程 序,将实时处理的任务放在该中断服务程序中,就能够满足实时控制的 要求对于实时性不是很强的任务,比如坐标显示等,则使用w i n d o w s 本身的消息机制或定时器来实现 2 3w i n d o w s 环境下实时中断的实现 2 3 i 使用动态链接库( d l l ) 技术 动态链接库是一个特殊函数集或资源文件,它与静态链接库( s t a t i c 乙i 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 环境下,当应用 程序调用这种远程函数时,它实际上是调用远程函数的重定位代码 ( 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 m 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 m 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 的任务是在系统驱动程序和硬件设备之间提供了缓冲区,把 对硬件的访问串行化,也就是说w i n d o w s 并不直接访问硬件设备,而 是通过加载该设备的驱动程序后调用其中某些函数来完成对硬件的巢 些操作。 图2 - 3 是w i n d o w s 处理硬件中断的过程示意图从中断处理的过程 可以看出,一但v x d 截获了中断,它完全可以不将中断传送到i v t 中 的中断处理程序,中断对用户来说是完全透明的。 h 丑导 i n t e l 的保护环型体系结构分为4 个保护环,w i n 9 8 用了两个用户 编写的应用程序在r i n 9 3 上运行,工作在用户模式,这样可以防止用户 程序对一定内存区域的访问。操作系统部件为m n g o 级,工作在内核模 式,具有不受限制的系统访问权。d l l 实际上处于系统的r i n 9 3 级,其 代码访问硬件或接触自身进程空间以外内存的能力受到一定的限制,因 此,响应速度也不是最快 与d l l 相比较,v x d 因为把“0 ”优先级编译在其中,因此它提供 了强大的操作系统扩展功能同样条件下,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 lc p u 编程结构 从803 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 位或“住,地址可 以为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 l1 61 55432l0 r 一t r 1 一t r 1 + i l p g li 保留 i e t 1 t s l e m 】m pl p e j 图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 没有使用,保留给h q 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 h q 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 实地址模式 当加电开机或经硬件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 l o 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 以下的内存称为常规内存,把地址在 1 m 以上的内存称为扩展内存 8 0 3 8 6 还要对实现虚拟存储器提供支持。虽然与8 0 8 6 可寻址的1 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 字节程序员编写程序时使用的存储地址空问是虚拟地址空 间,所以,他们可认为有足够欠的存储空间可供使用 显然,只有在物理存储器中的程序才能运行,只有在物理存储器中 的数据才能访问因此,虚拟地址空问必须映射到物理地址空间,二维 的虚拟地址必须转化成一维的物理地址。由于物理地址空间远小于虚拟 地址空间,所以只有虚拟地址空问中的部分可以映射到物理地址空间 由于物理存储器的大小要远小于物埋地址空间,所以只有上述部分中的 部分才能真正映射到物理存储器。 每一个任务有一个虚拟地址空间。为了避免多个并行任务的多个虚 拟地址空间直接映射到同一令物理地址空间,采用线性地址空间隔离虚 拟地址空间和物理地址空间。线性地址空问由一维的线性地址构成,线 性地址空问和物理地址空间对等。线性地址3 2 位长,线性地址空间容量 为4 g 字节。 8 0 3 8 6 分两步实现虚拟地址空间到物理地址空间到物理地址空间的 映射,也就是分两步实现虚拟地址到物理地址的转换,但第二步是可选 的图3 2 是地址映射 专换的示意图。 图3 - 2 地址映射转换示意图 理地址 通过描述符表和描述符,分段管理机制实现虚拟地址空间到线性地 址空问的映射,实现把二维的虚拟地址转换为一维的线性地址这一步 总是存在的。 分页管理机制把线性地址空闻和物理地址空间分别划分为大小相同 的块,这样的块称为页通过往线性地址空间的页与物理地址空间的页 建立之间建立的映射表,分百管理机制实现线性地址空间到物理地址空 间的映射。分页管理机割是i i 乏的,在不采用分页管理机制时,线性地 址空间就等i 二物理地垃尘i :3 ,线性旭垃就等于物理地址 分段管理机制所使用的可变大小的块时分段管理机制比较适宜处 理复杂系统的逻辑分段。存储块的大小可以根据适当的逻辑含义进行定 义,而不用考虑固定大小的页所强加的人为限制。每个段可作为独立的 单位处理,以简化段的保护及共享。分页机制使用的固定大小的块最适 合于管理物理存储器,无论是管理内本还是外存都同样有效分页管理 机制能够有效地支持实现虚拟存储器。 段及分页这两种机制是两种不同的转挟机制,是整个地址转换函数 的不同的转换级。虽然两种机制都利, 1 存储在主存储器中的转换表,但 这些表具有独立的结构。事实上,段表存储在线性地址空间,而页表存 储在物理地址空间因此,段转挟表可由分页机制重新进行定位而不需 段机制的参与。段转换机制把虚拟地址转挟为线性地址,并在线性地址 中访问段转换机制的表格,而不会觉察分页机制已把线性地址转换为物 理地址。类似地,分页机制对于程序产生的地址所使用的虚拟地址空问 一无所知。分页机制只是直接地把线性地址转换为物理地址,并且在物 理地址中访问转换表格,并j 二知道虚 丛地垃空问的存在,甚至不知道段 转换机制的存在 虚拟存储鑫概念 虚拟存储器是一种设计技术,用于提供比在计算机系统中实际可以 使用的物理主存储器大得多的存储空阃。使用者会产生一种错觉,好象 在程序中可以使用非常大的物理存储空间。使用虚拟存储器的好处是: 一个程序可以很容易地在物理存储器容量大不一样的、配置范围很广的 计算机上运行;编程人员便用虚拟存储器可以写出比任何实际配置的物 理存储器都大得多的程序。虚拟存储器由存储管理机制及一个大容量的 快速硬盘存储器支持在程序运行的任何时刻,只把虚拟地址空间的一 小部分映射到主存储器,其务部分则存储在磁盘上因为只有存储在主 存储器中的部分虚拟存储器可由处理器使用,运种虚拟存储技术将依赖 程序内部访问存储器的局部亿特性,在程序讥行中只需整个虚拟存储器 中的少量存储蹦容在主存储品。r 驻留。一茧访问存储器的范围发生变化 时,有必要把虚拟存储嚣的共些部分,;人磁盐调八主存储器,虚拟存储器 的另外的部分,也能从主存t 器传迂凹磁盘上 地址转换机制以两种方式支持虚拟存储器第一,把实际驻留在主 存储器中的那部分虚拟存储器标记为无效,并建立起虚拟存储器驻留部 分的虚拟一物理映射关系,把驻留部分的相应虚拟存储器地址,转换为 对应物理存储器的地址如果程序访问的虚拟地址对应于虚拟存储器未 驻留的部分,将由于无效映射信息而引起异常操作系统通过把未驻留 部分从磁盘上读入到主存储器中,来处理这种异常,并根据需要更新地 址转换表在引起异常的原因排除以后,异常处理程序完成异常事件的 处理,并返回原来的程序恢复执行。在后面的文章中将会看到,从异常 处理程序返回后,这时要重新执行一次原来引起异常的指令,而该指令 在后一次执行时自然会成功地完成第二,地址转换机制通过收集驻留 在主存储器中的虚拟存储器部分的使用统计信息来支持虚拟存储器,这 些使用统计信息,在主存储器空间紧缺时,帮助操作系统决定可以将哪 些部分传送回磁盘 二、保护机制 为了支持多任务,对各任务实施保护是必需的从8 0 2 8 6 开始,处 理器就具备了保护机制保护机制能有效地实现不同任务之间的保护和 同一任务内的保护 不同任务之间的保护 保护的一个重要方面是应用程序之间的保护通过把每个任务放置 在不同的虚拟地址空间的方法来实现任务与任务的隔离,达到应用程序 之间保护的目的虚拟地址到物理地址的映射函数在每个任务申进行定 义,随着任务切换,映射函数也切换任务a 的虚拟地址空间映射到物 理地址空间的某个区域,而任务b 的虚拟地址空间映射到物理地址空问 的另外区域,彼此独立,互不相干因此,两个不同的任务,尽管虚拟 存储单元地址相同,但实际的物理存储单元地址可以不同 每个任务各有一组独立的映射表,即具有不同的地址转换函数在 803 8 6 上,每个任务都有自己的段表及页表当处理器进行切换并执行 新的任务时,这种任务切换的一个重要部分,就是为新任务切换任务的 转换表。为了使操作系统与所有的应用程序相隔离,可以把操作系统存 储在一个单一的任务中然而,我们即将看到,在一个任务内操作的保 护机制,更适合于保护操作系统,使其不被应用程序破坏这种机制, 使操作系统由所有任务共享,并且可在每一任务中对其进行访问,而且 仍然保护了操作系统,使其不被应用程序破坏这种保护操作系统的方 法,是把操作系统存储在虚拟地址空间的一个公共区域,然后,再使每 一任务按此区域分配一个同样的虚拟地址空间,并进行同样的虚拟一物 理地址映射各个任务公用的这部分虚拟地址空间,被称为全局地址空 间。 仅由一个任务占有的虚拟地址空间部分,即不被任何其它任务共享 的虚拟地址部分,称为局部地址空间局部地址空间包含的代码和数据, 是任务私有的,需要与系统中的其它任务相隔离 在每个任务中有不同的局部地址空间。因此,两个不同的任务中, 对同一虚拟地址的访问,实际上转换为不同的物理地址这就使操作系 统对每个任务的存储器,可以赋予相同的虚拟地址,仍然保证任务的隔 离。另一方面,对全局地址空间中同一虚拟地址的访问,在所有任务中 都转换为同样的物理地址,从而支持公共的代码及数据的共享,例如对 操作系统的共享 同一任务内的保护 在一个任务之内,定义有四种执行特权级别,用于限制对任务中的 段进行访问按照包含在段中的数据的重要性和代码的可信程度,给段 指定特权级别把最高的特权级别分配给最重要的数据段和最可信任的 代码段具有最高特权级别的数据,只能由最可信任的代码访问给不 重要的数据段和一般代码段分配较低的特权级别具有最低特权级别的 数据,可被具有任何特权级剐的代码访问 特权级别用数字0 ,l 、2 和3 表示,数字0 表示最高特权级别为 了避免模糊和混淆,在比较特权级别时,使用“里面”或“内层”这样的术 语表示较高特权级,级别的数字较小;使用“外面”或“外层”这样的术语 表示较低特权级别,级别的数字较大0 级为最内层的特权级别,3 级为 最外层的特权级别,四种特权级的层次关系如下图所示 i i l 户1 w - 慷n 幕纯笆伸 最| 堋 撩作幂妩哇心 图3 - - 3特权级环 每一特权级都有各自独立的程序堆栈,以避免与共享栈区有关的保 护问题。当一个程序从一个特权级切换到另一个特权级执行时,程序使 用的堆栈,从原特权级的栈段改变为新特权级的栈段对于堆栈段寄存 器s s 来说,描述符特权级( d p l ) 必须等于当前代码段的特权级( c p l ) 从一个特权级切换到另一特权级的方法将在控制转移方法一文中描述 每个存储器段都与一个特权级别相联系。特权级别限制是指,只有 足够级别的程序,才可对相应的段进行访问。在任何时候,一个任务总 是在四个特权级之一下运行,任务在特定时刻的特权级称为 - 3 前

温馨提示

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

评论

0/150

提交评论