本项目实现的操作系统也采用层次结构进行设计,如图2所示:
图 2 系统层次结构图
内核管理模块是操作系统最重要的模块,它直接和硬件接触实现功能,本项目实现内核的三大功能:内存管理模块、I/O设备管理模块以及多任务管理模块。其中内存管理模块负责内存空间的分配与回收,I/O设备管理模块实现中断处理接收键盘鼠标数据,多任务管理模块负责实现多任务并发执行。
在内核管理模块之上的是图层绘制模块,其主要功能是绘制图形化操作界面,实现画面上字符图形的显示刷新、窗口移动以及多张图层叠加管理。
图层绘制管理模块上面是命令行窗口,命令行窗口本身利用图层绘制管理模块绘制出来,紧接着调用图层绘制管理模块的函数实现窗口本身的字符显示。
API位于命令行窗口上一层,是操作系统提供给应用程序的功能接口。API中封装命令行窗口的一部分函数提供给最上层的应用程序,当应用程序中调用了API之后会继续调用命令行模块函数从而实现应用程序在命令行窗口的运行。
综上,本文最后的操作系统将实现一个系统启动盘,该启动盘能够实现系统自举,加载后的系统可以对鼠标键盘等中断做出必要响应、可以对内存分配回收进行管理、可以对窗口图层叠加进行管理、可以实现简单的多任务并发执行、还可以在命令行中输入简单的命令以及运行简易应用程序。
3. 系统实现
3.1 操作系统引导模块
通电自启时,BIOS会启动系统自举程序,该程序会按照CMOS的设置去寻找操作系统的启动盘,启动盘中包含操作系统的加载程序,首先运行加载程序,由加载程序把操作系统内核加载到内存中,到此操作系统开始管理整个计算机,而操作系统内核程序的第一步就是从实模式进入保护模式,其他所有管理模块都是建立在保护模式基础之上,系统运行流程图如图3所示。
图 3 系统运行流程图
3.1.1软盘与启动区介绍
本文设计的操作系统采用软盘当做启动盘启动操作系统,软盘构造如图4所示,具体做法如下。
图 4 软盘示意图
由图可知,一张软盘有两个磁头,即读写口,每个磁头控制80个柱面,每个柱面含有18个扇区,每个扇区512字节,所以整张软盘的容量为:
80*2*18*512 = 1474560 Byte = 1440 KB
通电自举程序找到该软盘后,计算机就会检查软盘的0柱面0磁头1扇区(柱面磁头下标从0开始,扇区从1开始),如果该扇区以0x55AA结束,则BIOS认为它是一个引导扇区。
所谓引导扇区,也被称作主引导记录MBR,主要作用是加载操作系统并将处理器控制权转让给操作系统。
所以在具体实现的时候,只需把该扇区最后两个字节赋值0x55AA,BIOS就会把该扇区内容装载到内存地址0000:7c00处,然后将控制权彻底交给这段代码。 基于IA32架构的操作系统基本功能的研究+源程序(3):http://www.youerw.com/jisuanji/lunwen_24778.html