自己动手写操作系统(一) 
 
作者:伊梅 本文选自:开放系统世界——赛迪网 2002年10月10日
自由软件社区是一个充满自由和梦想的地方,在10余年的时间里它创造了一个又一个奇迹。然而,这些奇迹的创造者不只是Stallman,也不只是Linus Torvalds,而是活跃在世界各地的不计其数的开发人员。 在使用各种功能强大的自由软件时,我总会对其开发者充满崇敬之情,期盼有朝一日自己也能成为他们中的一员。很多对自由社区充满向往之情的人,虽然也想努力融身于其中,但又不知该怎么做。那么,就请与我们一起从编写一个简单的操作系统开始吧! 
我们要做的事情
有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题。我将带大家一步一步完成自己的操作系统。当然如果学一学上述内容再好不过。 首先要明确处理器(也就是CPU)控制着计算机。对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器。也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级别。从这一点上来讲,可以使用一些软件把处理器转换到著名的保护模式。只有这样,我们才可以充分利用处理器的强大功能。 编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。BIOS是用来执行POST(Power On Self Test,自检)的。自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。这一切完成以后,你就会听到PC喇叭发出一声清脆的响声。如果一切正常,BIOS就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。在此我们把软盘作为启动设备。如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。 
====
贴不了了,文章較长,全文在
http://blog.csdn.net/metababy/archive/2005/12/22/558947.aspx==========
还有另一篇更简单的,几十行代码,就可以实现的
摘录如下:
可称是自己写的操作系统哈(严重不完全的) 
汇编编写 可以自启动的磁盘 ,可以笑称是自己写的操作系统哈
 
 
下面贴出了两段代码boot.asm 和shell.asm,实现磁盘启动,并且解析了两个命令 time 和 reboot,有兴趣的朋友可以看看。由于本人的汇编知识很菜,这篇文章只是让大家看看磁盘启动是如何实现的,如果有错误的地方,大家能够指出那就太谢谢了步骤:放入一张磁盘,把这两段代码编译成EXE,分别执行一次,重启计算机,如果有虚拟系统环境的软件更好,如virtual PC,直接就可以看到效果。
--------------------------------------------------------------------------------以下是boot.asm--------------------------------------------------------------------------------
;启动代码
;-----------------------------------------------------code_seg segment para 'code'
main proc far
 assume cs:code_seg,ds:code_seg
 org 00h
start:
 push ds===========================
同样,贴不下,全文请见
http://blog.csdn.net/metababy/archive/2005/12/22/559209.aspx

解决方案 »

  1.   

    迈出也第一步,总算是一种尝试,不信Bill Gates当年就直接出Windows了,还不是写了些小东东。
    启蒙教育嘛没那个人,幼儿时,不学走路,不练习,就会跑了的。
      

  2.   

    也要同时说明自制爆竹和自制运载火箭有什么区别,不能因为他们都能飞就硬说一样。
    ========
    是有点说得不对,不过,这算是写OS的初步啊,还是得走这一步。
    能够将复杂的OS写得让小菜也可以试手,还是很不错啊,让大家都有机会 过把瘾不是很好吗?
      

  3.   

    看得懂ASM已经不算普通人了吧...
    另外...于渊的<<自己动手写操作系统>>我已经买了...嘻嘻~~
      

  4.   

    <<自己动手写操作系统>>