当前位置: 首页 > news >正文

计算机启动过程中各个步骤

1. 电源自检(POST,Power-On Self-Test)

当计算机接通电源并按下启动按钮时,电源管理单元(PMU)会接收到电源按钮信号,并向主板发送电源开启信号。一旦电源供应正常,主板上的BIOS(或UEFI)会开始执行自检程序,也称为POST。POST的主要目的是检查计算机的硬件组件是否工作正常。

  • 检查电源系统:计算机会检查电源插头是否插紧,电源线是否连接牢固,以及电源开关是否处于打开状态。同时,还会检查电源输出是否稳定,以确保计算机能够正常工作。
  • 检查硬件组件:BIOS会逐一检查CPU、内存、显卡、硬盘等硬件组件。例如,它会检查CPU的时钟频率和缓存是否正常,内存模块是否存在且能正常访问,显卡和显示器是否连接正常等。
  • 显示错误信息:如果POST检测到任何硬件故障,计算机会发出蜂鸣声或在屏幕上显示错误信息,提示用户进行相应的处理。

2. 初始化硬件

完成POST后,BIOS会开始初始化系统中的硬件组件。

  • 设置默认配置:BIOS会为硬件组件设置默认的配置参数,如内存时序、硬盘模式等。
  • 分配资源:BIOS会为各个硬件组件分配必要的资源,如内存地址、中断号、I/O端口等。这些资源是硬件组件正常工作的基础。
  • 准备引导设备:BIOS会检查并准备引导设备,如硬盘或固态硬盘,以便从中加载引导加载程序。

3. 加载引导程序

一旦硬件初始化完成,BIOS会根据用户设置的启动顺序(通常是在BIOS设置菜单中配置的)尝试从指定的存储设备中加载引导加载程序。

  • 读取引导扇区:BIOS会尝试读取引导设备的第一个扇区,也称为引导扇区(Boot Sector)。这个扇区通常包含引导加载程序的信息,如位置、大小等。
  • 加载引导加载程序:BIOS会将引导加载程序加载到内存中,并准备将其执行。引导加载程序是一个小型的程序,它的主要任务是加载操作系统内核并启动它。

4. 加载操作系统内核

引导加载程序被加载到内存中后,它会开始执行,并将操作系统内核加载到内存中。

  • 查找操作系统内核:引导加载程序会在硬盘上搜索操作系统内核的位置。这通常是通过读取文件系统的元数据来实现的。
  • 加载内核:一旦找到操作系统内核的位置,引导加载程序会将其加载到内存中。这个过程可能涉及读取多个文件,并将它们组合成一个完整的内核映像。
  • 传递控制权:加载完成后,引导加载程序会将控制权传递给操作系统内核。此时,操作系统内核开始执行,并接管计算机的控制权。

5. 操作系统初始化

操作系统内核开始运行后,会进行一系列的初始化操作。

  • 初始化设备驱动程序:操作系统会加载并初始化必要的设备驱动程序,以确保硬件设备能够正常工作。这些驱动程序通常存储在硬盘的特定目录中。
  • 启动系统服务:操作系统会启动一系列的系统服务,如网络服务、打印服务等。这些服务为用户提供了各种功能支持。
  • 配置网络堆栈:如果计算机连接到网络,操作系统会配置网络堆栈,以便进行网络通信。
  • 读取配置文件:操作系统会读取各种配置文件,如系统配置文件、用户配置文件等。这些文件包含了系统的默认设置和用户自定义的设置。
  • 设置环境变量:操作系统会设置一系列的环境变量,这些变量用于控制程序的运行环境和行为。

6. 显示登录界面

当初始化完成后,操作系统就正式进入了运行状态。此时,用户通常会看到操作系统的启动画面或登录界面。

  • 启动画面:操作系统会显示一个启动画面,通常包含操作系统的名称、版本信息、制造商的徽标等。
  • 登录界面:如果用户需要登录系统,操作系统会显示一个登录界面。用户可以在此输入用户名和密码来验证身份。一旦验证成功,用户就可以开始使用计算机系统了。


http://www.mrgr.cn/news/65871.html

相关文章:

  • 程序《工资分类收税》
  • vue系列==vue路由
  • vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,
  • Python3 No module named ‘pymysql‘
  • Spring源码(十一):Spring MVC之DispatchServlet
  • YOLOv10改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
  • 全面解析:物联网技术及其应用
  • ACTF新生赛2020:NTFS数据流
  • C++——用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个团数,整数和n在主函数中输人,最后在主函数中输出。
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第四题
  • 一文了解Android SELinux
  • Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树
  • Python | Leetcode Python题解之第538题把二叉搜索树转换为累加树
  • DDD学习笔记
  • 麻省理工学院的研究人员最近开发了一种新的机器人训练方法
  • 阿里云服务器 篇十:自动定时备份CSDN博客内容
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第五题
  • 【Java知识】java进阶-一个好用的java应用分析工具arthas
  • markdown/Latex希腊字母αβγ...λ...π等怎么编辑
  • sqlserver
  • 【C++ 曼哈顿距离 数学】1131. 绝对值表达式的最大值|2059
  • 模块功能的描述方法
  • 理解数据加载器(Data Loader)
  • OSI参考模型
  • Java 8的关键新特性:JDK加解密、Lambda表达式、日期时间API及Optional类
  • Vue全栈开发旅游网项目(6)-接口开发