• 大小: 112KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签: 操作系统  源代码  

资源简介

里面有一个简单的操作系统,还有操作系统生成的源代码,代码附有注释。

资源截图

代码片段和文件信息



import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;


public class HelloWorldOS {
/*
 * 这段二进制数据将是我们HelloWorld OS 的内核,它的作用是让BIOS将其加载到地址0x8000然后调用BIOS中断在屏幕上打印出一行字符串
 */
    private int[] imgContent = new int[]{
        0xeb0x4e0x900x480x450x4c0x4c0x4f0x490x500x4c0x000x020x010x010x000x020xe0
        0x000x400x0b0xf00x090x000x120x000x020x000x000x000x000x000x400x0b0x000x000x000x000x29
        0xff0xff0xff0xff0x480x450x4c0x4c0x4f0x2d0x4f0x530x200x200x200x460x410x540x310x32
        0x200x200x200x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000xb80x000x000x8e
        0xd00xbc0x000x7c0x8e0xd80x8e0xc00xbe0x740x7c0x8a
        0x040x830xc60x010x3c0x000x740x090xb40x0e0xbb0x0f0x000xcd0x100xeb0xee0xf40xeb0xfd
    };

    private ArrayList imgByteToWrite = new ArrayList();



    public HelloWorldOS(String s) {
        for (int i = 0; i < imgContent.length; i++) {
            imgByteToWrite.add(imgContent[i]);
        }

        imgByteToWrite.add(0x0a);
        imgByteToWrite.add(0x0a);
        for (int j = 0; j < s.length(); j++) {
            imgByteToWrite.add((int)s.charAt(j));
        }
        imgByteToWrite.add(0x0a);

        int len = 0x1fe;
        int curSize = imgByteToWrite.size();
        for (int k = 0; k < len - curSize; k++) {
            imgByteToWrite.add(0);
        }

        /*
         * 要想让机器将软盘的头512字节当做操作系统的内核加载到内存,头512字节的最后两个字节必须是55aa
         */
        imgByteToWrite.add(0x55);
        imgByteToWrite.add(0xaa);
        imgByteToWrite.add(0xf0);
        imgByteToWrite.add(0xff);
        imgByteToWrite.add(0xff);

        len = 0x168000; //
        curSize = imgByteToWrite.size();
        for (int l = 0; l < len - curSize; l++) {
            imgByteToWrite.add(0);
        }

    }

    public void makeFllopy()   {
        try {
         /*
          * 在磁盘上创建一个1474560字节的二进制文件,将imgContent的内容写入该文件的头512字节,这个二进制文件将作为一个1.5M的虚拟软盘用于当做
          * 虚拟机的启动软盘
          */
            DataOutputStream out = new DataOutputStream(new FileOutputStream(“system.img“));
            for (int i = 0; i < imgByteToWrite.size(); i++) {
                out.writeByte(imgByteToWrite.get(i).byteValue());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
     HelloWorldOS op = new HelloWorldOS(“hello this is my first line of my operating system code“);
        op.makeFllopy();
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6148  2016-08-05 16:51  操作系统内附源代码\.DS_Store

     文件     116602  2016-08-05 16:27  操作系统内附源代码\Be a Hacker.docx

     文件        295  2016-08-05 16:07  操作系统内附源代码\HelloWorldOS\.classpath

     文件        371  2016-08-05 16:07  操作系统内附源代码\HelloWorldOS\.project

     文件        587  2016-08-05 16:07  操作系统内附源代码\HelloWorldOS\.settings\org.eclipse.jdt.core.prefs

     文件       2548  2018-01-03 23:20  操作系统内附源代码\HelloWorldOS\bin\HelloWorldOS.class

     文件       3092  2016-08-05 16:19  操作系统内附源代码\HelloWorldOS\src\HelloWorldOS.java

     文件    1474560  2018-01-03 23:24  操作系统内附源代码\HelloWorldOS\system.img

     目录          0  2016-08-05 16:07  操作系统内附源代码\HelloWorldOS\.settings

     目录          0  2018-01-03 23:20  操作系统内附源代码\HelloWorldOS\bin

     目录          0  2016-08-05 16:08  操作系统内附源代码\HelloWorldOS\src

     目录          0  2018-01-04 14:10  操作系统内附源代码\HelloWorldOS

     目录          0  2016-08-05 16:27  操作系统内附源代码

----------- ---------  ---------- -----  ----

              1604203                    13


评论

共有 条评论