30天自制操作系统-第1天

来源:互联网 发布:spring boot 端口 编辑:程序博客网 时间:2024/06/06 16:28

第1天 从计算机结构到汇编程序入门

最近突发奇想要自己写一个操作系统,因为课上学的东西实在是一知半解、含混不清,废话少说,放马过来。(第一次写有这么多图片的csdn博客,都是泪)。本篇主要通过编写编写一个最基本的操作系统,来了解开发操作系统的流程,并初步引入汇编程序。

首先,我们来谈一谈什么是操作系统。维基百科上给出了如下的定义,操作系统(英语:operatingsystem, 缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。说白了,操作系统就是一个用代码编写的软件,只不过比较复杂和庞大。现在常见的操作系统有Window 7/8/10、Linux、Mac OS X等,种类繁多,功能各异,但基本上都实现了一下几个功能:进程管理、内容管理、文件系统、用户界面等。下面笔记对学习过程中遇到的4个难点、难点做了总结:

1.开发操作系统的步骤

  1. 在windows系统上编写源代码(其他OS也可)
  2. 用C语言编译器编译源代码,生成机器语言文件(其他语言也可)
  3. 对机器语言文件进行加工,生成软盘映像文件
  4. 将映像文件写入软盘,做成含操作系统的启动盘
    简言之,就是想办法制作一张“含有操作系统的,能够自动启动”的磁盘。

2.用二进制编辑器编写一个最简单的操作系统

由于书中给出的网址已经失效,所以这里先给出《30天自制操作系统》源码 和 二进制编辑器BZ 。按书中所述,我们用二进制编辑器编写一个1.44MB(正好是一个3.5吋软盘的大小)的二进制文件,这个就是软盘映像文件。然后将其写入软盘,然后从软盘启动操作系统,就可以看到”hello,world”的界面了。如下图:
0
这里需要一提的是,大家尽量使用二进制编辑器从无开始一点点完成helloos.img文件的编写,而不要直接复制作者提供的源码。因为当你辛辛苦苦完成所有二进制代码的书写,反复检查最终成功看到开机画面的时候,你会有一种造物者般的成就感。而且,直接编写由0和1的串组成的二进制文件,能够让我们从本质上理解操作系统或者是一般的应用程序的本质,不管我们使用C/C++/Java,还是汇编语言,或是其他语言编写代码,最终要得到的都是二进制文件,只不过用汇编语言或者高级语言编写的程序需要一个转化成二进制文件的编译过程而已。

3.认识软盘

软盘(Floppy Disk)是个人电脑设备中,最早使用可移动存储媒体。第一个软盘是由IBM于1971年开发出的,直径8吋。随着硬件技术的发展与使用的需要,又派生出5.25吋的软盘,并广泛使用在Apple II、IBM PC及其他兼容电脑上。苹果1984年在Mac机开始采用3.5吋软盘,此时容量还不到1MB,后来,由日本索尼的3.5吋软盘容量有1.44MB所替换,这种软盘80至90年代盛行,直至2000年代以前,3.5吋软盘仍是电脑普及设备之一,后已渐被淘汰。

本书中所使用的软盘就是3.5吋容量为1.44Mb的软盘,这种软盘有80个磁道,每个磁道有18个扇区,两面都可以存储数据。我们能这样计算它的容量:80×18×2×512≈1440K≈1.44M,这样也许就明白了为什么我们前面制作的镜像文件helloos.img也是1.44M大小了。

4.从虚拟机/模拟器启动helloos操作系统

这本书的操作系统需要用软驱来装载,但是现在软盘已很难在市场上买到,所以我们用虚拟机或者模拟器来实现这本书里的操作系统。使用模拟器qemu启动操作系统的方法,书中已给出详细过程,这里以Mac OS X操作系统+Vmware Fusion虚拟机为例,进行演示从虚拟机启动操作系统,至于windows系统+Vmware Workstation虚拟机的演示,请参见windows系统Vmware Workstation虚拟机启动方法。

(1)新建一个虚拟机”helloOS”

点击“+”
1
选择“新建”,创建一个新的虚拟机。
2
选择“创建自定虚拟机”,点击“继续”
3
然后选择“其他”中的“其他”操作系统,点击“继续”
3
默认选择“新建虚拟磁盘”,点击“继续”
4
点击“完成”
5
修改存储名称为”helloOS.vmwarevm”(或者其他你认为合适的名称),点击“存储”,不直接打开虚拟机,接着配置软盘。
6
如果直接打开虚拟机,会出现下图所示的画面,提示”OperationgSystem not found”,从Vmware Fusion菜单选项中选择关机即可。
7
8

(2)为虚拟机”helloOS”,配置软盘

选中虚拟机”helloOS”,点击“设置”
9
选择“添加设备”
101
然后选择“软驱”,点击“添加”
11
选择所要安装的镜像文件,点击“打开”
12
选择“连接软驱”,勾选“只读”。
13
点击“显示全部”,回到设置主页面
14
选择“启动磁盘”
15
然后,选择“软盘”,点击“重新启动”
16
将会看到如下画面,大功告成。
17

0 0
原创粉丝点击