当前位置:文档之家› 基于PCWindows 2000实时系统的研究与开发[1]

基于PCWindows 2000实时系统的研究与开发[1]

同济大学

硕士学位论文

基于PC/Windows 2000实时系统的研究与开发

姓名:王俊锋

申请学位级别:硕士

专业:信息与通信工程

指导教师:冯志彪

20050301

摘要

工业领域中的实时应用一直都是一个需要昂贵专用硬件的领域,而基于PC/Windows组合的系统具有性能价格比高、拥有丰富强大的开发工具和应用软件并且用户众多等优点,因此,开发基于PC/Windows的实时系统具有重要意义。

本论文中,我们对X86处理器的保护模式和Windows2000操作系统原理及主要机制作了深入分析,并对Windows2000在实时应用中的不足,提出了改造Windows2000以达到实时目的的方法,通过这些方法,能明显的提高Windows2000的实时性,使其更好的满足在实时中的应用。

同时,在现有研究成果基础上,并结合对Windows2000操作系统实时改造的分析,我们实现了基于PC/Windows2000平台的实时系统,并作了该系统在备方面的测试与分析,验证了该系统达到了电力系统实时仿真普遍要求的定时精度,可以应用在一定规模的实际的电力系统实时仿真。

最后,我们开发了一个实时任务,这是一个Ilc并联电路的仿真系统,经过测试,以及对输出试验数据的分析。该实时任务运行结果正确,并且取得了良好的效果。

关键词

实时系统操作系统内核模式用户模式驱动程序仿真定时精度

Abstract

Abstract

Nowmuchmoreexpensivespecialhardwareareneededinthereal—timefield.SincesystemsbasedonPC/windowshavetheadvantagesofhighcostperformanceratio,powerfuldevelopmenttoolsandapplicationsoftwaresupports,comprehensiveusers,itisveryusefultodevelopareal—timesystembasedonPc/Windows.

Inthisthesis。afteranalyzingtheoperatingsystemprincipleandsystemmechanismofWindows2000andx86processor。weputforwardsomewaystoimproveit’Spredictability.Thesewayscansignificantlyimproveit’spredict曲ility.

Atthesametime,baseonachievementbeforeandtheresearchinWindows2000operatingsystem,wehavecarriedoutareal—timesystembaseonPC/windows2000.Wehavedonesomekiridsoftestingonthissystem,whoseresultsshowthatithavemettherequirementforreal—timesimulationonelectricpowersystem.

Atlast,wedevelopareal—timetaskundertheReal—timeWindows2000.Thisreal—timetaskisasimulationsystemofRCcircuit.Thesimulationresultsshowthatoursystemreachesthereal—timenecessity。

Keywords:

real—timesystem,operatingsystem,usermode。kernelmode,devicedriver,simulation,timingprecision

ll

学位论文版权使用授权书

本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本:学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。

经指导教师同意,本学位论文属于保密,在年解密后适用本授权书。

指导教师签名:

学位论文作者签名:年月日年

月日~趱曼篓||一一

同济大学学位论文原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作晶的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。

躲潞’

莎帕年≥月;6日

箜!童堑堡一一——

第1章绪论

本章首先对实时系统(real.timesystem)作了简要的介绍,并且分析了基于PC/Windows实时系统的设计原理;然后,对本论文的研究背景、主要工作也作了简要阐述。

1.1实时系统简介

实时系统是指对来自于外部的事件和信号能在限定的时间之内作出正确响应的系统.在实时系统中,不但数据的逻辑要正确,而且对数据产生的时间也有严格的要求嘲。与一般的通用计算机系统相比较,实时系统具有两个重要特征;可预测性(Predictability)以及可靠性(Reliability)。

通常实时系统可分为软实时系统和硬实时系统.款实时系统中,系统的宗旨是各任务运行的越快越好,并不要求某一任务必须在多长时间内完成,但是响应的时间越慢,响应的效果也就越差.例如,在数据采集系统中,如果不能及时在给定时间内采集信号。那么所采集数据的精度也就降低了,与给定时间相差越大,数据的精度也就忿低.硬实时系统是指实时系统必须在截止时闻之内作出正确响应的系统,否则将会产生灾难性的后果。椤I如,’武器控制系统就是硬实时系统,如果武器控制系统不能在截止时阀内作出正确噙应,将造成灾难性的后果pl。

实时系统在计算机数字实时仿真、多媒体通信、在线事务处理、生产过程控制等领域有着非常广泛的应用。与通常的计算机系统一样,实时系统的基础与核心也是操作系统,人们称实时系统中的操作系统为实时操作系统(Real-TimeOperatingSystem,RTOS)。实时操作系统为实时任务的开发与运行提供了一个平台,因而对整个系统的性能起着举足轻重的作用。

实时操作系统在嵌入式领域应用广泛,所谓嵌入式系统是指将应用程序和操作系统与计算机硬件集成在一起的系统.也就是说系统的应用软件与系统的硬件一体化,这种系统具有代码小,高度自动化,响应速度快等特点。

目前,比较典型的实时操作系统主要有:WindRiverSystem公司的

第1章绪论

VxWorks、QNX软件系统有限公司的QNX、Lynx实时系统公司的LynxOS、新墨西哥工学院的RT-Linux以及Microsoft的WindowsCE。下面对以上各操作系统作一下简单介绍:

1.VxWorks是一种实时嵌入式操作系统,它提供了图形用户接口(GUI)的调试环境,一切对于目标机的操作都可以在主机上进行仿真运行,方便调试。VxWorks是一种高效运行的多任务操作系统,它提供了任务之间的通信、优先级调度、任务同步、中断处理看门狗和定时器等多种功能。

2.QNX是一个分布式、嵌入式以及可规模扩展的实时操作系统,它遵循POSIX.1(程序接口)和POSIX.2(Shell和工具)以及部分遵循POSIX.1b(实时扩展)标准。它最早开发于1980年,到现在已经相当成熟.QNX是一个微内核实时操作系统,其核心仅提供4种服务:进穰调度、进程闯通信、底层嗣络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(O.NX4.x大约为12Kb)而且运行速度极快。

3.LynxOS是一个分布式、嵌入式以及可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准l它最早开发予19髓年.LyaxOS目前还不是一个微内核结构的操作系统.

4.RT-Linux是—个嵌入式硬实时操作系统,它部分支持POSIX.1b标准。RT--Linux实现了一个小的实时核心,仅支持底层任务剞巷,中斯服务倒程的装入、底层任务通信队列、中断服务倒程∞鳓和Linux进程.糸来的j#实时Linux核心作为一个可抢先的任务运行于这个小核心之上,所有的任务都在核心地址空间运行。它不同于微内核和大型内核,属于实时E)遇∞animeexecutive)体系结构。

5.WindowsCE是微软公司为嵌入式应用开发的一种操作系统.该系统是一种紧凑、高效、可伸缩的32位操作系统,它具有多线程、多任务、完全抢占式的特点.WindowsCE是许多分数模块的集合,每个模块提供不同的功能,主要包括四大模块:内核模块、对象存储模块、GWES(Gnyhivs,WindowsingandEventsSubsystem)模块,通信模块。使用WindowsCE最大韵优点就是:它实现了Win32API的一个予集。这样熟悉Windows编程的程睁曼可}l;c报容易的将已有的知识移植到WindowsCE操作系统上.WindowsCE有狠强的通信与网络支持功能,这样WindowsCE与基予WindowsNT]2000的豢砸耀境之间的互操

第1章绪论

作很容易实现{12Jf13】114J。

1.2基于PC的实时操作系统简介

目前可以在PC机上运行的通用操作系统主要有;Willdows系列操作系统、DOS操作系统、Uinx操作系统以及un甑操作系统等,其中,Microsoft的Windows系列操作系统占据着统治地位。以上这些操作系统具有如下优点:

①据有丰富豹软件开发工具,其开发戆力远远优于专用的实对操作系统:

②它们都是可以移橇的操作系统,可以运行在多种处理器平台的上;

@它们已经得到了工业界的广泛支持,侧如:Windows2000操作系统以及UNIX操作系统;

④这些操作系统在其它方面也提供了强大的功能,例如:网络服务以及图形用户接口(GUI)等。

由于上述优点及这些操作系统拥有大量的用户,分剐出现了基于以上操作系统豹实对系统ls;。

1基于W'mdows的实时系统【121

毫无疑问,Windows操作系统是当今PC机上的主流操作系统,W'mdows操作系统不但界面友好,易学易用,而且基于W'mdows摄作系统的应用软件与开发软件众多。园此,基于Windows的实时系统具有广阔的诱入前景。关于其实现原理我们将在第三章详细介绍。

2基于DOS的实时系纠刎

DOS操作系统虽然出褒的较旱,僵由于其簿攀的风格及矛放性,在一些实时应用领域中仍然有一定的应用。由于DOS是一个典型的单任务操作系统,在将其改造为一个实时多任务操作系统时,必须增加多任务管理和调度、任务间通信和同步机制、系统时钟管理和系统中断管理等功娩.

3基于UNIX的实时系统£lo】[11l

传统的UNIX是作为一个分时操作系统而设计的,但是由于市场的推动,UNIX操作系统出现后不久就陆续出现了一系列的实时UNIX操作系统版本。与Microsoft的W'mdows系列操作系统一样,UNIX操作素统所支持的丈量开发工具和应用软件及其可移植性是UNIX操作系统实时化的主要推动力量之~。由于工业界的强烈要求,一些国际标准化组织和计算机厂商自八十年代中

蔓!童缝鲨

期开始联合起来致力于UNIX操作系统标准化工作。

4基于Linux的实时系统【9J

Linux操作系统是一个与UNIX操作系统兼容的操作系统,90年代以来由全世界许多程序员不断完善发展起来的。由于它是免费软件,且源代码开放,因此,不断有新的程序员加入到开发Linux程序的行列中。

1.3研究背景及研究基础

本课题来源于电力系统的动态数字实时仿真领域。在电力系统仿真领域,传统的仿真是物理仿真,即用小型设备来仿真大型设备。随着电子技术的发展,六十年代出现了模拟计算机仿真技术;七十年代后期及八十年代初期出现了物理.数字混合的计算枫仿真装置;八十年代后期出现了全数字实时仿真装置。1994年至1996年闯,我们为国电南京自动化股份有限公司开发了双回高压远距离输电线静态数字实时仿真装置,它是由两片DSP(TMS320C30)横J成的数字实时仿真系统。

由于通用计算机性能的迅速提高,国际上于90年代中期提出了电力系统数字实时仿真应尽可能应用价格低的通用计算机和遇甩系统较件的原则.因此,使用通用PC机和通用系统软件研制电力系统动番实时仿冀嫒鼍成为当前的动向f16l。

1997至1999年间,根据国务院全国电子信息系统摊广办公室下达的任务,同济大学电子与信息工程学院和国电南京自动化股份有限公司联合承担了“CAD/CAM电力系统动态实时计算机仿真系统”的研制士作。利用封镇中断的方式我们在PC机上成功实现了仿真任务的实时运行。

2002年同济大学和西门子公司工业技术服务部联合开发了用予考核发电机电压调节器的双PC机动态实时仿真装置,该系统由两台PC机构成,主机的操作系统为Windows2000,目标机的操作系统为xPC-Target,实时任务运行于目标机上,主机与目标机通过串口或网络进行通信。

同年,受同济大学教育振兴行动计划的资助,本实验室研究开发基于PC/Windows的实时系统,该系统通过对Windows2000进行实时化改造使实时任务加载到运行Windows2000的PC机上成为可能,然而,由于时问因素以及Windows2000是一个源码不公开的操作系统,使得该实时系统在运行过程中有

蔓!童丝鲨。

许多不稳定与不完善的地方,需要进一步完善和验证。

1.4本论文的主要工作

本论文的研究主要基于我们自主开发的基础PC/Windows2000的实时系统,该系统虽然已能加载实时任务,但仍有许多地方有待改进与完善。本论文主要在以下几方面进行了研究:

1分析了Windows2000的操作系统原理。Windows2000是实对Windows2000的基础,因此,通过对Windows2000工作机制的研究,有助于我们完善在Window¥2000上实现实时的方案。

2分析了X86处理器保护模式下的工作机制,由于我们的系统运行在处理器保护模式下,因此,通过对此的研究可以帮助我们理解现有实时系统的工作原理,为完善其功能以及测试其性能做好准备。

3分析了现有实时系统的优点于不足,并针对现有实时系统不能对数据进行输出这一缺陷,对其进行了完善,使其能够仿真数据能够对外部进行输出,从而提供了验证其实时性的依据.这都分工作将在第四章详述.

4在完善已有基于PC,/W'mdows2000的实时系统功能的基础上,对其性能从不同角度进行了测试,分析了其应用于实际仿真任务的适用范围和局限性。这部分工作将在第五章详述。

4总结了我们自主开发的基于PC/W'mdows2000的实时系统成功的地方与不足,对其发展前景提出了建议。

1.5本论文的结构

本论文的结构如下:

第二章,X86处理器保护模式及W'mdows2000操作系统原理,介绍了X86处理器保护模式以及Windows2000操作系统原理与主要机制。

第三章,基于PC/Windows实时系统的实现原理,提出了提高Windows2000可预测性的一些策略:同时,介绍了Windows的实对化改造方案及实对Windows2000原理。

第四章,实时系统的完善及实时任务开发技术,分析了实时系统的优点与

第1章绪论

不足,并针对其缺陷进行了改进,并设计了实时任务的开发途径以及对其实时性的测试方法。

第五章,仿真结果及实时性分析,对本实时系统进行了各种不同的测试工作,从试验的角度验证了本实时系统的实对性,并开发了一个实际应用中的仿真模型应用于该系统。

第六章,总结与展望。

第2章X86微处理器保护模式以及WINDOwS2000操作系堕!堕

第2章X86微处理器保护模式以及WINDOWS2000操作系统

原理

80X86是个功能强大的完整的向上兼容的处理器系列,是目前世界上PC机的主流芯片。事实上,在80286以上的芯片都有两种工作模式:实地址模式和保护虚地址模式。对于实地址模式来说,具有32条地址线的80386只能寻址1M地址空间的物理内存,功能受到了极大的限制。而在保护模式下,80386的强大功能才得以发挥,用户程序的虚拟地址空间可分为16K个段,每个段的地址空间为4(3字节,在保护模式下,处理器提供了4个特权级,操作系统、系统程序和用户程序可以在不月的特权等级下运行,大大提离了系统的安全性fl】。

W'mdowsNT/2000操作系统是面向技术跫用户的操作系统,是Microsoft公司所推出的操作系统中稳定性与安全性最好的操作系统。随着W'mdowsNT操作系统的出现.一些计算机公司就把注意力放在了WindowsNT操作系统上。SoRwareDevelopmentSystems公司由于对W'mdowsNT操作系统产生了兴趣而停止了UNIX操作系统的开发项目;其它的诸多计算机公司即使没有放弃UNIX操作系统,但是也把重心逐渐地转向了W'mdowsN.r操作系统。为了尽可能地为应甩程。事提供兼容性,Window'sM啮000操作系统也支持PosⅨ环境子系统和0S/2环境子系统,分别为符合POSIX1003.1标准的撩代码提供应用编程接口(API)支持和为OS/2应用程序提供执行环境f4J。

本章第一部分介绍了80X86处理器在保护模式下的工作原理,并以80386作为介绍的对象。本章第二部分介绍了W'mdows2000操作系统的工作原理,并研究了其内郝机制,以及作为实时斑用的可行性.

2.180x86微处理器保护模式原理

这里着重介绍三个部分:机器状态及存储器、保护虚拟地址和中断处理。这三个部分在实时开发中有着十分中重要的作用。下面详细夼绍每部分的工作原理:

2.1.1机器状态及存储器简介嘲

第2章X86微处理器保护模式以及WINDOWS2000操作系统原理

1寄存器:

应用程序员可以用的寄存器组由16个寄存器组成,如图所示。这些寄存器可以分为三类:用于算术和逻辑运算的8个32位的通用寄存器,他们可用于基址和变址寻址时存放地址、两个处理器控制寄存器、6个16位的段寄存器,它们用来寻址存储器的段,每个寄存器一次只提供直接访问一个段的内存。

通用寄存器状态控制寄存器段寄存器

AXAHiALCXCHIcLDX

DIIDLBX

BH田LSPBP跚DlEAX

ECX

IPHAGS

EIPElqAGS图2,l:80386哥存器

通用寄存器:80386有8个32位通用寄存器,用于诸如加减乘除等的算术运算以及形成内存的地址。这些寄存器的低16位可以作为16位的寄存器独立访问。并且把它们命名为AX、cx、DX、丑x,SP,瑚,、戳和脚。其中AX、BX、DX、CX四个带x的寄存器的高半和低半个寄存嚣可以作为8位寄存器来独立使用。

通用寄存器的特征:可以指定任何通用寄存器豹内容作为操作数前地址,以及在形成地址的过程中傲如加法或减法这样简单的算术运算,但象串的运算和双精度的乘法以及除法这类比较复杂的操作,必须从固定的寄存器中取一个

fa

}2

{兮

嗽瞰脚艘

麟烈

蔓!妻!堕堂丝墨矍堡篓塑茎墼垦坠!!唑!!塑堡堡墨竺壁里一——或多个操作数。指令需要从专门的寄存器中读取一个或更多的操作数的技术称为特征。

处理器控制寄存器:这两个寄存器控制80386的工作。它们是指令指针寄存器Eli'和处理器状态和控制标志寄存器EFLAGS。

32位的EIP寄存器只是起一个作用:指向处理器将要执行的下一条指令,

当80386执行一个程序时,它取出指令并且执行程序中的每一条指令,即取出由Ell?所指的指令,使EIP增加这条指令的长度,然后执行这条指令,增加的长度使EIP寄存器指向内存中指令序列的下一条指令。这样EIP总是指向相随的下一条指令。

32位的EFLAGS寄存器包含着干状态标志和控制标志位。程序可置位标志位以控制80386的某些功能的运行.算术操作之后处理器自己置位自己置位适当的状态位,程序测试这些状态位,以检测特定的条件。改变EFLAGS寄存器的位的一个方法是把EFLAGS寄存器存储起来,然后再对其存储的映象修改想改的位,再用修改盾的值装入F.FLAGS寄存器.下面简单介绍一下算术状态标志:

CF:进位标志。如果一个算术运算超出最高有效位产生进位或借位,它就置1,否则它被清O。

PF:奇偶标志位。它指示结果低8位的奇偶性。

AF:辅助进位位。如果位3向前有一个进位或借位,AF被置1。

zF:零标志。如果结果是零,它被置位。

SF:符号标志。它被置成结果的最高有效位。

OF:2的补码的溢国标恚。如果算术运算的结果超出了指定位数的2的补码所能表示的范围,OF就被鼍位。

处理器控制标志:TF、IF、DF、IOPL、Icr、RF和VM位可以由程序来设置以便控制80386处理嚣的运行。我们通过对这些标志的设置来实现系统按照我们的要求来运行,下面是以上这些标志韵具体含义:

TF:捕捉允许标志控制成声单步中断来支持程序的调试。当TF=I时,在每条指令执行结束处将发生单步中断。

IF:中断允许标志。它允许识掰处理嚣引脚上发来的外部中断。如果IF=1,

接受外部中断,如果IF=O,挂起外部中断。

DF:方向标志。它决定串操作指令在每步之后其变址寄存器是后加还是后

第2章X86微处理器保护模式以露WINDOWS2000操作系统原墨

减。

IOPL:特权级字段是个两位宽的字段。IOPL指定了要求执行FO指令的特权级。

NT:嵌套任务位控制船r指令的运行。

RF:重启动标志控制着调试故障是接受(ItF-O),或者是被忽略(RF-D。在成功完成每一条指令后处理器会把RF清0;而当接收到一个非调试的故障信号时,处理器把RF置成1。

VM:虚拟8086方式位。如果该位为1,处理器将在虚拟的8086方式下工作;如果清0,处理器将工作在一般的保护方式下。

运行在任何特权级下的程序都可以修改RF、NT、DF和TF这些标志位,而VM和IOPL字段只有在特权级0下才能被修改。Ⅲ位只能由具有I/O特权的程序所改变。

2存储器寻址

80386使用叫做段的存储器寻址技术.它把存储器空间分成一个或多个叫做段的线形区域。一个存储器的地址由两个部分组成:一是段的部分,它标识所容纳的段;另一个是偏移部分,它指出在该段内的以字节计的偏移量。对于每个存储器的引用必须指定段和偏移两个部分。因此,具有内存操作数的指令

必须指定这两个部分。段的部分是一个16位的殿选择予,段选择子有一个14位的字段,用于识别16384种可能婀段.32位的偏穆奢盼给出了一个字节在所在段中的偏移。因为偏移量是32位,可以指定纛失鹪偏罄量是46字节,这也就是一个段的最大长度。

前面介绍的6个段寄存器特别用来放置段选择子作为地址韵段部分。这些寄存器在一程序的任何一点上可提供多到6个段的访问.每个存储器的引用或是隐含或是显式或是默认的指定了段寄存器。段寄存器包含地址的段的部分的选择子。代码段的引用总是用CS段寄存器,堆栈黢瓣弓I用落是用ss段寄存器,某些字串处理指令总是使用Es段寄存器作为目标摄作数的段寄存器。5个段寄存器中的任何一个都可以被用来作其他所有的数据的引用.、

80386为构成一个地址的偏移部分提供了灵活的机制。弓l用一个存储器操作数的每条指令规定了计算偏移量的方法。80386上的寻址方式规定将其相加构成偏移的成分包含以下三个:一个基地址寄存器,一个比例因子为1、2、4或8的变址寄存器,及一个常数位移量。由这三个成分相加得到偏移地址。这

10

墨!兰塑!丝丝堡壁堡篓燮苎坠墨!!!里!竖!!塑塑堡墨丝匾墨————一种基地址+(变址?比例因子)+位移量的寻址方式提供了强大而灵活的寻址机制。

对于数据引用,其默认的段寄存器取决于所选择的基地址寄存器。如果基地址寄存器是ESP或EBP,则默认的段寄存器从通常的Ds改为ss,因为ESP和EBP寄存器是被设计来与堆栈一起来使用的。对于别的基地址寄存器的选择,包括无基地址寄存器,DS仍然是其默认的段寄存器。访问由非默认的段寄存器寻址的一个段内的数据要求使用一额外的指令字节来指定所要的段寄存器。用EBP作为一个交址寄存器,不影响默认段寄存器的选择。默认段寄存器的选辑只由所选的基地址寄存器所影响。

3浮点寄存器

在计算机里,用来袭示数的位数是有限的,所以计算机不能精确的表示所有的实数。所谓“浮点数”,就是实数类型数据的计算机表示法.浮点数实际上是由两个整数来表示的.一个保持着数据的有效数字,一个规定了二进制小数点的位置。同时浮点操作可以分解为作用于这些整数对的整数指令序列。然而这样速度太慢,殴此设计出硬件直接模拟浮点数运算,对应于80386,80387就是专门支持浮点运算的数字协处理籍.

当和80386一起工作时,80387增加三组寄存器来支持浮点运算:

①一组8个80位的浮点累加器的堆栈隧容纳8个浮点数。

②三个16位的状态和控制寄存器t状态字,控制字,特征位字。

③四个32位错误指针寄存器以识别发生异常的指令和存储器操作数。.

浮点指令把∞位的寄存嚣当作曩加器堆栈来鬟雩待,丽不是作为一个简单的8个寄存器的数组来处理。累加器堆栈的顶叫做ST,在ST以下的累加器的编址是相对于ST并以ST(i)来命名的,i的范围是1到7.ST(0)可以被用作累加器堆栈的名字的代名字。

三个16位的寄存器(特征字、控制字和状态字)控制着浮点指令的运

算并提供状态信息。特征字段用来检测累加器堆栈的上溢出和下溢出;控制寄存器可以由程序来进行设置以便控制80387的操作;状态字寄存器中的某些位可以由程序来测试以便检验某些特殊情况。

四个错误指针寄存器包括E[P、FCS、Foo和K塔,它们保存有指向最

近执行的80387指令及数据的指针。FIP和FCS保存有指向最近执行的80387

的指令的指针并带有两个操作码字节。FCS保持有选择子和操作码而FIP保存

有偏移量。寄存器FOO和FOS指向该最近执行的指令的存储器操作数。FOS

11

第2章X86微处理器保护模式以及wINDOWS2000操作系统原理

保存有选择子而F00保存有偏移地址。

2.1.2保护虚拟地址f38J

计算机通过使用保护虚拟地址机制对计算机的资源(主存储器空间、执行时间、及外围设备)进行分配和保护。通过把这些资源分配给系统中的各个任务,并对这些资源进行保护,使所有任务得以有效运行直至完成。操作系统的资源分配及保护策略又80386硬件存储管理及保护机制实现Il】。80386的存储管理及保护机制,保护系统中的每一个任务不被另外的任务破坏。

1存储管理

任何完整的存储管理系统都包喊两个关键的部分:保护和地址转换。提供保护的目的是要避免系统中的一个任务访问属于另一个任务的或属于操作系统的存储区域。地址转换,不仅使操作系统可以灵活的把存储区域分配给各个任务,而其本事也是一种很重要的保护机制。

对于系统中的地址来说,每一个程夸产生的地址都是喊有两个部分的虚拟地址,不管是在最关键的操作系统内部,还是在各种应用程序中部是这样.无论是哪一种类型的程序在系统中运行,都由存储管理机制把虚拟地址转换为物理地址。设计人员可以安捧菜些物理地址不被任何斑拟地址所映射,所以虚拟…物理地址的转换也为存储器保护创造了条件.

为了减少规定地址转换藉数所需要的信息量,需要掩较大豹连续存储块映射成单个单元。这时只需要对整个存储块的映射做一次规定,两不要求对每个字节进行单独的说明。段机制和分页机制是两种广泛使用的地址转换技术。它们都是使用驻留在存储器的各种表格.规定各自的转换函数.这些存储在存储器的表格,只允许由操作系统进行访问,应用程序不熊对其进行修改.事实上,操作系统为每一任务维护一个不用的转换表格集,使每个任务可使用的地址,跨越整个虚拟地址空间,其结果是每一任务具有不f司的虚拟地址空问,并使任务之问隔离起来。下面简单的介绍段机制和分页机制:

80386以两极虚拟——物理地址转换使用段和分页两机制。第一级使用段机制,把包含两个部分虚拟地址空间地址转换为一个中间地址空阉韵地址,这里的中间地址空间也称为线形地址空间。第二缀使用分页机制,把线形地址转换为物理地址。在地址转换过程中,段机制总是要启用的,分页机制则根据需

第2章X86微处理器保护模式以及WINDOW¥2000操作系统原理

要而被启用或被禁用。如果分页机制被禁用,则由段机制转换产生的线形地址,直接作为物理地址使用,相当于分页机制转换函数,把线形地址与物理地址进行等同映射。如图所示,就是虚拟地址到物理地址的转换,因此,如果分页机制被禁用,则线形地址就是物理地址,否则,要把线形地址用页表进行转换,才能得到物理地址。

段机制分页机制

(分页被禁用)

图2.2:虚拟——物理地址转换

线形地址空间具有与物理地址空间同样的结构。与二维地址空间相比,线形地址与物理地址都是一维地址。线形地址空间与物理地址空间的容量都是4G字节。

段机制与分页机制是两种不同的转换机制,是整个地址转换函数的不同的转换级。虽然两种机制都利用存储在主存储器中的转换表,但这些表具有彼此独立的构造。事实上,段表存储在线形地址空间,而页表存储在物理地址空间,因此,段转换表可由分页机制重新定位而不需段机制的参与。段转换把虚拟地址转换为线形地址,并在线形地址中访问段转毅机制的表格,但它不知道分页机制已经把线形地址转换为物理地址。同样的,分页机制对于程序产生的地址所使用的虚拟地址空间也一无所知。分页机制只是直接的把线形地址转换为物理地址并且在物理地址中访问转换表格,它并不知虚拟地址空间的存在,甚至不知道段转换机制的存在。

2处理器控制寄存器13J

处理器控制寄存器包含段的基地址,页转换表和控制处理器操作的控制位。控制寄存器只能由特权级为0的程序访问。即只能由最内层特权级的程序访问,如果较外层的程序试图访问这些寄存器,则会产生异常。

80386的控制寄存器有四个32位的控制寄存器,分别命名为CR0、CRl、

第2章X86微处理器保护模式以及WINDOWS2000操作系统原理

---——●●●_●_-—_-_№——●-__●_-_--_●______●___———-_●_______-—_-_●●_-_-_●________●___●————————一一一一CR2和CR3;有两个48位的寄存器,命名为GDTR和IDTR:还有两个16位的选择子寄存器,命名为LDTR和TR,与LDTR和TR相联系的还有描述符投影寄存器,但是投影寄存器对我们来说是不可见的(即它们不能被访问)。80386对CRl寄存器没有定义,试图把CRl编码用在指令中将引起无效操作异常;CR0包含启用或禁用分页机割及保护机制的控制位、控制浮点协处理器操作的控制位;CR2和CR3由分页机制使用。CR0中的位30到位5及CR3中的位11到位O为保留位,但这些位不能为随意值,必须为o.处理器控制寄存器可由在0级特权级执行的程序通过使用特殊格式的MOV指令装入。

下面简单介绍CR0中重要的控靠4位的含义:

El":扩展类型位。ET=I表示系统中配置有80387协处理器,使用32位协处理器协议。ET=0表示使用16位的协议。

TS:任务切换位,用予加快任务的切换。

MP:算术存在位,控制WAIT指令在TS=I时是否产生DNA异常。

EM;模拟位.控制浮点指令的执行是由软件模拟还悬由硬件执行.EM=I时,浮点指令产生异常,浮点指令由软件模拟}BM=0时,硬件控制浮点指令传送到协处理器.

PE;控制段机制。P&l时,处理器工作予僳护方式l腿曩0时,处理器运行于实地址模式。

PG;控制分页机制.时,窟甩分页机蒯.嚣蔓避静蟪形遗缝——物理地址的转换;分页机制,段机制产生酶酸形:地址直接当作物理地址使用。

GDTR、lIYrR、ljDrIR和TR是系统中转常重要的一些特殊段的基地址寄存器,它们包含对段机制很重要的表格。GDTR、IDTR和IDTR寻址包含描述符表的段,而TR寄存器则对一个特别的任务状卷段档避杼寻址.在任务状态段中,包含有当前正在运行的任务的重要信息.0】mt指恕全局描述符表(GDT),48位的GDTR定义GDT的基地址及界限,其中32位为基地址,16位为界限;IDTR包含一个用于规定中断描述符表(DT)的柏位的伪描述符。IDT在线形地址空间中,直接的由一个为描述符定根,_il霉不悬用GDT中的描述符定根。这样就避免了在访问中断描述符时使用一个向接级tL就嗽寄存器包含当前任务的局部描述符表(LDT)的选择子,该选择予必须确定一个由ODT映射的类型为LDT的段;TR寄存器包含当前任务的任务状态段(TSS)的选

14

茎!主!塑丝丝堡矍堡篓楚塞坠垦!!型!塑!塑堡墨堡堕墨一择子,选择子必须确定一个由GDT跌射的段。

所有系统段都不能由程序直接访问。即使是特权级0的操作系统核心也不能直接进行访问。对专门于LDT及TSS段的描述符类型。如果试图把这样的描述符选择子装入到六个段寄存器之一,都将会引起故障。GDT及IDT则根本没有选择子或段描述符,为允许操作系统核心对这些段的内容进行检查或修改,必须用同样的基地址及界限定义一个只读或读写段,并具有适合于装入到DS、Es、FS或GS之一以供程序访问的属性。这些附加的段称为别名段,因为这些段为线形地址空闷同样韵段提供了不同的名字。

在我们的开发中,将要对以上的这些段寄存器进行修改以使操作系统按照我们需要的方式运行。

2.1.3中断处理

中断和异常都是特殊的控制转移方法,这种控制转移在正常编程的指令流之外完成。而把程序控制转移狲处理程序的过程就称为处理中断。中断由一个外部时间引起.当中断被系统接受时,并不执行显示的指令.通常,中断用于指示FO设备的一次操作完成.外部时间及中断接受与正在执行的指令没有关系.中断使程序控制转移到操作系统中的中断处理程序,并开始I/0设备的下一次操作。当操作完成时,该处理程序遥过执行一条瑕BT指令使被中断的程序在断点处恢复执行。

中断是由异步的外部时问引起的,外部硬件使用处理器芯片上特定的引脚,把中断信号传送到处理器。印386支持两种类型的中新:它们是可屏蔽中断INTR以及不可屏蔽中断NMI.80386有两个引脚分别对应这两种类型的中断【¨。

INTR中断可以是任意的矢量号.外部硬件在发出n慨中断信息的同时,还向处理器给出一个8位的中断矢量号.Intcl公弼的8259A可编程控制器芯片可配合80386处理器工作,并通过80386的单个中断簪l脚处理多达64个中断源,每个8259A芯片除了给处理器提供中断矢量号之外,还要分配和判断中断的优先级。由于80386只有一个INTR中断引脚,只识羚j一种优先级,所以由8259A芯片判断优先级就成为一种很重要的功能.INTR中断可以用前面提到的FLAGS寄存器中的口位进行屏蔽。某些程序在程序代码的某一特定区域,为了程序执行的可靠往,当程序在该区域执行时,不允许响应任何中断。利用IF位屏蔽中断这一属性,可以达到使程序在临界区运行时不响应中断的目的。

NMI是不可屏蔽中断,即职位对NMI不起作用。系统响应NMI中断时,

相关主题
文本预览
相关文档 最新文档