笔记关于自制简单的操作系统 第一弹

我读的这本书是川合秀实所著的《30天自制操作系统》,古老,啰嗦的从零读物。但跟着作者来,一定可以写出一个非常简单的操作系统这是不会错的。

我要现在就准备写一个系统,没错,写一个系统就是可以这么简单,马上就能实现。我这是在写笔记吗?怎么这么多废话。。。。

软盘的知识

1. 软盘的大小

168000H Byte = 1474560 Byte = 1440*1024 Byte = 1440 KB
我们先从这个公式出发,这个等式是什么意思呢?这是个好问题。古老的软盘中只有区区1440KB,2M不到。不过它足以容纳一个最简单的操作系统。

2. 软盘和扇区

软盘的第一个扇区就是启动区。计算机读写软盘的时候,并不是一个字节一个字节的读写,而是以512字节一个单位读写。因此,软盘的512个字节就是一个扇区【注1】。
一张软盘一共有1474560字节,除以512得2880,也就是说,一张软盘共有2880个扇区。

3. 扇区和启动区

那么为什么第一个扇区称为启动区呢?那是因为计算机首先从最初一个扇区开始读软盘,然后去检查这个扇区最后两个字节的内容。
如果这最后两个字节不是55 AA,计算机会认为这张盘上没有所需的启动程序,(这都是硬件设计者的小把戏!)就会爆一个不能启动的错误。否则,计算机就会准备好,乖乖执行启动程序。

4. 启动程序加载器(IPL)

initial program loader的缩写,启动区只有区区512字节,装一个helloos的系统还可以,但是你一定不会满足于此。
那面对大型操作系统,我们的策略是什么呢?
就是IPL !几乎所有的操作系统,都是把加载操作系统本身的程序放在启动区里。有鉴于此,有时候启动区也可以称为IPL。
从现在看来,我们将要写的操作系统本质上只是一个启动程序加载器。不过不要觉得丢人,其实这是一件一举两得的好事情。鉴于这个事实,必须要注意启动程序加载器的名字必须是8字节,如果不到8字节的话,要在后面补上空格。

启动(boot)

链接,这篇文章详细介绍了计算机的启动,写的非常好,有点长
作为自己的笔记,我就再粗糙的总结一下大体的步骤

a. 开机自检

计算机通电,BIOS基本输入输出系统执行,这是一个作为硬件的存在,他做的第一件事情是开机自检(POST也就是Power-On Self-Test)

b. 启动顺序(boot sequence)

顺利通过开机自检之后,BIOS根据启动顺序将控制权转交给第一位的存储设备,重装过操作系统的人肯定很熟悉这一步。

c.主引导记录(MBR也就是Master boot record)

顺位第一的存储设备拿到控制权之后立马执行主引导记录(1~446调用操作系统的机器码,447~510分区表,511~512主引导记录签名)

d. 分区和激活分区

主引导记录主要是用来寻找操作系统的,他会根据一张叫做分区表的地图在硬盘地址空间中寻找操作系统。这张地图的功能超乎你的想象,很棒!由于每个分区都可能存着一个操作系统,所以需要查看一下分区表(他用四项代表着最多四个主分区)如果在分区表中某个主分区的第一个字节为0x80,那这个分区就是激活分区

e. 硬盘启动

至此,控制权就要转交给激活分区了。操作系统的真身即将出场!
再呆板的重述一下链接里面的内容吧,其实之前主引导记录在转交控制权的时候会遇到三种情况
情况一、卷引导记录
事情和d里面交代的一样简单,激活分区拿到控制权,接着就读取自己的第一个扇区,叫做卷引导记录(VBR也就是Volume boot record),卷引导记录告诉计算机操作系统在这个分区的哪个位置(好熟悉的感觉啊。。。),于是操作系统就可以加载并执行了。
情况二、扩展分区和逻辑分区
试想一下现在你有一个四个插口的插板和一堆两个插口的插板,利用这个四个插口的插座让尽可能多的插口通上电会发生什么。
情况三、启动管理器
还记得学校的机房吗,打开电脑的第一件事就是提示你选择一个操作系统,什么windows,linux 随便挑。在这种情况下,计算机读取主引导记录的前446个字节的机器码之后,就不将控制权转交给某一个分区了,而是运行事先安装好的“启动管理器”(boot loader)由用户决定启动哪一个操作系统。

这篇就先这样吧,打字打的慢真是捉急啊!!!书上有关如何快速地制作一个操做系统的内容我就不细说了。链接,详情看这里,一个包含动手实践的博客,有资源哦!!

【注1】现在的扇区标准已经是4K了,毕竟从这本书的第一版到现在都过去11年了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值