zoukankan      html  css  js  c++  java
  • 自己编写操作系统1--概述

    打算做这件事很久了,一直拖到今天才开工,事情真的多,又到了过年期间,不得不做一些生活琐事,唉,比较难集中精力了,只有深夜才有思路迸发,今天中午整理一下。

    所谓的编写操作系统,就是想办法制作一张“含有操作系统的,能够自动启动的磁盘”。

    1.在Windows(或其他)操作系统上编写源代码
    2.用C语言编译器编译源代码,生成机器语言文件
    3.对机器语言文件进行加工,生成软盘映像文件
    4.将映像文件写入磁盘,作成含操作系统的启动盘

    以前的软盘 的 总 容量 是 1440KB, 所以 作为 备份 数据 的 映像 文件 也 恰好 是 1440KB。

    实现上自底向上,底层采用NASM汇编+C实现,初期在VM上调试,后期以虚拟软盘镜像的形式部署到机器上

    我们现在在使用16进制手动编写一个软盘格式的文件。一个软盘的大小就是1474560字节,这也是为什么我们操作系统的大小要是1474560字节。BIOS读软盘第一个扇区时,磁盘内不同地方的内容有不同的含义,详细含义见汇编代码注释,在这里引用github上面的汇编注释,
    点我查看
    其大概意思为,软盘的格式为FAT12如果将计算机的开机设置为从软盘启动,计算机开机会驱动软盘的磁头0读其0柱面1扇区的内容到内存0x7c00(人为设定)~ 0x7dff处,并检查扇区最后两2字节内容,如果为55AAH,则从0x7c00开始执行这段程序。
    如果将一个好的软盘的磁头0对应的0柱面1扇区内含有一段(让显存)显示“Hello world”的机器指令,且将扇区最后2个字节的内容为55AAH。设置计算机开机时从软盘启动后就能够显示“Hello World”。
    这就是这一段代码的基本原理.。

  • 相关阅读:
    Chapter 12 homework
    copy construction note
    Chapter 11 homework
    数组排序最大元素
    temporary Object and destructor
    strcpy() 函数注意的地方
    结对项目第二次作业
    结队项目——第一次作业
    软件工程实践2017第二次作业
    软件工程实践2017第一次作业
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832220.html
Copyright © 2011-2022 走看看