Write Your Own Operating System Tutorial(中文版) - 简介

来源:互联网 发布:淘宝哪里看自己的等级 编辑:程序博客网 时间:2024/05/19 22:06

操作系统实作入门

首先说说我们用到的工具。
     既然要写操作系统,必不可少的就是需要汇编语言的编译器。如果你一时找不到tasm,masm等年头已久的东西,你可以试试nasm(netwide assembler),这是一个开源软件,你可以在http://sourceforge.net/projects/nasm下载到它。
    另外,如果你不想一次又一次的重启来调试你的程序的话,你可能需要一个模拟器,来模拟x86的环境,在http://bochs.sourceforge.net/getcurrent.html,你可以下载到bochs。它能够模拟出一台计算机,包括cpu,内存,基本I/O设备等等。
    下载并解压缩bochs后,你可以在它的目录中找到一个名为bximage.exe的程序,这个程序可以为我们创建磁盘镜像文件,我们可以在这些磁盘镜像文件上尝试我们的操作系统,而不必实际改动我们的硬盘或是软盘上的数据,毕竟,在没有实际把握之前,我们不愿意给我们的计算机带来什么不可恢复的伤害。
    下面的表格显示了一次bximage.exe的运行(程序在红色显示的部分会等待用户输入)。它为我们创建了一个名为boot.img的文件,这个文件是一张容量为1.44M的软盘的镜像。
========================================================================
                                bximage
                  Disk Image Creation Tool for Bochs
        $Id: bximage.c,v 1.17 2002/11/26 11:21:31 cbothamy Exp $
========================================================================
Do you want to create a floppy disk image or a hard disk image?

Please type hd or fd. [hd] fd

Choose the size of floppy disk image to create, in megabytes.

Please type 0.36, 0.72, 1.2, 1.44, or 2.88. [1.44]

I will create a floppy image with
  cyl=80
  heads=2
  sectors per track=18
  total sectors=2880
  total bytes=1474560

What should I name the image?

[a.img] boot.img

Writing: [] Done.

I wrote 1474560 bytes to (null).

The following line should appear in your bochsrc:

  floppya: 1_44="boot.img", status=inserted

Press any key to continue

    你也许急着想看看bochs到底是什么样,那么你可以在http://bochs.sourceforge.net/diskimages.html找到一些操作系统的镜像文件,下载、解压缩到bochs的目录中,然后运行bochs,你就能够看到各种操作系统运行在你的Windows之上了。
    然后,你可以在这里下载一个名为lesson5.asm的文件,并且用nasm编译它,如下:

nasm lesson5.asm -o boot.bin

     这之后,你将得到一个名为boot.bin的纯二进制文件,大小正好为512字节。用一个能够编辑16进制文件的编辑器打开这个文件,你可以看到这个文件中有一半以上的字节为0,最后两个字节为55和AA。
    然后,用你的编辑器打开boot.img,把boot.bin中的内容全部复制到其中。值得注意的是,你应该把内容复制到boot.img的开始处。也就是说,复制后的内容占用了boot.img的0x000到0x1FF字节。
    如果你曾经在bochs的目录中解压过镜像文件,那么你的bochs目录中应该有一个名为.bochsrc的文件,用一般的文件编译器打开它,你会发现其中有
    file=c.img
 
    这么一行,把其中的c.img改成boot.img,或是其他刚才你建成并且往里面复制过字节的那个文件的文件名,保存。在这个文件中你也许还会看到一些怪字符,忽略它们。
    再启动bochs,你就会看到由lesson5.asm编译出的程序可以运行了。稍许赏玩一会儿,然后你就可以真正踏上操作系统之路了。记住这个时刻吧,这样的开始,一生只有一次。


简介

 

    这份教程将告诉你如何开始着手写一个你自己的操作系统。它将向你展示一个应该如何开始做这些事情的方法。这份教程并不试图解释操作系统的每个方面,也不一定使用最快,最好的方法或者是技巧。所有的源代码都以可读性为中心,没有任何的优化。

    我假定这本书的读者有一个符合标准“PC architecture”,并且带有Intel x86(或其兼容)处理器的计算机。 后面的课程可能会要求有个IA-32 architecture (i386 to Pentium 4)的处理器。有些课程假定您使用FAT文件系统。有些课程需要使用MS-DOS/Windows的DEBUG工具,类似的工具也能够正常工作。我不打算深入讨论BIOS、汇编语言、以及INTEL或者是PC架构等等,因为在别的地方你可以找到关于这些的详细资料。在INTEL的网站上有在INTEL处理器上进行汇编语言编程的手册。

    我自己,也正在学着摆弄这些东西,所以这些课程会反映出我的一点经验,或者我学到的新东西。正因如此,课程的数目将不断增加,所以请不时来这里看看。如果您有关于未来课程的主意,请告诉我。另外,如果您有任何建议,问题或者是评论,请给我发Email。

声明:风险自负。我不对任何使用这里信息所导致的后果负责。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 联程航班第一程延误行李怎么办 联程航班未赶上第二程行李怎么办 高铁晚点赶不上下一趟动车怎么办? 动车晚点赶不上下一趟车怎么办 动车晚点导致没赶上下一趟怎么办 浙大三位一体选考分数报错了怎么办 报到证上时间到期了还没报到怎么办 不停的打嗝已经超过24小时怎么办 面对不给下属做主的领导怎么办 法院说退款受伤人去不了证明怎么办 e栈快递柜没收到短信怎么办 京东快递放门卫丢了怎么办 丰巢快递柜收不到取件码怎么办 丰巢快递柜手机号码填错了怎么办 e栈手机号换了取不出来怎么办 买高铁票起点一样终点不一样怎么办 定火车票把名字写错一个字怎么办 火车票坐完车票丢了报销怎么办 客户交给我的钱被骗了怎么办 要证明网络来源的可靠性该怎么办 魅族手机高德地图信号弱怎么办 t恤的印花粘粘的怎么办 从包图网下载的模板素材丢失怎么办 大屏导航的语音功能怎么办用 手机导航不走地图上面走时怎么办 行车撞到步行人死亡师机逃离怎么办 小天才平板电脑不显示了怎么办 高德地图导航不显示车速怎么办 桥梁梁片强度达不到设计要求怎么办 新车交车检验表客户没签字怎么办 中铁快运职工拒绝提货要怎么办 奇瑞a3暖风水箱爆了怎么办 别人挖鱼塘占了我的山土怎么办 自己的鱼塘让别人强行占住了怎么办 公路扩路占地占了鱼塘怎么办? 玉米皮编垫子编好后玉米绳怎么办 入户门门框未预留纱窗位怎么办 门和墙有2cm缝隙怎么办 支座预埋钢板忘记埋了怎么办 做完线雕一边紧一边松怎么办 卖家把没发货的填写了单号怎么办