0.11之路(三):system模块

来源:互联网 发布:c语言中函数中参数 编辑:程序博客网 时间:2024/05/25 08:12

现在载入第三批代码——system模块,仍然使用 int 0x13 中断。
这批代码要比之前多很多,所以需要一点时间,于是出现了 “Loading system …”的字样。但是,此时操作系统的main函数还没有执行,所以它是用汇编来实现的。
system模块被加载至内存的 0x10000 往后的120KB空间中。这样整个操作系统的代码都加载至内存,最后要再次确定一下根设备号。

什么是根设备?
根文件系统设备(Root Device):
0.11使用的是Minix操作系统的文件系统管理方式,要求系统必须存在一个根文件系统,其他文件系统挂接在其上,而不是同等地位。一张格式化好的软盘就可以成为一个根文件系统设备。

setup程序做的第一件事就是利用BIOS中断服务程序从设备上提取内核运行所需的机器系统数据。然后将这些数据放在了 0x90000 ~ 0x901FD 的位置,可见已经覆盖了原先的bootsect代码,bootsect只有2B未被覆盖,可见,操作系统对内存的使用是非常严谨的——充分利用了已经没有用的内存,而且几乎正合适,只差2字节。

最后,总结一下整个的加载过程。

开机 —— BIOS —— bootsect(int 0x19)—— setup (int 0x13)—— system(int 0x13)

0 0
原创粉丝点击