您的位置 首页 新能源

根据X86渠道的简略多任务内核的剖析与完成

基于X86平台的简单多任务内核的分析与实现,摘要:描述了一个简单多任务内核的设计和实现方法。分析了该简单内核的基本结构和加载运行的基本原理,然后描述了其被加载进机器RAM中以及两个任务进行切换的运行方

摘要:描绘了一个简略多使命内核的规划和完结办法。剖析了该简略内核的根本结构和加载运转的根本原理,然后描绘了其被加载进机器RAM中以及两个使命进行切换的运转办法。

0 导言

当说到多使命时,人们便会联想到Mac OS、Linux、Windows等操作体系。通常情况下,若在操作体系下运转多使命,是由操作体系担任办理和调度各个使命的。本文通过剖析一个简略的多使命内核,能够便于更简略地了解操作体系的使命办理机制,以及能够了解计算机体系是怎么发动的。

1 多使命程序的结构

本文完结的简略多使命内核,首要由两个文件构成:一个是运用as86言语编制的引导发动程序,首要用于在计算机体系加电时,将内核代码从发动盘加载到内存中;另一个就是运用GNU as汇编言语编写的内核程序,其间完结两个运转在特权级2上的使命可在时钟中止操控下彼此切换运转,并可通过体系调用在屏幕上完结字符显现。

2 多使命内核作业的发动程序原理

计算机体系加电发动后,会把发动程序从发动盘的第一个扇区加载到物理内存0x7c00方位开端处,之后把履行权交给0x7c00初开端运转发动程序。

发动程序的首要功能是将软盘或许镜像文件中的内核程序加载到内存的某个指定方位,完结这个意图的办法是运用ROS BIOS中止int 0x 13,把软盘或许镜像中的内核代码读入到内存,然后再把这段内核代码移动到内存0开端处。最终设置操控寄存器CR0中的敞开维护运转形式标志,并跳转到内存0处开端履行内核代码。发动程序在内存中移动内核代码的示意图如图1所示。

根据X86渠道的简略多使命内核的剖析与完结

将内核代码移动到物理内存0开端处的首要原因是这是GDT表时能够简略一点。可是,不能让发动程序把内核代码从软盘或映像文件中直接加载到内存0处,由于加载操作需求ROM BIOS供给中止进程,而BIOS运用的中止向量表正处于内存0开端处。若直接把内核代码加载到内存0处,那么,BIOS中止进程将不能正常运转。

3 内核程序

3.1 初始化使命

内核程序运转在32位维护形式下,初始化阶段首要包含从头设置GDT表,设置体系守时器芯片,从头设置IDT表而且设置时钟和体系调用中止门。内核示例中所有代码和数据段都对应到物理内存同一个区域上,即从物理内存0开端的区域。在虚拟地址空间中内核程序的内核代码和使命代码分配图如图2所示。

根据X86渠道的简略多使命内核的剖析与完结

3.2 发动第一个使命

特权级0的代码不能直接把操控权搬运到特权级2的代码中履行,但能够运用中止回来操作来完结,因而当初始化GDT、IDT和守时芯片完毕后,就运用中止回来指令IRET来发动第一个使命。

详细的完结办法是在初始仓库init stack中人工设置一个回来环境,即把使命0的TSS段选择符加载到使命寄存器TR中,LDT段选择符加载到LDTR中今后,把使命0的用户栈指针和代码指针以及标志寄存器值压入栈中,然后履行中止回来指令IRET。该指令会弹出仓库上的仓库指针作为使命0用户栈指针,康复假定的使命0的标志寄存器内容,而且弹出栈中代码指针放入CS:EIP寄存器中,然后开端履行使命0的代码,以完结从特权级0到特权级3代码的操控搬运。

3.3 两个使命的切换

内核程序将守时器芯片的通道0设置成每通过10 ms就向中止操控芯片发送一个时钟中止请求信号,这样,每个10 ms将会切换运转的使命。PC的ROM BIOS开机时已经在守时器芯片中把时钟中止请求信号设置成中止向量8,因而需求在中止8的处理进程中履行使命切换操作。

每个使命在履行时,会首先把一个字符的ASCII码放入寄存器AL中,然后调用体系中止int 0x80,而该体系调用处理进程会调用一个简略的字符写屏子程序。在显现过一个字符后,使命代码会运用循环句子推迟一段时间,然后又跳转到使命代码开端处持续循环履行,直到运转了10 ms而发生了守时中止,然后代码会切换到另一个使命去运转。

现在,该内核示例已经在Bochs模仿软件中运转测验过,测验成果如图3所示。

根据X86渠道的简略多使命内核的剖析与完结

4 结语

本文剖析了一个根据X86渠道的简略多使命内核的根本结构和加载运转原理,描绘了其被加载进机器RAM中的根本思路,一起给出了两个使命进行切换的运转办法。其首要意图是了解操作体系的发动加载进程。

附:本文的发动代码及内核代码如下:

根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结
根据X86渠道的简略多使命内核的剖析与完结

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/297858.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部