博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机的启动过程 <orang's 一个操作系统的实现>
阅读量:5260 次
发布时间:2019-06-14

本文共 967 字,大约阅读时间需要 3 分钟。

  在我们按下电脑电源键后,发生了什么?为什么过了一会儿电脑就出现漂亮的界面,然后我们就可以操作了呢。其实我们按下电源键之后无非就是CPU上电,然后取指令执行,那么CPU刚开始上电在哪里取指令执行呢?首先X86架构CPU在上电时会从FFFF:0000地址处取得第一条指令并执行,这个地址是实模式下的地址,它会被转换成0xffff0,这个地址就是CPU引脚中的A0-A19,好了,CPU地址引脚输出0xffff0,但是此时内存还没有被初始化,这个地方有数据吗?其实这个地址被BIOS所映射,也就是说这个地址处放的是BIOS的代码,这里是一条跳转指令,跳转到BIOS程序处并执行,然后BIOS程序会检测一系列的硬件,如果硬件没有问题了,那么BIOS会根据用户设置的启动顺序(软盘,硬盘,光驱等)来引导操作系统,引导又是什么意思呢?其实很简单,就是将相应的设备中前512个字节的内容加载到内存0x7c00处,然后BIOS会跳转到0x7c00处执行操作系统自己的引导代码。这样,CPU的执行程序的过程就是:开机跳转->BIOS->操作系统。

  计算机的启动过程我们知道了,假设我们要用U盘自己制作一个启动盘,我们就可以这样做:先写好512字节的引导程序,然后编译成CPU可执行的二进制文件,然后将这512字节的引导代码写入U盘的前512字节,然后将BIOS设置成U盘启动,这样电脑在开机就会执行我们的引导代码,然后控制权就在我们手上了,我们可以自己写一个操作系统,激动吧,本人将会写一篇《orang's一个操作系统实现读书笔记》,在这里要感谢作者于渊,读了这本书实在是受益匪浅,本来我看了X86保护模式之后想看linux0.11内核,但是发现太难了,看了前面3个引导文件(bootsect.s,setup.s,head.s)后根本找不到方向,在网上间看见了这本书,下载pdf看了一下,发现正适合我目前的水平,这本书看完了,对操作系统不仅有整体结构认识,在细节上也是有很深的了解。作者书上前面的汇编用的是nasm编译器编译,我用的是as和ld编译链接,因为对at&t汇编语法比较熟悉,其实两种都是一样的,只是写发法上有些区别,在这里再次感谢作者。

转载于:https://www.cnblogs.com/chdl/p/6600581.html

你可能感兴趣的文章
现代程序设计 homework-05
查看>>
IP数据报的格式
查看>>
寻找最大的K个数
查看>>
jQuery源码分析-each函数 function
查看>>
Node.js后端框架设计构想
查看>>
扩展域并查集学习笔记
查看>>
与LCD_BPP相关的函数
查看>>
UVA10562 数据结构题目
查看>>
对html第一次尝试
查看>>
scala中的下划线代替实参变量 ==> 分析一个乍看不知道在嘎哈的函数
查看>>
使用【数据牛刀】轻松驾驭日增长100万级的大流水数据表
查看>>
MySQL中将数据库表名修改成大写的存储过程
查看>>
CSS 火焰?不在话下
查看>>
Bootstrap栅栏布局里col-xs-*、col-sm-*、col-md-*、col-lg-*之间的区别及使用方法
查看>>
MVVM、MVVMLight、MVVMLight Toolkit之我见
查看>>
.NET读取json数据并绑定到对象
查看>>
prism behavior图示
查看>>
SQL SERVER中的OLEDB等待事件
查看>>
微信小程序把玩(十九)radio组件
查看>>
VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
查看>>