博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Write Your Own Operating System Tutorial(中文版) - 简介
阅读量:2234 次
发布时间:2019-05-09

本文共 2515 字,大约阅读时间需要 8 分钟。

操作系统实作入门

首先说说我们用到的工具。
     既然要写操作系统,必不可少的就是需要汇编语言的编译器。如果你一时找不到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。
声明:风险自负。我不对任何使用这里信息所导致的后果负责。

转载地址:http://ycibb.baihongyu.com/

你可能感兴趣的文章
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
决策树的python实现
查看>>
了解 Sklearn 的数据集
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>
什么是 Dropout
查看>>