【12】操作系统编写二 の pc启动过程

一、16位内存分配图

  • |B8000-BFFFFh| 彩色字符模式视频缓冲区

每个字符在视频缓冲区中占用两个字节 {ASCII值 ,颜色值}

彩色显示卡,一共有16KB的字符缓冲区,字符模式下:25行,每行80个字  25*80*2= 4000B

在视频缓冲区中将没个4096b(4k)称为一个“页”,通常情况下显示第0页的内容

 

  • 在屏幕显示字符的原理:

RGB(REDGREENBLUE三原色,任意组合就可以产生所以颜色

组合颜色  前景(4bit) + 背景(4bit)

  • 彩色文本属性字节

7

6

5

4

3

2

1

0

属性

前景闪烁BL(Blink)

背景R

背景G

背景B

前景亮度

(高亮)

背景G

背景R

背景B

 

二、pc启动过程

  1. CPU加电初始化。多处理器系统,每个CPU都要自身初始化,  一般一个为主CPU,另一个为辅CPU,主CPU执行引导过程的剩余工作,随后内核才会激活辅CPU,   CPU首先设置CS:IP=FFFF:0000,指向的是BIOS所在的内存。(设置cs:ip = FFFF:0000  就是重启的过程)
  2. CPU跳到BIOS指定地址执行BIOS的加电自检POST(Power On Self Test)
  3. MBR(Master Boot Record引导程序)加载到指定内存,加载检查扇区末尾的是否为0xAA55,如果不是则尝试寻找其他引导介质

ps:当CPU Reset后,根据X86架构的特性,(386以后)CPU会从4G地址的最顶端FFFFFFF0处获得第一条指令来执行,而这一地址被定位在BIOS里。由于FFFFFFF0到FFFFFFFF只有短短的16字节,根本不可能放下一段程序,所以这里会放一条跳转(Jump)指令让BIOS跳到更低的地址去执行。

 

    CPU RESET   ->  BIOS POST(BIOS调用中断程序去加载对应的扇区)-> 加载MBR   ->  加载操作系统内核

 

 

posted @ 2013-01-17 09:35  xiaolongxia  阅读(192)  评论(0)    收藏  举报