版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Zllvincent/article/details/83245487
前言
操作系统作为一个平台,几乎集结了计算机科学里面的所有知识,如硬件,算法,架构,能够写出一个操作系统的人,无一不是行业里的大牛,像神一样的存在。像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℃ 创作更优秀的博文