动手写操作系统 -- 前言


工作这些年接触过很多硬件,驱动,系统,软件。

干过的活也不少,画板子,焊芯片,各种单片机上写驱动,移植操作系统,协议栈。写过各种平台的软件,Windows,Linux,Vxworks,Android, 还折腾过web开发。

回想下,搞了这么些,有没有自己真正精通的?估计连焊芯片都不算。。。。。。

后来下定决心深入研究操作系统,虽然分析过ucos,freedos,linux。但都是纸上谈兵,分析完了,也写不出那样的系统。

想真正精通操作系统还得实战,自己动手写!


结合以前玩单片机的经历,很多小型系统需求不高,只需要操作系统能够支持多任务,分时调度即可。

这样的系统实现起来应该不难,何不动手写一个这样的操作系统。。。。。。。。。。。。


OK,既然准备写了,开发环境以及运行环境就是第一步。

开发环境: NASM, Turbo C (NASM编译汇编,Turbo C编译C代码)
运行环境: 普通PC,系统工作在实模式

这样的开发环境很好搭建,运行环境要求也不高,直接在电脑上运行。编写的操作系统工作在X86 实模式,

只用到16位的386模式(毕竟是第一步,只是演练,没必要让系统跑在保护模式下)。而且方便移植到其它单片机上。


基础知识

用Turbo C编译生成的系统内核是EXE文件的,也就是说编写的操作系统在Windows下可以直接运行,调试非常方便。

注意,EXE文件只是内核。一个完整的操作系统(PC平台),还需要引导盘将内核从文件系统中读取到内存才行。

但这些都不难,文件系统可以用FAT12,引导代码可以参考freedos。

所以了解这些东西,请参考我之前的文章:

深入分析FreeDos -- 编译
深入分析FreeDos -- Image分析
深入分析FreeDos -- 引导代码

uCOS的bootloader (PC机)

上篇: linux 1.2.8 tcp 三次握手 下篇: 动手写操作系统 -- 单任务系统