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: ...
随机推荐
- 【深入浅出-JVM】(7):栈上分配
概念 对那些作用于不会逃逸出方法的对象,在分配内存时,不在将对象分配在堆内存中,而是将对象属性打散后分配在线程私有栈内存上,这样随着方法调用结束,栈上分配打散的对象也被回收掉,不在增加 GC 额外压力 ...
- Philosopher’s Walk --DFS
题意: Philosopher’s Walk 图,告诉你step返回位置. 思路: 按四个块DFS #define IOS ios_base::sync_with_stdio(0); cin.tie( ...
- 顶级Python库
绝不能错过的24个顶级Python库 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 事实 ...
- MongoDB数据库、集合、文档的操作
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- sleep(0)、usleep(0)与sched_yield() 调度
结论: 如果你是为了耗掉一个机器周期 ,那直接asm ("nop") , 如果是为了让权,建议把 所有使用 usleep(0) 换成 sched_yield() ; 最近发现很多 ...
- Springboot使用外置tomcat的同时使用websocket通信遇到的坑
随意门:https://blog.csdn.net/qq_43323720/article/details/99660430 另外,使用了nginx的话,需要注意开放websocket支持 serve ...
- nginx运行基本指令
测试配置文件: 安装路径下的/nginx/sbin/nginx -t启动: 安装路径下的/nginx/sbin/nginx停止 安装路径下的/nginx/sbin/nginx -s stop 或者是: ...
- Spring、SpringMVC版本及配置
一.Spring版本 Spring的最新版本是Spring 5.x,Spring 4.x的最后版本是Spring 4.3.x,会维护到2020年(Spring的GitHub主页对此有说明). 二.Sp ...
- dev gridview 单元格值拖拽替换
public class GridViewDropCell { //dvginfo根据鼠标点击的x.y坐标获取该点的相关信息 private GridHitInfo downHitInfo; priv ...
- bootstrap-table的简单使用
先上效果图: 第一步:引用bootstrap-table的样式和js. @Styles.Render("~/assets/css/bootstrap.css") @Styles.R ...