自制操作系统---eposide 3 (特别篇)

特别篇:
这篇文章主要是进行一些答疑解惑的,为下一步进行操作系统开发奠定坚实基础。
BIOS:前面一直说BIOS,BIOS到底是个什么东西呢?BIOS的全称为 Basic Input and Output System。听名字就懂了,基本输入输出系统,它保存在主板的ROM里面,一般是不可以更改的,但是有的时候,我们启动电脑的时候,是可以进行一些修改的,我觉得可能是保存在BIOS的其他存储芯片里面的,不过也有可能整个BIOS是写在一个存储芯片里面,现在芯片都这么便宜,几块钱能买好几兆的呢,所以至于它是只读还是读写,要看制造主板厂家的设计了。
BIOS启动的设置是可以在启动的开始后按DEL来进入的,这点估计好多人都是知道的,有些BIOS还为此做了花花绿绿的各种选项,当保存退出后,下次启动BIOS,它就会按照设置好的项目进行系统的启动,比如说,你设置了各种硬件的启动顺序,那么它在启动的时候,就按照这个顺序启动,其实这没什么难的,它已经把扫描各种硬件的函数写好了,然后在启动顺序里面,只要修改函数的调用先后就可以了,可以想象的到的。
那么BIOS是怎样启动的呢?前面已经说了,在内存的0x7C00之前,都是BIOS的位置,BIOS会在电脑启动的时候,通过CPU的读写指令,将自己的ROM中的程序,拷贝到内存中去,当然要先检测CPU是否存在, 如果不存在,这一切都是白扯,然后BIOS会按照自己的执行顺序,调用这些在内存中的程序,完成启动。
在启动完成BIOS的最后阶段,它是会去检测用户按了哪些按键的,比如DEL,由于键盘的驱动已经在内存中了,这时候,如果用户按了某个按键,是会触发BIOS的中断项目的,如果触发中断,BIOS就回去看看用户按了哪个键,从而做出反应,有些主板厂家的DEL键是这个意思,有些是那个意思,就是因为这些按键对应的动作不一样,所以结果是不一样的。
在BIOS启动的最后阶段,如果用户不进行任何按键,那么它就去按照用户设定的启动顺序,去扫描软盘、光盘、硬盘、甚至是U盘,来尝试加载里面保存的系统,当然它要做一些判断的,判断的原则就是:这个盘的第0个柱面的第0个扇区里面的东西,这个扇区有多大呢?512个字节,也就是说,512个8位,这些东西要统统加载大内存中去,然后才能做出分析,如果这512个字节的最后两位为 0x55 0xaa 的话, 那么恭喜你,你进入了男生权利,如果不是呢?那么就下一位,直到最后,如果没有找到合适的启动盘,那么就失败退场,你会看到一行英文字母显示:没有操作系统盘之类的。
那么进入男生权利后呢?当然要进行里面程序的执行了,如果你的这个扇区里面有操作系统,但是可惜的是,最后两位不是 0x55 0xaa, 那么可惜不是你,她不会把系统交接给你,知道一见钟情的重要性了吧,你即使有比Windows还要牛逼1w倍的操作系统在里面,但是如果你第一个扇区不合格,对不起,拜拜。
进入男生权利后呢?别忘了你刚刚在内存中加载的磁盘只有512个字节,这可是远远比一个正常的操作系统要小很多的地方啊,所以下面引入另外一个话题:

IPL:initial program loader 的缩写,通常叫做启动程序加载器,如果你的程序的第512个字节最后两位是 0x55 0xaa 的话,那么你这个程序基本上就是一个 IPL了,是不是很简单啊。对的,就是这么简单,但是不简单的事情是,你需要在这512个字节中做很多操作,因为你将要面对的是,这个扇区的下一个扇区,下下个扇区,他们都是你的兄弟不能放下不管吧,你要做很多事情,不能光想着自己,哦对了,你这个扇区如果装有IPL的话,就叫做启动区了,英文是boot sector , 启动区的意思,启动区装有启动程序,专门用来启动整个系统的,当然如果你的系统写的小用不着后面的扇区里面的程序,那你完全可以不加载后面的东西,不过一般操作系统没有那么小,512字节,如果是汉字的话,只能写256个汉字,如果是程序呢?更少,那就是说,你的任务很艰巨,你要将后面的兄弟带起来。
内存:如果去掉内存,计算机基本是运行不起来的,和CPU是一样的,内存为何如此重要,从操作系统的启动过程其实就可以看到的,如果没有内存,BIOS中的程序是没有地方加载的,也就更无法识别鼠标键盘显示器等外部设备了,所以内存很重要,我们现在使用的内存都达到了上G的大小,但是其实BIOS需要的内存非常小,只有 0x7C00 的大小,也就是 31744 个字节,也就是31k的大小。
键盘鼠标硬件:在BIOS都加在好的时候,它其实是会去检测键盘鼠标的,这是怎样检测的呢?说来其实不难,都知道高电平低电平把,当CPU要检测键盘的时候,CPU会调用BIOS中某个中断,当调用某个中断的时候,BIOS就会启动检测那个硬件的电路,将这些信息反馈会CPU,CPU会调用汇编里面什么JNE之类的指令,发现不存在设备,就会报错。

PS

在网上查了一下,好多刷BIOS显卡驱动的, 说什么好呢?小学生又来捣乱了?这分明是胡扯呢,BIOS的意思是什么?基本输入输出,它就是在系统引导的时候,初始化显卡用的,刷得再好,在系统启动的时候,BIOS加载的显卡驱动已经用不到了,交付给操作系统了,所以想要发挥显卡的高级功能,装个显卡驱动岂不是更好吗?网上说刷BIOS的人,都是根本不懂电脑的小白在瞎搞。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值