操作系统实验四:保护模式之局部任务(LDT)初探

来源:互联网 发布:可以拍四宫格的软件 编辑:程序博客网 时间:2024/05/16 06:08

      通过前几次实验,对于实模式与保护模式间的跳转已经有了充分认知。此次实验与接下来的实验主要集中在认识保护模式下的一些特性,

如多任务的基础(局部任务LDT)、分页机制、中断、异常、I/O等。为了尽可能将实验设计的简单,我尽量将以上实验压缩在引导扇区的

512字节内。为了节省空间,我将pm16.c精简了许多,它只负责跳转到保护模式(程序限制在80字节以内),在pm32.c里会重新加载新

的GDT(程序加载到内存0x7c50处)。


此次实验内容为:

    (pm16.c部分)

    1.清屏,并跳转到保护模式(pm32.c,内存地址0x7c50)

    (pm32.c部分)

    1.加载新的GDT

    2.为GDT中局部任务描述符设置LDT的基地址

    3.显示字符串This is protect model.

    4.跳转到局部任务

    5.显示字符串This is local model.

    6.进入死循环

 

 

实验代码如下:

code:run.c(因为重新设置了pm32.c的内存分布,所以需要修改run.c中的几个数据,下面是修改好了的run.c代码

 

code:pm.h

 

code:pm16.c

 

code:pm32.c

 

 

想要实验以上代码的朋友请注意:

1.到杨晓兵大大的博客上下载安装yc09编译器,安装只需一分钟左右。

2.将此次试验中的run.c、pm.h、pm16.cpm32.c代码拷贝到某个实验用的文件夹内。

3.在安装yc09的目录YC09/example文件夹内找到bochs.exe、BIOS-bochs-latest、VGABIOS-elpin-2.40、x11-pc-us.map四个文件拷贝到试验用的文件夹内。

4.使用yc09编译运行run.c