收稿日期:2003-01-04 作者简介:张加宁(1975-),男,浙江嘉兴人,同济大学电子与信息工程学院信号与信息处理专业硕士研究生,研究方向:信
号与信息处理,动态实时仿真系统。
文章编号:1006-2475(2003)10-0022-03
基于Windows 2000开发实时操作系统
张加宁
(同济大学电子与信息工程学院,上海 200433)
摘要:讨论了在Windows 2000基础上开发实时操作系统。通过在Windows 内核下加载实时驱动模块,提高实时任务的运行优先级,保证了任务运行的实时性。该方案是对Windows 的功能扩展,能确保Windows 2000操作系统的完整性。关键词:实时操作系统;实时驱动模块;中断;优先级中图分类号:TP316 文献标识码:A
Developing Real -time Operating System Based on Windows 2000
ZHANG Jia -ning
(College of Electronics and Information Engineering,Tongji University,Shanghai 200433,China)
Abstract :T his paper discusses the issue about developing a rea-l ti me operating system based on Windows 2000.By loading a rea-l time driver module under Windows kernel,the priority level of rea-l time task can be improved and the rea-l time performance can be ensured.This method is a functional extension of Windows 2000,so the in tegrality of Windows 2000operating system can be i nsured.Key words :rea-l time operatin g system;rea-l time driver module;in terrupt;priori ty level
0 引 言
实时系统是指对来自于外部的事件和信号在限
定的时间之内作出正确响应的系统,在数字实时仿真、生产过程控制等领域内得到了广泛的应用。目前市场上存在的主要是专用的实时操作系统,在嵌入式应用领域内应用较广。这类操作系统的主要优点就是性能比较高,但缺点是价格非常昂贵、开发能力比较弱、软件编程比较复杂。因此,在现有的成熟PC 机操作系统的基础上研究和开发满足应用要求的实时系统,将是一个具有重要意义的研究方向。M-i crosoft 的Windows 是当前主流的操作系统,界面友好,开发能力强大,在其上实现实时系统非常有吸引力,所以本文尝试通过功能扩展,基于Windo ws 2000开发实时操作系统。
1 实时操作系统方案设计
在Windows 2000环境下实现实时系统的方案是:在Windows 操作系统内核与硬件抽象层之间插入一
实时驱动模块,使其可以先于操作系统内核获得中断控制权(见图1)。将需确保的实时任务放入Windo ws 操作系统内核模式下运行,并通过实时驱动模块来保证实时任务可以中断任何当前正在运行的代码,反之在实时任务的运行过程中不可以被其它代码中断,即获得最高优先级,以此保证这个实时任务的运行性能。
图1 基于Windows 2000下的实时操作系统
与其它的实时操作系统相比,此方案是对Win -do ws 操作系统的扩展,在优先保证实时任务的同时,有效维护了Windows 操作系统的完整性,因此任何运行在Windo ws 操作系统下的应用程序以及驱动程序
2003年第10期
计 算 机 与 现 代 化
JIS UANJI YU XIANDAIHUA
总第98期
等都可以保证正常地运行。
2实时操作系统方案实现
下面叙述了该实时操作系统方案中的核心部件)))实时驱动模块的实现:
实时驱动模块运行于Windows操作系统内核模式下,它将Windows操作系统内核作为一个独立的任务来运行,具有调度Windows操作系统内核与实时任务的功能,并保证实时任务的运行性能。
实时驱动模块基于中断驱动,接管来自实时定时器的中断。实时定时器定时产生中断,每次中断触发实时驱动模块。实时驱动模块被触发执行之后,它优先将系统控制权交给实时任务,然后才返回给Win-dows操作系统内核。为实现上述目标,必须保证实时定时器的中断优先级高于其它系统中断源,包括系统时钟中断请求的优先级,以确保实时任务可以抢先于Windows操作系统内核的运行。
在Windows2000操作系统上,实时驱动模块可以作为一个内核模式驱动程序来实现。
2.1接管实时定时器中断
在Intel X86处理器平台上,中断是基于向量(Vec tor)机制的,也就是说,系统中的每个中断都对应着一个向量,系统处理器通过这个向量来定位相应中断陷阱处理程序(Interrupt Trap Handler)的入口地址,然后再将控制流程转移到所定位的入口地址。因此,实时驱动模块接管定时器中断的方法是:将该定时器中断对应的中断向量指向自己定义的中断陷阱处理程序,从而抢先于Windows内核接管该中断,优先调度实时任务。
(1)获得中断描述符表(IDT)的基地址以及边界。
P P定义中断描述符表的基地址以及边界。
typedef s truct IDT{US HORT Li mit;US HORT LowBase;USH-ORT HighBase;}IDT;
IDT IdtBuffer;
P P获得中断描述符表的基地址以及边界。
asm SIDT IdtBuffer;
P P计算中断描述符表(IDT)的基地址。
B YTE*IdtBase=((IdtBuffer.HighBase)<<16)+(Idt-Buffer.LowBase);
(2)在中断描述符表中定位所希望截获的中断向量对应的中断门描述符入口地址:假设希望截获的中断向量为HOOKED I NT VECTOR。
INTERRUPTGATE DESCRIPTOR*Id tEntry=IdtBase+ HOOKED VEC TOR*DESCRIP-TOR);
(3)保存原中断陷阱处理程序的入口地址,并设置新的中断陷阱处理程序的入口地址。
windows开发平台P P保存原中断陷阱处理程序段选择器值与偏移量。
ULONG OldSelector=(IdtEntry->Selector);
ULONG OldOffset=((IdtEntry->OffsetHigh)<<16)+(Idt-Entry->OffsetLow);
P P获得当前代码段的选择器值。
US HORT CurrentCodeSectionSelector;
P P设置新中断陷阱处理程序段选择器值与偏移量。
(IdtEntry->Selector)=Curren tCodeSectionSelector;
(IdtEntry->OffsetLow)=(USHORT)NewInterrupt T rap Handler;
(IdtEntry->OffsetHigh)=(US HORT)(((ULONG)NewIn ter-rup tTrap Handler)>>16);
其中NewInterruptTrapHandler为新中断陷阱处理程序的入口地址。在新中断陷阱处理程序中,实时驱动模块在优先调度执行实时任务之后,通过一个远跳转(FAR JMP)指令将系统控制权返回给Windo ws2000操作系统的内核,以保证Windows2000操作系统的完整性。
US HORT OldInterruptTrapHandler[3];
declspec(naked)VOID NewInterruptTrap Handler()
{asm PUSHAD;asm PUSHFD;P P保存寄存器状态。
asm CALL Real timeTaskEntry;P P优先调度执行实时任务。
OldInterruptTrapHandler[0]=(US HORT)Old Offset;
OldInterruptTrapHandler[1]=(US HORT)(OldOffset>>16);
OldInterruptTrapHandler[2]=OldSelector;
asm POPFD;asm POPAD;P P恢复寄存器状态。
asm J MP FWORD PTR OldInterruptTrapHandler;
asm IRETD;}P P将系统控制权返回给Windows2000操作系统内核。
至此,已经截获了中断向量为HOOKED INT VECTOR的中断,并在中断陷阱处理程序中优先调度执行了实时任务,同时保证了Windows2000操作系统的完整性。
2.2保证该实时定时器的中断优先级高于其它系统中断源的中断优先级
现代计算机系统通常采用高级可编程中断控制器(APIC)来实现中断管理机制。在Windows2000操作系统中,系统时钟中断请求所对应的IRQL值为CLOC K2LE VEL,这个中断请求用于Windows2000操作
系统进行日时钟刷新以及请求线程调度等。因此实时定时器中断请求所对应的IRQL值高于系统时钟中断请求所对应的CLOC K2LE VEL值即可以保证实时任务的响应性能。
在Windows2000操作系统中,I RQL=CLOC K2
23
2003年第10期张加宁:基于Windows2000开发实时操作系统
LE VEL值(1C H)所对应的中断向量为0D1H)))正是用于系统时钟中断请求,而所对应的中断请求线则为I RQ8。
为了使得实时定时器中断请求所对应的IRQL 值高于系统时钟中断请求所对应的CLOC K2LEVE L 值,可以将实时定时器中断请求所对应的中断向量设置为0EXH或者0FXH;其中,X为一个任意的十六进制数值。不妨就设置为0E1H。
在基于APIC的计算机系统中,系统时钟由IRQ8来实现;而系统定时器(Intel8254-T P C0)处于空闲状态,其对应的中断请求线为IRQ2。因此,可以将系统定时器(Intel8254-T P C0)作为实时定时器之用。
在缺省情况下,系统定时器(Intel8254-T P C0)中断请求I RQ2所对应的中断向量为61H,IRQL值为5。为了提供实时服务,将IRQ2所对应的中断向量设置为0E1H,如下所示。
P P配置索引寄存器物理地址。
PHYSICAL ADDRESS IndexRegisterPhysical Address;
(IndexRegisterPhysicalAddress.LowPart)=0xFEC00000;
(IndexRegisterPhysicalAddress.HighPart)=0x00;
P P配置数据寄存器物理地址。
PHYSICAL ADDRESS DataReg i sterPhysicalAddress;
(DataRegisterPhysicalAdd ress.LowPart)=0xFEC00010;
(DataRegisterPhysicalAdd ress.HighPart)=0x00;
P P向配置索引寄存器写入IRQ2对应索引值(14H)。
(*IndexRegister)=0x14;
P P获得原配置,低8位为中断向量。
ULONG OldConfigurati onData=(*DataRegister);
P P复位原中断向量位。
OldConfi gurationData=OldConfigurationData&0xFFFFFF00;
P P设置新中断向量(0E1H)。
OldConfi gurationData=OldConfigurationData|0xE1;
P P新中断向量0E1H写入配置数据寄存器。
(*DataRegister)=OldConfi gurationData;
至此,已经完成了实时驱动模块的重要基本功能:接管实时定时器中断,并且保证了实时定时器的中断优先级高于系统时钟的中断优先级,从而有效地保证了实时Windows2000操作系统的实时性能。
2.3系统实现
在Windows2000操作系统上,实时驱动模块可以作为一个内核模式驱动程序来实现。该模块(驱动程序)可以选择开机时装载或手工装载(通过编辑注册表)。
要运行的实时任务只需提供一个实时驱动模块事先约定好的接口函数,即可被实时驱动模块以最高优先级调度运行,且调度频率远高于Windows内核多任务切换频率。
3性能分析
实时系统的性能评价主要基于对实时任务的响应速度。在本方案中,性能分析可以从三方面考虑:
(1)实时任务一直被实时驱动模块以最高优先级调度运行,其中断延迟时间变得很小,且运行过程中不会被其它代码中断,保证了其响应速度。
(2)Windows调度任务所用的系统时钟中断间隔为毫秒级,而触发实时驱动模块的实时定时器中断间隔小于100微秒,实时任务可以几十微秒间隔被触发执行,其响应速度比Windo ws线程调度高1至2个数量级。
(3)本方案保持了Windows操作系统的完整性,鉴于现代PC性能的不断提高,在保证实时任务运行性能的前提下,Windows仍然能调度多任务多线程。
实时Windo ws2000操作系统对于响应时间在50 ~100微秒左右的任务可以提供比较优良的实时性能。以后的改进方案可以采用精度更高,时间分辨率更小的实时定时器,以期获得更好的实时性能。
参考文献:
[1]Art Baker,Jerry Lozano.The Windows2000Device Driver
Book(Second Edition)[M].China Machine Press,2001. [2]David A Solomon,Mark E Russinovich.Inside M icrosoft Win-
dows2000(Third Edi tion)[M].Microsoft Press,2000. [3]周明德.微型计算机系统原理及应用(第3版)[M].北
京:清华大学出版社,2001.
[4]Andrew S Tanenbau m,Albert S Woodhull.Operating Systems
Design and Implemen tation(Second Edition)[M].Prentice Hall,1997.
[5]Microsoft Corporation.T echnology Brief:Rea-l Time Systems
with M icrosoft Windows NT[M].Microsoft Corporation,
1995.
24计算机与现代化2003年第10期
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论