zoukankan      html  css  js  c++  java
  • 计算机启动过程详解(待修改)

    目录

    关键词

    BIOS:

    CMOS:

    内存地址:

    POST:

    蜂鸣码:

    RESET信号:

    启动过程

    通电阶段

    上电自检(POST)阶段

    显卡检测阶段

    其他关键设备检测阶段

    系统BIOS信息显示

    CPU、内存检测阶段

    标准硬件设备检测

    即插即用设备检测

    概略硬件信息

    更新ESCD阶段

    系统引导阶段

    软件引导系统启动阶段

    检测和配置硬件阶段

    内核加载阶段

    登陆阶段

    参考文献


    (说明:本文中的计算机以微机为模型来说明。)

            计算机启动过程是个很复杂的过程,有一个非常完善的依靠软件与硬件相互协作来完成的自检机制,该过程也被称为计算机的初始化过程。整个初始化过程是从加电瞬间起,直到系统停留在命令行提示符或图形桌面上。

    关键词

    BIOS

            BIOS(Basic Input-Output System),即微机的基本输入/输出系统,是集成在主板上的一个ROM芯片(BIOS芯片)中的一组程序,其中保存有微机系统最重要的基本输入/输出程序、系统信息设置程序、开机加电自检程序和系统启动自举程序,为微机提供最低的、最直接的硬件控制。

    CMOS

          CMOS是微机主板上的一块RAM芯片,用于保存当前系统的硬件配置和用户对某些参数的设定。假如CMOS-RAM参数丢失,致使系统检测不到各个硬件,则微机无法正常工作。CMOS中各项参数的设定通过专门的程序完成,BIOS可以对其进行修改。

    内存地址:

          为便于CPU访问而赋予内存的编号。有一些地址段一般被分配给特定的程序使用。如:A0000H~BFFFFH保留给显存使用,C0000H~FFFFFH保留给BIOS使用,其中显卡BIOS一般在C0000H~C7FFFH处、IDE控制器的BIOS在C8000H~CBFFFH处。

    POST

          微机通电稳定后,系统BIOS指导对微机的关键设备进行粗略检测的过程。

    蜂鸣码:

          在POST过程中,根据蜂鸣的次数和长短来报告错误情况的方式。

    RESET信号:

          重新启动时,需要将微机的一些设备恢复到缺省状态,如将CPU到实模式下、IP指向FFFF:0000内存单元。

     

    启动过程

    通电阶段

           当按下“POWER”键时,计算机进入初始化过程,电源开始向主板及其他设备供电(电源指示灯常亮、电源风扇开始转动…),主板上的芯片组会向CPU发出并保持一个RESET信号,让CPU内部自动恢复到初始状态(实模式),此时的电压还不够稳定,CPU不会马上执行命令。大约100~500ms后,电源+ 5V端输出电压达到4.75V时,电源会向主板芯片组发送一个POWER GOOD逻辑信号,当主板芯片组检测到POWER GOOD信号时,认为电源已经开始稳定供电,会撤去先前发出的RESET信号。CPU马上就从地址FFFF:0000处开始执行命令(JMP XXXXX),跳转到系统BIOS中真正的启动代码处。

    上电自检(POST)阶段

           计算机正常通电后,CPU开始执行存放在BIOS中的指令。系统BIOS首先要做的事情就是进行POST。POST的主要任务时检测系统中的一些关键设备(CPU、系统主板、基本的640KB内存、1MB以上的扩展内存等)是否存在和能否正常工作,并将检测的结果与微机中的CMOS-RAM参数进行对比。如果在这个过程中发现了致命错误,系统BIOS会控制喇叭产生蜂鸣码来报告错误情况。正常情况下POST过程进行得非常快,我们几乎无法感觉到这个过程。POST结束之后就会调用其他代码来进行更加完整得硬件检测。

    显卡检测阶段

           系统BIOS将查找显卡BIOS,存放显卡BIOS-ROM芯片的起始地址通常在C0000H处,系统BIOS找到显卡BIOS之后会对其中的内容进行加法求和校验和测试评估。假如测试成功,控制权转交给显卡BIOS,进行装入和初始化显卡,初始化完成后有一个光标出现在显示屏幕上,控制返回给系统BIOS。没有安装显卡BIOS时,系统BIOS为主板的显卡适配器提供一个初始化流程,同样出现一个光标。视频系统初始化后可在屏幕上看到一些初始化信息,介绍生产厂商、图形芯片类型等内容。假如加法求和校验和测试失败,初始化通常会立即中断(黑屏)。

    其他关键设备检测阶段

           接着系统BIOS会查找其他设备的BIOS程序,之后以同样得方式初始化这些设备。假如发生错误会在屏幕上提示错误信息。

    系统BIOS信息显示

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

    CPU、内存检测阶段

            系统BIOS将检测和显示CPU的类型和工作频率,然后开始测试所有的RAM。并同时在屏幕上显示内存测试的进度。假如出现错误屏幕将蓝屏。

    标准硬件设备检测

           内存测试通过之后系统BIOS将开始检测系统中安装的一些标准硬件设备(硬盘、CD-ROM、串口、并口等),还要自动检测和设置内存的定时参数,硬盘参数和访问模式等。当微机检查到硬件正常并与CMOS设置相等后,继续启动过程。

    即插即用设备检测

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

    概略硬件信息

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

    更新ESCD阶段

            接下来系统BIOS将更新ESCD。ESCD是系统BIOS用来与操作系统交换硬件配置信息的一种手段。通常ESCD数据只在硬件配置发生变化后才会更新,但当系统BIOS与操作系统使用的数据格式不一致时,每次启动都会更新ESCD。

    系统引导阶段

           上述过程完毕之后,系统BIOS的自举程序将根据用户在“CMOS参数”中的设置的启动顺序来引导系统,一般都是从硬盘启动。从硬盘引导之后,BIOS把主引导记录读入内存,并将控制权交给主引导程序,检查分区表,寻找活动分区,找到之后再将控制权交给活动分区的引导记录,由引导记录来引导操作系统。如成功引导接着屏幕上便会出现系统启动的界面。

    (以下的模型以Windows XP)

    软件引导系统启动阶段

            ntldr读取boot.ini中的内容,定位操作系统所在的启动分区。如果计算机中只有一个操作系统,ntldr会自动执行下一步。如果计算机中有多个操作系统,那么这时会有一个选单让用户选择要启动的操作系统,当用户选择Windows 9X/Me时,ntldr会把计算机的控制权交给bootsect.dos;选择其他操作系统系统会将控制权交给其相应的程序。

    检测和配置硬件阶段

           启动Windows XP后,ntldr启动ntdetect.com。ntdetect.com将收集计算机硬件信息列表并将列表返回到ntldr,这样做的目的时便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。ntdetect.com的重要性在于不兼容ACPI的计算机中列举设备,这种情况下设备资源是由硬件分配的。在兼容ACPI的计算机中,设备资源是由操作系统分配的。在这个过程中,ntdetect.com会查找Windows XP创建的硬件配置文件。Windows XP会为桌面型电脑创建一个硬件配置文件,为移动型电脑创建两个硬件配置文件,用户也可以创建自己特定的硬件配置文件。硬件配置文件中没有的设备的驱动程序不会在Windows XP启动过程中加载。对于有多个硬件配置文件的计算机,用户可以选择是否在启动时显示硬件配置文件选单以便用户选择特定的硬件配置文件。

    内核加载阶段

         在这个阶段,ntldr首先加载称为 Windows XP 内核的ntokrnl.exe。这里,系统加载了 Windows XP 内核但是没有将它初始化。接着 ntldr 加载硬件抽象层(Hardware Abstraction Layer,hal.dll),然后,系统继续加载 HKEY_LOCAL_MACHINESYSTEM 键,ntldr读取 HKEY_LOCAL_MACHINESYSTEMSelect 中的键值来决定哪一个ControlSet将被加载。ControlSet中包含设备的驱动程序以及需要加载的服务.ntldr加载HKEY_LOCAL_MACHINESYSTEMControlSetXXXServices...下 start 键值为 0 的最底层设备驱动。当作为 ControlSet 镜像的 Current Control Set被加载时,ntldr 将计算机的控制权交给 Windows XP 内核的ntokrnl.exe,初始化内核就开始了。初始化内核开始的时候,彩色的Windows XP 的 logo 以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的 4项任务: 

       1) 内 核 使 用 在 硬 件 检 测 时 收 集 到 的 数 据 来 创 建HKEY_LOCAL_MACHINEHARDWARE 键。

       2) 内核通过复制 HKEY_LOCAL_MACHINESYSTEMCurrent ControlSet 的值来创建了 HKEY_LOCAL_MACHINE SYSTEMClone。Clone 是计算机数据的备份,不包括启动中的改变,也不会被修改。

       3)系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINESYSTEMCurrent Control SetServices...下 start 键值为 1 的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用Error Control键值来决定如何处理,值为 3 时,错误标志为危机/关键,系统初次遇到错误会以 HKEY_LOCAL_MACHINESYSTEMSelect 中 Last Known Good所指的 ControlSet重新启动,如果使用 Last Known Good Control Set 启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为 2 时错误情况为严重,系统启动失败并且以 Last Known Good Control Set 重新启动,如果系统启动已经在使用Last Known Good 值,它会忽略错误并且继续启动;当值是 1 的时候错误为普通,系统会产生一个错误信息,但是会忽略这个错误并且继续启动;当值是 0 的时候忽略,系统不会显示任何错误信息而继续运行。

       4) 内核启动 Session Manager (Smss.exe)。Session Manager 的作用是启动 Windows XP 高级子系统以及服务,启动控制所有输入、输出设备以及访问显示器屏幕的 Win32 子系统以及 Windows 登陆进程(Winlogon.exe),到这里,初始化内核就完成了。

    登陆阶段

           Winlogon.exe 首先启动服务管理 (Service Control Manager,Services.exe)和本地安全认证 (Local Security Authority,Lsass.exe),同时显示 Windows XP 欢迎屏幕,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。然后 Winlogon 会提示用户输入有效的用户名或密码。接着,服务管理最后执行以及扫描 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServives 来检查是否还有服务需要加载,服务管理查找start键值为 2 或更高的服务,服务按照 start 的值以及 DependOnGroup和DepandOnService 的值来加载。只有用户成功登陆到计算机后,Windows XP 的启动才被认为是完成,在成功登陆后,系统拷贝 HKEY_LOCAL_MACHINESYSTEMClone 到 Last Known Good Control Set,完成这一步骤后,系统才意味着已经成功引导了。

    下面配一张启动的流程图作为参考:

    参考文献

    [1]陈放,潘素珍.计算机启动过程的解析[J].电子制作,2013(07):86.

    [2]樊剑剑.从开机黑屏谈计算机的启动过程[J].福建电脑,2008(11):69+78.

    [3]陈兴,程新党.计算机启动故障分析与排除[J].软件导刊,2008(08):41-42.

    [4]武峰.关于计算机启动过程的分析与探讨[J].电脑与电信,2007(06):69-71.

    [5]贾玉涛.计算机启动过程详解[J].家电检修技术,2006(16):44-45.

    [6]马志永,庞飞.漫谈计算机的启动过程[J].河北审计,2000(11):28-29.

    参考博客:

    https://www.cnblogs.com/Braveliu/p/3305975.html

  • 相关阅读:
    常见Oracle HINT的用法
    2011年的每一天是周几?
    TOM上关于JOIN跟+号的讨论
    关于index_ffs使用索引的一点问题.
    数据库中分组字符串相加
    国服3.3.5:死亡骑士全系DPS饰品收益评分
    WLK狂暴战怎么玩
    3.3萨满手册
    关于clob类型在函数中的处理。
    pivot_clause [Oracle SQL]
  • 原文地址:https://www.cnblogs.com/z1r0s/p/14284171.html
Copyright © 2011-2022 走看看