电脑开机过程(腾讯08年面试题)

2023-05-16

打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?相信有的朋友还不是很清楚,本文就来介绍一下从打开电源到出现windows的蓝天白云时,计算机到底都干了些什么事情。 

  首先让我们来了解一些基本概念。第一个是大家非常熟悉的bios(基本输入输出系统),bios是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。bios包括有系统bios(即常说的主板bios)、显卡bios和其它设备(例如ide控制器、scsi卡或网卡等)的bios,其中系统bios是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。bios一般被存放在rom(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。 

  第二个基本概念是内存的地址,我们的机器中一般安装有32mb、64mb或128mb内存,这些内存的每一个字节都被赋予了一个地址,以便cpu访问内存。32mb的地址范围用十六进制数表示就是0~1ffffffh,其中0~fffffh的低端1mb内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1mb,这1mb的低端640kb被称为基本内存,而a0000h~bffffh要保留给显示卡的显存使用,c0000h~fffffh则被保留给bios使用,其中系统bios一般占用了最后的64kb或更多一点的空间,显卡bios一般在c0000h~c7fffh处,ide控制器的bios在c8000h~cbfffh处。 

  好了,下面我们就来仔细看看计算机的启动过程吧。 

  第一步:当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向cpu发出并保持一个reset(重置)信号,让cpu内部自动恢复到初始状态,但cpu在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去reset信号(如果是手工按下计算机面板上的reset按钮来重启机器,那么松开该按钮时芯片组就会撤去reset信号),cpu马上就从地址ffff0h处开始执行指令,从前面的介绍可知,这个地址实际上在系统bios的地址范围内,无论是award bios还是ami bios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。 

  第二步:系统bios的启动代码首先要做的事情就是进行post(power-on self test,加电后自检),post的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于post是最早进行的检测过程,此时显卡还没有初始化,如果系统bios在进行post的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640k常规内存),那么系统bios就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,post过程进行得非常快,我们几乎无法感觉到它的存在,post结束之后就会调用其它代码来进行更完整的硬件检测。 

  第三步:接下来系统bios将查找显卡的bios,前面说过,存放显卡bios的rom芯片的起始地址通常设在c0000h处,系统bios在这个地方找到显卡bios之后就调用它的初始化代码,由显卡bios来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统bios接着会查找其它设备的bios程序,找到之后同样要调用这些bios内部的初始化代码来初始化相关的设备。 

  第四步:查找完所有其它设备的bios之后,系统bios将显示出它自己的启动画面,其中包括有系统bios的类型、序列号和版本号等内容。 

 第五步:接着系统bios将检测和显示cpu的类型和工作频率,然后开始测试所有的ram,并同时在屏幕上显示内存测试的进度,我们可以在cmos设置中自行决定使用简单耗时少或者详细耗时多的测试方式。 

  第六步:内存测试通过之后,系统bios将开始检测系统中安装的一些标准硬件设备,包括硬盘、cd-rom、串口、并口、软驱等设备,另外绝大多数较新版本的系统bios在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。 

  第七步:标准设备检测完毕后,系统bios内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备,每找到一个设备之后,系统bios都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、dma通道和i/o端口等资源。 

  第八步:到这一步为止,所有硬件都已经检测配置完毕了,多数系统bios会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。 

  第九步: 接下来系统bios将更新escd(extended system configuration data,扩展系统配置数据)。escd是系统bios用来与操作系统交换硬件配置信息的一种手段,这些数据被存放在cmos(一小块特殊的ram,由主板上的电池来供电)之中。通常escd数据只在系统硬件配置发生改变后才会更新,所以不是每次启动机器时我们都能够看到“update escd… success”这样的信息,不过,某些主板的系统bios在保存escd数据时使用了与windows 9x不相同的数据格式,于是windows 9x在它自己的启动过程中会把escd数据修改成自己的格式,但在下一次启动机器时,即使硬件配置没有发生改变,系统bios也会把escd的数据格式改回来,如此循环,将会导致在每次启动机器时,系统bios都要更新一遍escd,这就是为什么有些机器在每次启动时都会显示出相关信息的原因。 

  第十步: escd更新完毕后,系统bios的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。以从c盘启动为例,系统bios将读取并执行硬盘上的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责读取并执行io.sys,这是dos和windows 9x最基本的系统文件。windows 9x的io.sys首先要初始化一些重要的系统数据,然后就显示出我们熟悉的蓝天白云,在这幅画面之下,windows将继续进行dos部分和gui(图形用户界面)部分的引导和初始化工作。 

  如果系统之中安装有引导多种操作系统的工具软件,通常主引导记录将被替换成该软件的引导代码,这些代码将允许用户选择一种操作系统,然后读取并执行该操作系统的基本引导代码(dos和windows的基本引导代码就是分区引导记录)。  上面介绍的便是计算机在打开电源开关(或按reset键)进行冷启动时所要完成的各种初始化工作,如果我们在dos下按ctrl+alt+del组合键(或从windows中选择重新启动计算机)来进行热启动,那么post过程将被跳过去,直接从第三步开始,另外第五步的检测cpu和内存测试也不会再进行。我们可以看到,无论是冷启动还是热启动,系统bios都一次又一次地重复进行着这些我们平时并不太注意的事情,然而正是这些单调的硬件检测步骤为我们能够正常使用电脑提供了基础。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电脑开机过程(腾讯08年面试题) 的相关文章

  • Python 读取WAV文件并绘制波形图

    coding utf 8 import wave import pylab as pl import numpy as np 打开WAV文档 f 61 wave open r 34 1 wav 34 34 rb 34 读取格式信息 ncha
  • 移植开源EasyPR的车牌识别源码到Android工程

    一直对图像处理很感兴趣 xff0c 上次等车无聊时下载了一个车牌识别软件发现效果挺好的 xff0c 便更加产生了兴趣 xff0c 开始在网上搜索资料 xff0c 在网上事先找打了 taotao1233在VC和Anroid上实现的车牌识别方案
  • 套接字和文件描述符

    基本概念 xff1a a 一个TCP连接的套接字对 xff08 socket pair xff09 是一个定义该连接的两个端点的四元组 xff1a 本地IP地址 本地TCP端口 外地地址 外地TCP端口 套接字对 唯一标识一个网络上的每个T
  • Linux C/C++实现https post/get请求

    Linux C C 43 43 要实现https访问借助于libcurl工具 xff0c 如果是实现自定义SSL证书通信校验的 xff0c 可以通过C调用openssl来实现 xff0c 也可以通过libcurl来 记得linux上提前安装
  • ROS2读取realsense摄像头数据并发布topic到ros2

    环境 xff1a ubuntu18 04 ros2 写在前面 xff1a 最近在写项目的自动化测试 xff0c 需要实现先从realsense camera录制一段数据 xff0c 在test case中需要以发布topic的方式播放录制的
  • 研究型论文_基于自编码器和集成学习的半监督异常检测算法

    文章目录 基于自编码器和集成学习的半监督异常检测算法论文摘要论文解决的问题1 算法原理2 算法设计算法的创新点参考资料 基于自编码器和集成学习的半监督异常检测算法 论文摘要 异常检测用来预处理数据 xff0c 挖掘异类数据信息 xff0c
  • 直接上干货!为什么Flutter能最好地改变移动开发?成功拿下大厂offer

    前言 这里整理的是一些与技术没有直接关系的面试题 xff0c 但是能够考察你的综合水平 xff0c 所以不要以为不是技术问题 xff0c 就不看 xff0c 往往有时候就是这样一些细节的题目被忽视 xff0c 而错过了一次次面试机会 想要成
  • 云服务器上ros安装

    Ubuntu16 04安装ROS Kinetic详细过程 xff1a https blog csdn net weixin 43159148 article details 83375218 出现xx release not found x
  • 从驱动到转行到游戏开发的经验

    已经转行 xff0c 但是从自己熟悉的行业转入一个新行业 xff0c 各种心酸只有自己知道 以下是我转行中所读到的图形学相关书 xff1a 1 xff0c Opengl 编程指南 或者龙书 不管你是否志在游戏行业都推荐龙书 xff0c 书中
  • vtk 提取等值面并显示

    marchingcube是提取等值面比较通用的算法 xff0c 本文利用vtk 的marching cube接口提取等值面 xff0c 并通过其绘制管线把等值面绘制出来 其原理请参考下文 xff1a 1 等值面的定义及其三角面片近似 等值面
  • 关于Runnable 和 Thread的应用场景

    摘自StackOverflow 个人觉得比较靠谱的答案 xff0c 细节请看url http stackoverflow com questions 541487 implements runnable vs extends thread
  • JAVA 泛型中的<T> 和 <?> 的应用场景

    在JAVA 泛型中 xff0c 经常看到 lt gt 应用场景为当不确定类型时 因为泛型的输入参数是类型 xff0c 而有一些状况下我们并不能确定类型
  • 构造块和静态块的应用场景

    待补充 xff0c 有点懒
  • 在Github和Git上fork之简单指南

    from https linux cn article 4292 1 rss html 以我的经验来看 xff0c 刚接触Git和GitHub时 xff0c 最困扰的一件事情就是尝试解决下面的问题 xff1a 在Git和GitHub上 xf
  • java 同步原理

    还未来得及写文章呢
  • (华清远见)嵌入式学习月度总结

    文章声明 xff1a 本次总结仅代表个人观点 xff0c 至于哪一家培训机构怎么样 xff0c 同xxx培训比起来如何 xff0c 是否值得报名参加 xff0c 都应该由你自己去斟酌决定 xff0c 仅提供个人感受 xff0c 不提供建议
  • FreeRTOS学习记录 01--中断管理

    文章目录 0 前言1 Cortex M 中断管理1 1 中断配置1 2 优先级分组配置1 3 FreeRTOS中断 PendSv和Systick中断优先级配置 2 FreeRTOS的临界段代码保护和开关中断2 1 临界段代码保护2 2 中断
  • 通信网络中的透传到底什么意思?

    1 透传 xff1a 指与传输网络的介质 调制解调方式 传输方式 传输协议无关的一种数据传送方式 这就好比快递邮件 xff0c 邮件中间有可能通过自行车 汽车 火车 飞机的多种组合运输方式到达您的手上 xff0c 但您不用关心它们中间经历了
  • 2016年个人工作总结、生活总结 和 2017年个人工作计划、生活计划

    个人总结 xff0c 分别对2016年的工作生活总结和计划安排 xff0c 让自己在可预见的目标路线上前进 xff0c 为了自己也为了以后的幸福 一 2016年工作总结 1 2016年上半年 xff0c 完成小步环卫的智能手环 后台 APP
  • pip安装baidu-aip的方法

    记住你以后就有名字啦 万能小p xff1a pip install baidu aip i http pypi douban com simple trusted host pypi douban com 中间错误是这样的 xff1a Co

随机推荐

  • 计算机网络习题集_主打选择填空

    计算机网络习题 计算机网络习题第一章 概述第二章 物理层第三章 数据链路层第四章 网络层第五章 运输层第六章 应用层 附上电子版 链接 xff1a https pan baidu com s 1Y XyB3uAitkz0FtW6u1n0g
  • 不能错过的六大在线画图网站

    图表网站列表 xff1a 1 Highcharts2 online visual paradigm3 everviz4 echarts5 AntV6 fooplot 1 Highcharts Highcharts xff1a https w
  • ubuntu software database is broken问题解决

    ubuntu software database is broken 出现如下字样 xff1a ubuntu software database is broken It is impossible to install or remove
  • 批量处理:读取文件夹,将json文件转化为txt文件

    读取文件夹 xff0c 将json文件转化为txt文件 一 样例1 json文件只有一个样本1 json文件内容2 代码转化3 效果图 二 样例2 json文件中有多个样本1 json文件内容2 代码转化3 效果图 三 样例3 json文件
  • Ubuntu18.04对应的ROS安装步骤教程

    Ubuntu18 04对应的ROS安装教程 一 ROS配置1 配置Ubuntu18 04 软件仓库2 开始安装3 测试 二 遇到的问题1 ROS无法下载问题2 sudo rosdep command not found3 rosdep up
  • 最简ubuntu18.04系统分区教程

    最简ubuntu18 04系统分区教程 一 在分区之前先介绍一下ubuntu的文件系统二 分区详情 一 在分区之前先介绍一下ubuntu的文件系统 1 swap xff1a 用作虚拟内存 xff0c 这个要和自己的物理内存一样大 2G 10
  • Ubuntu系统永久设置串口权限

    Ubuntu系统永久设置串口权限 1 查看串口2 查看当前用户名3 设置串口永久权限 1 查看串口 s l dev ttyUSB0 注 所属用户组为 dialout xff0c root用户才具有操作权限 2 查看当前用户名 span cl
  • 【ROS简介】

    ROS简介 1 ROS是什么 xff1f 2 ROS能干什么 xff1f 3 存在的瓶颈 xff1f 4 涉及的技术 xff08 概率机器人技术 xff09 5 内部构造 1 ROS是什么 xff1f ROS的核心是一个分布式 低耦合的通讯
  • 【上传官方服务器评估TrackingNet数据集】

    1 官方链接 数据集评估链接 xff1a https eval ai web challenges challenge page 1805 overview 2 以zip压缩包的形式提交测试结果 3 查看提交结果 4 在排行榜查看排名
  • 【git常用操作】git的分支创建、切换、提交与关联分支操作

    1 下拉项目 下拉代码建议用ssh密钥方式下拉 xff0c 配置好之后后续操作不需要输入密码等权限验证操作 xff0c 很方便 git clone span class token punctuation span 代码链接 span cl
  • 【国际学术会议举办的城市和国家】

    与计算机视觉相关的国际学术会议在不同年份举办的城市和国家列表 xff08 持续更新中 xff09 会议名 城市和国家 IJCAI2019 Macau China IJCAI2021 Montreal Canada CVPR2005 San
  • 【简历下载教程】

    这里有几个不错的简历下载网站 xff1a 1 https jianlixiazai cn 2 http www yyfangchan com 3 https sc chinaz com jianli free html 4 https sc
  • 软件工程—需求分析阶段

    第一步 需求获取 为了保证能全面地获取信息 xff0c 以更好地服务于产品设计和迭代 xff0c 产品经理必须利用内部外部等多种渠道来获取用户需求 并且因渠道差异 xff0c 产品经理所采取的方式与方法也相应会有所差异 xff0c 所以产品
  • c大小为0的数组

    大小为0的数组 Q xff1a 数组大小为0应该怎么理解 xff1f 比如 xff1a struct page page 0 unsigned long private 0 cacheline aligned A xff1a 一个很好的例子
  • 【安装ROS执行rosdep init、rosdep update失败-本地解决方法】

    Ubuntu系统安装ROS时 xff0c 执行rosdep init rosdep update失败 本地解决方法 1 克隆镜像文件2 修改20 default list文件3 修改sources list py文件文件3 1 执行命令3
  • 中兴2016校招软件在线笔试题

    面试经验可以参考我的另一篇文章 xff0c 是7月初参加openday面试的 xff0c 文章链接http blog csdn net dandelion1314 article details 47009585 招聘群里有人发的招聘时间安
  • docker 图形化界面portainer

    portainer 官方地址 https portainer readthedocs io en latest deployment html 网易镜像网站https c 163yun com hub m home 国内拉去镜像 docke
  • ST电机库v5.4.4源代码分析(6): PID以及相关参数

    编者 xff1a 沉尸 5912129 64 qq com 前言 xff1a 本文章探索st电机库自动生成的PID参数的由来 xff0c 采用的控制板为野火407电机板 43 BLDC带Hall的电机 在 Mcboot 函数中初始化变量 P
  • 【Pixhawk】注册一个字符型驱动设备

    最近学习Pixhawk的SPI xff0c 本以为PX4是STM32单片机而已 xff0c 写个SPI驱动应该很简单 但是当我看到mpu9250的那些cpp文件 xff0c 我一下就蒙了 由于PX4用的NUTTX系统 xff0c 类似Lin
  • 电脑开机过程(腾讯08年面试题)

    打开电源启动机器几乎是电脑爱好者每天必做的事情 xff0c 面对屏幕上出现的一幅幅启动画面 xff0c 我们一点儿也不会感到陌生 xff0c 但是 xff0c 计算机在显示这些启动画面时都做了些什么工作呢 xff1f 相信有的朋友还不是很清