(系列视频实战可观看网易云课堂:

Linux kernel Hacker, 从零构建自己的内核

)

用java来做操作系统内核,太搞笑了吧。如果你这么想,同时嘴上发出呵呵一笑。那么我这篇文章的目的也算达到了,评判一篇文章好坏,不就在于它是否能让读者感觉到精神的愉悦吗。如果你笑了,那表明我写了一篇好文章。呵呵!

操作系统,是计算机科学中的皇冠,它作为一个平台,几乎集结了计算机科学里面的所有知识,如硬件,算法,架构,能够写出一个操作系统的人,无一不是行业里的翘楚或大神级人物,像Linux的创始人Torvalds,Android的创始人安迪·鲁宾,苹果早期电脑系统的开发者史蒂夫-沃兹尼亚克,哪一个不是牛逼的闪闪发光,让人膜拜。

我也想牛逼,我也想闪闪发光,所以我也要做一个操作系统,嘿嘿,你笑了吧,笑了的话,就表明我写了一篇好文章^_^!

说到这,我的能量槽已经蓄满,立马要放大招了,小心我的必杀技:

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 OperatingSystem {

private int[] imgContent = new int[]{

0xeb,0x4e,0x90,0x48,0x45,0x4c,0x4c,

0x4f,0x49,0x50,0x4c,0x00,0x02,0x01,

0x01,0x00,0x02,0xe0,0x00,0x40,0x0b,

0xf0,0x09,0x00,0x12,0x00,0x02,0x00,

0x00,0x00,0x00,0x00,0x40,0x0b,0x00

,0x00,0x00,0x00,0x29, 0xff,0xff,0xff,0xff,

0x48,0x45,0x4c,0x4c,0x4f,0x2d,0x4f,0x53,

0x20,0x20,0x20,0x46,0x41,0x54,

0x31,0x32, 0x20,0x20,0x20,0x00,0x00,0x00

,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,

0x00,0x00,0x8e,0xd0,0xbc,0x00,0x7c,0x8e,

0xd8,0x8e,0xc0,0xbe,0x74,0x7c,0x8a,0x04,0x83,

0xc6,0x01,0x3c,0x00,0x74,0x09,0xb4,0x0e,0xbb,

0x0f,0x00,0xcd,0x10,0xeb,0xee,0xf4,0xeb,0xfd };

private ArrayList imgByteToWrite = new ArrayList();

public OperatingSystem(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); } //0x1fe-0x1f: 0x55, 0xaa //0x200-0x203: f0 ff ff

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 { 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) {

OperatingSystem op = new OperatingSystem("hello, this is my first line of my operating system code"); op.makeFllopy();

}

}

上面的代码执行后,在工程目录下会生成一个system.img文件。接着利用virtualbox创建一个虚拟机,设置它为磁盘启动,并在配置中,将代码生成的system.img当做虚拟磁盘插入虚拟机:

Paste_Image.png

然后点击启动,结果如下:

Paste_Image.png

Java代码中,main函数里的字符串出现在了虚拟机屏幕里,然后虚拟机就卡死了。机器上电后就加载了我们的代码,这不就是一个操作系统的雏形吗。

真他妈搞笑,如果你心里这么想,那我必将这牛逼继续吹下去,因为我希望平淡的日子里,每天都能给你添加点愉快的笑料。哪天我把牛逼吹爆了,那我就成了大屎级人物^_^。

千里之行始于足下,这只是万里长征第一步,后面我还会不断的踏出第二第三步,敬请期待。

java 0xf0_用java做一个最小的操作系统内核相关推荐

  1. 用java做一个最小的操作系统内核2.

    上一节,我用java制作了一个虚拟软盘,当把软盘插入虚拟机,启动机器后,屏幕打印出java程序中设定的语句,然后卡死. 在java代码中,有一个二进制数组,imgContent, 它里面存储的实际上是 ...

  2. 构造一个简单的操作系统内核,详解进程切换细节

    (1)基本功能介绍 如题,本文将介绍如何构造一个简单的操作系统内核(基于内核版本3.9.4 ).它有以下功能: 1:进程的管理 2:进程的初始化 3 : 进程基于时间片的调度 (2)实操步骤 1 安装 ...

  3. java:用Swing做一个普通计算器

    用Swing做一个普通计算器 用swing做更加复杂的计算器 https://blog.csdn.net/dark_souls/article/details/89672759 由于上一篇文章用的一个 ...

  4. java实现通话_Java做一个最简单的通话程序

    Java做一个最简单的通话程序 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一.在Java ...

  5. 普歌-允异团队-【Java实例】一起做一个简单的王者荣耀RPG吧!从设计思路到代码实现一条龙!-登录与注册(IO流)/记录时间/属性面板呈现

    [Java实例]-王者荣耀RPG-从设计思路到代码实现 前言 一.案例分析 1. 设计理念 2. 功能设计 (1)登录与注册 (2)游戏时间记录 (3)选择游戏模式 (4)游戏地图 (5)生物属性 二 ...

  6. java工程师座右铭_做一个座右铭工具每天激励自己

    想法 新年第一篇文章,最近做英语相关的服务做多了,发现有人在做座右铭的东西,我也有了个想法就是想做一个可以随机一个座右铭的工具,每天激励自己,或者看看别人怎么激励自己,顺便学英语. 实施 技术选型就是 ...

  7. linux实验三:基于mykernel 2.0编写一个简单的操作系统内核

    实验内容 按照https://github.com/mengning/mykernel的说明配置mykernel 2.0,熟悉Linux内核的编译:基于mykernel 2.0编写一个操作系统内核,参 ...

  8. 怎样向一个外行人解释操作系统内核?+一篇有关将黑客帝国比作操作系统的旧文

    原文链接:http://ivoras.net/blog/tree/2014/Jul-how-do-you-explain-an-os-kernel-to-a-layperson-an-old-text ...

  9. 一个微型的操作系统内核 MiniOS

    MiniOS 是我在研究生导师的指导下参与开发的一个微型操作系统内核,接触 MiniOS 的开发有一段时间了,对其已经比较熟悉,便着手为 MiniOS 写了一个简要的介绍,下面是介绍内容(同时也是 M ...

最新文章

  1. 鸿蒙系统能内测吗,鸿蒙系统内测用户:使用体验已经超越ios
  2. jquery三级联动模糊查询_jquery三级联动
  3. 跨平台移动开发_PhoneGap 使用Accelerometer 加速器
  4. laravel-admin form中的switch控件 不改变状态提交后值为0
  5. RankLib参数翻译
  6. 人工智能重点领域有哪些呢?
  7. django相关操作
  8. 天线罩结构的基础知识
  9. MATLAB R2021b for Mac 版 支持M1 MacOS12,超级详细步骤。(内附安装包网盘链接)
  10. Dedecms 前端RCE分析
  11. 利用Python实现自动投票以及自动爬虫IP代理
  12. Unity3d模型,加入Animator后,播放动画,物体回归原位处理
  13. 光盘或者U盘安装linux操作系统
  14. 用c语言对文件进行加密
  15. 嵌入式系统概述1-嵌入式系统定义、特点和发展历程
  16. 【C++】【数据结构】顺序栈的基本操作(初始化、入栈、出栈、取栈顶元素、遍历输出栈)的算法实现附全代码
  17. 蓝桥杯C/C++省赛:振兴中华
  18. 智能信息处理大学生科技实践与创新(3I)工作室
  19. Oracle同义词创建及其作用
  20. 五、三层交换机配置服务器

热门文章

  1. 《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动
  2. CentOS6.6部署VNC服务端
  3. VideoMemory, SystemMemory And AGPMemory
  4. .NET与COM互操作系列
  5. deepin系统15.6版本安装执行那个exe文件_深度系统(Deepin Linux)U盘安装教程
  6. Python基础篇:Python 程序流程控制,让你的代码有理有据
  7. 两周从爬虫小白变大神,看完你就知道我不是标题党了【五万字教程,建议收藏】
  8. 微信缓存dat怎么转图片_图片怎么转PDF?这个方法完美解决!
  9. 本地html如何导出pdf,html表格以pdf格式导出到本地
  10. QT使用VLD检测内存泄漏