zoukankan      html  css  js  c++  java
  • BIOS之于系统启动

    BIOS之于操作系统


    操作系统从开机通电到系统启动成功(执行main函数)分为3个步骤

    1. 启动BIOS,准备实模式下中断向量表和中断服务程序
    2. 从启动盘加载操作系统程序(包括boot镜像和root文件系统镜像)到内存。加载程序是借助第一步中的中断服务程序完成
    3. 为执行32位保护模式的main函数做过渡工作

    启动BIOS,准备实模式下中断向量表和中断服务程序


    计算机的运行离不开程序,在加电的一瞬间,计算机的内存中,准确的说是RAM中,空空如也,什么程序也没有.启动盘(软盘/磁盘)中虽然有操作系统,但是CPU的逻辑电路被设计为只能运行内存中的程序,没有能力直接从软盘中运行操作系统.操作系统必须要加载到内存中,CPU方才能够运行(才能启动操作系统).

    注意:该博文假定所用计算机是基于IA-32系列CPU,安装了标准的单色显示器,标准键盘,一个软驱,一块硬盘,16M内存,在内存中开辟了2MB内存为虚拟盘,并在BIOS中设置软驱为启动设备

    BIOS的启动原理

    BIOS也是一个程序,BIOS要能够加载操作系统,首先BIOS必须先运行起来.我们运行程序的一般经验都是,通过双击或者命令行触发.显然需要解决BIOS启动的问题

    从体系角度来看,既然BIOS无法靠软件启动,则需要借助硬件了.

    从硬件角度看,Intel 80x86系列的CPU可以分别在16位实模式和32位保护模式下运行.为了兼容,也为了解决最开始的启动问题,需要进行以下几点:

    • Intel将80x86系列的CPU,包括最新型号的CPU的硬件都设计为加电即进入16位实模式状态运行.
    • cpu硬件逻辑设计为加电瞬间强行将cs的值设置为0xF000,IP设置为0xFFF0,这样CS:IP就指向了0xFFFF0.该位置即内存中ROM bios所在区域0xFFFF0--0xFFFFF.

    通过以上分析:可知BIOS程序需要位于0xFFFF0--0xFFFFF内存段中

    BIOS在内存中加载中断向量表和中断服务程序

    BIOS程序被固化在计算机主机板上的一块很小的ROM芯片里。我们选用的BIOS程序只有8 KB,所占地址段为0xFE000~0xFFFFF,如图1-1所示。现在CS:IP已经指向0xFFFF0这个位置了,这意味着BIOS开始启动了。随着BIOS程序的执行,屏幕上会显示显卡的信息、内存的信息……说明BIOS程序在检测显卡、内存……这期间,有一项对启动(boot)操作系统至关重要的工作,那就是BIOS在内存中建立中断向量表和中断服务程序。

  • 相关阅读:
    ORACLE复制数据库【weber出品】
    AJAX和jquery简单试用
    git 基本命令大全
    git使用技巧
    listagg( ) within group ( order by ) 与 wm_concat
    oracle 数据库查询多条数据的一列值
    Fstdfs +nginx 安装详细步骤
    解决Oracle用户被锁定的方法
    解决tomcat内存溢出
    PowerDesigner将PDM导出生成WORD文档
  • 原文地址:https://www.cnblogs.com/penghuster/p/7272940.html
Copyright © 2011-2022 走看看