多任务结构原理实例

多任务结构原理实例

ID:30786591

大小:370.79 KB

页数:10页

时间:2019-01-03

多任务结构原理实例_第1页
多任务结构原理实例_第2页
多任务结构原理实例_第3页
多任务结构原理实例_第4页
多任务结构原理实例_第5页
资源描述:

《多任务结构原理实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、4.9一个简单的多任务内核实例作为对本章和前几章内容的总结,本节完整描述了一个简单多任务内核的设计和实现方法。这个内核示例中包含两个特权级3的用户任务和一个系统调用中断过程。我们首先说明这个简单内核的基本结构和加载运行的基本原理,然后描述它是如何被加载进机器RAM中以及两个任务是如何进行切换运行的。最后我们给出实现这个简单内核的源程序:心动引导程序boot,s和保护模式多任务内核程序head,s。4.9.1多任务程序结构和工作原理本节给出的内核实例由2个文件构成。一个是使用as86语言编制的引导启动程序boot.s,用丁•在计算机系统加电时从启动盘上把内核代码加载到内存

2、中;另一个是使用GNUas汇编语言编制的内核程序head,s,其中实现了两个运行在特权级3上的任务在时钟中断控制下相互切换运行,并且还实现了在屏幕上显示字符的一个系统调用。我们把这两个任务分别称为任务A和任务B(或任务0和任务1),它们会调用这个显示系统调用在屏幕上分别显示出字符〃A〃和"B〃,直到每10ms切换到另一个任务。任务A连续循环地调用系统调用在屏幕上显示字符〃任务B则一直显示字符〃B〃。若要终止这个内核实例程序,则需要重新启动机器,或者关闭运行的模拟PC运行环境软件。boot,s程疗:编译出的代码共512B,将被存放在软盘映像文件的第一个扇区中,如图4-39

3、所示。PC在加电启动时,ROMBIOS中的程序会把启动盘上第一个扇区加载到物理内存0x7c00(31KB)位置廿始处,并把执行权转移到0x7c00处开始运行boot程序代码。引#品区(点击杳看人图)图4-39软盘映像文件示意图boot程序的主要功能是把软盘或映像文件中的head内核代码加载到内存某个指定位置处,并在设置好临时GDT表等信息后,把处理器设置成运行在保护模式下,然后跳转到head代码处去运行内核代码。实际上,boot,s程序会首先利用ROMBIOS屮断int0x13把软盘屮的head代码读入到内存0x10000(64KB)位置开始处,然后再把这段head代码

4、移动到内存0开始处。最后设置控制寄存器CR0屮的开启保护运行模式标志,并跳转到内存0处开始执行head代码。boot程序代码在内存屮移动head代码的示意图如图4-40所示。UxIOOWZK)Ox7dJO(31K)Ox(MX)Oboots程庠代码bead.s程序代码代码执行位賈线路51CT0.com技术成就梦想图4-40内核示例代码在物理内存中的移动和分布情况把head内核代码移动到物理内存0开始处的主要原因是为了设置GDT表时可以简单一些,因而也能让head,s程序尽量短一些。但是我们不能让boot程序把head代码从软盘或映像文件中直接加载到内存0处。因为加载操作需

5、要使用ROMBIOS提供的中断过程,而BIOS使用的中断向量表正处于内存0开始的地方,并且在内存1KB开始处是BIOS程序使用的数据区,所以若直接把head代码加载到内存0处将使得BIOS中断过程不能止常运行。当然我们也可以把head代码加载到内存0x10000处后就直接跳转到该处运行head代码,使用这种方式的源程序可从oldlinux.org网站下载,见下面说明。head,s程序运行在32位保护模式下,其中主要包括初始设置的代码、时钟中断int0x08的过程代码、系统调用中断int0x80的过程代码以及任务A和任务B等的代码和数据。其中初始设置工作主要包括:①重新设

6、置GDT表;②设置系统定时器芯片;③重新设置IDT表并且设置时钟和系统调用中断门;④移动到任务A中执行。在虚拟地址空间中head,s程序的内核代码和任务代码分配图如图4-41所示。实际上,本内核示例中所有代码和数据段都对应到物理内存同一个区域匕即从物理内存0开始的区域。GDT中全局代码段和数据段描述符的内容都设置为:基地址为0x0000;段限长值为0x07ffo因为颗粒度为1,所以实际段长度为8MB。而全局显示数据段被设置成:基地址为0xb8000;段限长值为0x0002,所以实际段长度为8KB,对应到显示内存区域上。GDIIDT数据段Data□部tiWil状总段tss

7、l隔部点1d【0状念艮IssO城示民救据段DHd代码段CodeMULI数据段DM3代码段Code"mulT任务OTSS代码段C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。