01.C 语言实现系统输出

前言

操作系统作为一个平台,几乎集结了计算机科学里面的所有知识,如硬件,算法,架构,能够写出一个操作系统的人,无一不是行业里的大牛,像神一样的存在。像Linux的创始人Torvalds,Android的创始人安迪·鲁宾,苹果早期电脑系统的开发者史蒂夫-沃兹尼亚克。那个不是自带光环的人物。一个真正的软件开发者都有一个黑客的情节。

C语言是系统级的语言。Linux、Windows、Mac OS 底层没有不C语言来开发。

#include<stdio.h>
#include<stdlib.h>


void makeFloppy(char *tip){
    char img[] = {
        0xb8,0x00,0x00,0x8e,0xd8,0x8e,0xc0,0xbe,0x27,0x7c,
        0xe8,0x03,0x00,0xe9,0x14,0x00,0x8a,0x04,0x3c,0x00,
        0x74,0x0e,0x81,0xc6,0x01,0x00,0xb4,0x0e,0xbb,0x0f,
        0x00,0xcd,0x10,0xeb,0xed,0xc3,0xf4,0xeb,0xfd
    };
    char content[512];
    memset(content,0,512);
    int len = sizeof(img);
    for(int i=0;i<len;i++){
        content[i] = img[i];
    }
    
    char *p = tip;
    int index = len;
    content[index++] = 0x0a;
    for(int i=0;*(p+i)!='\0';i++){
        content[index++] = *(p+i);
    }
    
    //启动盘前512字节中的 510,511 位置必须是0x55,0xaa 作为系统启动标志
    content[510] = 0x55;
    content[511] = 0xaa;
    
    FILE *fp = fopen("system.img","w");
    if(fp==NULL){
        printf("fopen error\n");
        exit(1);
    }
    
    //3.5 英寸软盘 80个磁道、18个扇区、两个盘面,每个扇区大小为512字节,
    //计算机处理软盘数据时都是以512字节为最小单位,总容量为2*80*18*512字节
    for(int i=0;i<2*80*18;i++){
        fwrite(content,512,1,fp);
        memset(content,0,512);
    }
    fclose(fp);
    printf("---------success\n");
}


int main(int argc, const char * argv[]) {
    
    
    makeFloppy("this is my first operation system\n");
    
    return 0;
}

1.使用gcc 编译器编译该C程序代码,将得到system.img 软盘文件,我们使用VirtualBox创建一个虚拟机并加载该软盘文件
在这里插入图片描述

当我们创建了一个虚拟机后可能如上图所示,当点击1 是将弹出2所示弹框,我们需要选择弹框中的 ‘添加软盘控制器’ 来创建软盘控制器,上面的控制器即可删除,结果如下图
在这里插入图片描述

点击创建的控制器右侧的添加按钮–> 选择磁盘 添加编译生成的system.img 文件
在这里插入图片描述

添加system.img 成功后如下图
在这里插入图片描述

点击ok 保存后运行
在这里插入图片描述

此时将输出C语言代码中的 “this is my first operation system\n” 字符串,我们的系统制作成功,千里之行始于足下,操作系统的开始就这么愉快的结束了!

如果对您有帮助,点个赞支持 奶茶37.2℃ 创作更优秀的博文

发布了122 篇原创文章 · 获赞 32 · 访问量 82万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览