【原创】自制操作系统知识储备(一)---流程篇

一、 最终目标
现在有一台裸机,如果要用你写的操作系统来让计算机为你工作,那么你应该像微软公司一样,提供一个安装操作系统的安装盘。这个安装盘可以是软盘或光盘,如果操作系统空间足够小,软盘就足以;如果操作系统空间较大,则需光盘。我们假定自己制作的操作系统足够下,一张软盘就能容纳,因此后面的说明全部都以软盘为例。那么你要做出操作系统的终极目标应是:写出的代码全部存储在软盘上,让用户使用这个软盘来安装到计算机,后面就借助你写出的操作系统来完全控制这台计算机。

二、 实现过程
为了实现这个终极目标,正确的流程和步骤应该是:用户使用你提供的软盘来引导计算机启动,并将软盘上的操作系统内容完全装载到用户的计算机硬盘上。这样,当用户使用你的软盘完成操作系统安装之后,下次打开计算机就只需要从硬盘上启动操作系统了,这个时候用户就已经完全脱离你的软盘了。

三、 所需工作
为了实现过程,自己写操作系统就需要以下任务:

  1. 编写操作系统程序。
  2. 把操作系统程序制作在启动软盘上。
  3. 启动软盘要把操作系统程序装载到硬盘。

四、 详细分解

  1. 编写操作系统程序
    操作系统可以简单,也可以复杂。这个取决于制作者的思路和制作操作系统的目的,但最基本的功能应该具备以下能力:设备管理、文件操作、办公、网络、娱乐、游戏等。

  2. 把操作系统程序制作在启动软盘上。 把操作系统程序经过汇编后以BIN二进制的格式存储到软盘上即可。但是在开发过程中,会引发出很多的问题:
    (1) 开发环境问题:虚拟机
    理论上讲,在开发操作系统过程中,每修改一次程序,就需要重新写到软盘上,然后用软盘引导计算机启动,来验证是否满足需要。如果不满足,就需要关机取出软盘来重新操作。但是这样的过程无疑不现实,首先现在的计算机都没有软盘,就算有软盘这样频繁操作也很困难。
    为了解决这个问题,我们需要用虚拟机。这样,每次关机、取出软盘、修改操作系统程序、重写软盘、插入软盘和启动机器的过程,就可以用虚拟机关机、修改软盘镜像和开启虚拟机的过程来代替。这样大大的提高了程序调试的便捷性。
    但是,就算这样的过程,也不简单。比如操作系统程序哪怕是只修改了一个字符,也需要重新启动虚拟机和加载软盘镜像也很繁琐。因此我们还需要进一步优化开发过程。
    (2) 开发效率问题:调试程序和引导启动程序为了解决以上开发效率严重低下的问题,我们就需要这样一种理想的调试环境:当修改操作系统程序中的任意地方时,能马上编译并运行出结果,而不需要将操作系统真正的装载到软盘镜像再到重启虚拟机等一系列繁琐操作。那么有没有这样的环境呢?答案是有的!但是需要借助于别的操作系统,因为你要需要编译并运行正在编写的操作系统代码。DOS操作系统下的.COM文件就是最好的调试环境,要成功运行.COM文件就需要遵循一些列的DOS系统规范,这里包括:
    (a) PSP 问题
    DOS系统中.COM程序要能正常运行,需要有1个256字节的程序前缀,所以必须要用ORG 100H来开头。
    (b) FAT 存储标准
    程序虽然可以在.COM下调试运行,但是不可能一直在这个DOS环境下调试,偶尔还是需要装载到引导软盘并启动虚拟机来验证开发结果,那么程序装载到引导软盘就涉及FAT存储标准的问题。装载到引导软盘的程序包括两部分:引导扇区程序和操作系统内核。引导扇区程序相对简单,只要把程序放在启动盘第1扇区带上启动标记“55AA”且不超过512B大小即可。操作系统内核的加载则相对复杂一些,开发者需要解决的问题是让引导盘在512B的有效空间内用汇编代码把操作系统内核完全加载到内存。无论何种方式,实际上最终的目的都是把操作系统内核从软盘上读出来并写到内

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值