BIOS之于系统启动
#BIOS之于操作系统
操作系统从开机通电到系统启动成功(执行main函数)分为3个步骤
- 启动BIOS,准备实模式下中断向量表和中断服务程序
- 从启动盘加载操作系统程序(包括boot镜像和root文件系统镜像)到内存。加载程序是借助第一步中的中断服务程序完成
- 为执行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在内存中建立中断向量表和中断服务程序。

BIOS之于系统启动的更多相关文章
- BIOS设置
主界面: 标准BLOS设置: 高级BLOS设置: 1.设置从光盘驱动 电脑启动时默认是从硬盘启动,但是在安装操作系统时或者是使用某些特殊软件时,可能需要从光盘.软盘或者U盘启动,这时就需要设置第一启 ...
- U盘安装RedHat 5.3
转载自http://www.cnblogs.com/totozlj/archive/2012/06/03/2532757.html 1.下载rhel-5.3-server-i386-dvd.iso文件 ...
- window7环境下VMWare自定义安装Linux虚拟机完全教程
1.首先准备好以下工具和安装包,最好到官网下载: VMWare 8.x,注意版本不易过高,因为很多时候会出现和Linux镜像不兼容的情况,下载地址:http://www.vmware.com/cn.h ...
- MySQL优化小结
数据库的配置是基础.SQL优化最重要(贯穿始终,每日必做),由图可知,越往上优化的面越小,最基本的SQL优化是最重要的,往上各个参数也没太多调的,也不可能说调一个innodb参数性能就会好多少,而动不 ...
- 剖析ironic
关键技术 在安装操作系统时需要存储介质来存储系统镜像.需要控制物理机开关机,在网络部署环境中还需要预启动环境. PXE (预启动环境) IPMI(电源管理) iSCSI(存储) 什么是PXE PXE( ...
- U盘安装RedHat linux 5.3
U盘安装RedHat linux 5.3 1.下载rhel-5.3-server-i386-dvd.iso文件: 2.下载绿色版UltraISO软件: 3.将rhel-5.3-server-i386- ...
- virtualbox 安装虚拟机(centos7) 并映射本地文件夹至虚拟机(增强工具)
一.安装环境 操作系统:windows10 virtualbox: 5.2.20 (在安装virtualbox 时可能需要 进入BIOS 设置虚拟化系统启动) centos7:http://mirro ...
- Deepin 系统安装并配置PHP开发环境
Deepin是由武汉深之度科技有限公司开发的Linux发行版.Deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌面环境(DDE),以及音乐播放器,视频播放器,软件中心等一 ...
- Ubuntu18.04 + Windows10 双系统安装
此处忽略Windows10安装!!! 准备 安装环境 OS:Windows10 CPU:Intel(R) Core(TM) i5-10600KF CPU @ 4.10GHz 4.10 GHz GPU: ...
随机推荐
- Linux系列之压缩与解压
1.压缩技术 1.常用命令实例 1.zip格式的压缩与解压缩 zip是压缩指令,unzip是解压指令.zip指令既可以压缩文件,也可以压缩目录.压缩会自动保留源文件,解压会自动保留压缩文件. zip ...
- php 处理图片 将图片转成base64
1.直接将图片路径传入下面该方法就可以了//将图片转成base64 public function imgToBase64($img_file){ $img_base64 = ''; if ($img ...
- redis 入门教程
https://edu.aliyun.com/course/22/lesson/list?spm=5176.8252056.759075.5.Bbrpyz
- 常用javascript对象——Date对象
创建 Date 对象的语法: new Date(); 1:Date 对象属性 <!DOCTYPE html> <html> <head> <meta char ...
- AngularJS-02 数据绑定和表达式
AngularJS----数据绑定和表达式 1.表达式是AngularJS模板引擎的重要内容,也是视图View的必要组成部分,用来将模型动态转换为可视DOM元素或者其内容. 表达式的形式: 1)常量: ...
- 通过hadoop上的hive完成WordCount
1.启动hadoop 打开所有命令:start-all.sh 2.Hdfs上创建文件夹 创建名为PGOne到user/hadoop 3.上传文件至hdfs 创建和修改508.txt文件,里面尽量多写一 ...
- 行级安全(Row
通过授予和拒绝(Grant/Deny)命令控制用户的权限,只能控制用户对数据库对象的访问权限,这意味着,用户访问的粒度是对象整体,可以是一个数据表,或视图等,用户要么能够访问数据库对象,要么没有权限访 ...
- 六:MVC数据建模(增删改查)
今天我们来学习mvc增删改查等操作(试着结合前面学习的LINQ方法语法结合查询) 我创建了一个car的数据库,只有一个Cars表 表里面就几个字段 插入了一些数据 想要创建一个ADO.NET实体数据模 ...
- 微信小程序开发(十)获取手机的经纬度
// succ.wxml <view>经度:{{lon}}</view> <view>纬度:{{lat}}</view> // succ.js var ...
- java线程基础巩固---ThreadGroup API学习
ThreadGroup初识: 这次来学习一个新的线程概念---线程组(ThreadGroup),首先从JDK文档中对它进行一个大致的了解,如下: 下面开始用代码来进行说明,对于一个线程来说如果没有指定 ...