计算机是如何启动的

一直好奇计算机启动的原理是怎么样的?最近刚好想搞一下操作系统,故此总结一下。

打开电源

电源
对于现代计算机来说,打开电源是开机的第一步,这一点无用质疑,离开了电,现代社会估计就会垮台。

计算机启动

加电自检

官方说法为加电自检,简单来说就是计算机在启动的时候,会去检查一下自己的硬件环境有木有准备好,比如:CPU、内存、磁盘、显卡等是否正常工作,如果发现硬件故障就会报警或者显示错误。就跟你开车去很远的地方,首先需要看一下要不要加油,车胎有木有气,如果没油就会加油,没气就会打气是一样。

启动固件 (Bootstrap Loader)

官方说法为启动 Bootstrap Loader,通常是启动 BIOS ( 基本输入/输出系统,),BIOS存储在主板上的固件芯片中的一组程序,它负责初始化硬件设备,配置系统资源,并准备计算机进入操作系统的加载过程

BIOS初始化

BIOS 开始初始化硬件设备,包括设置时钟、检测和配置内存、初始化显示适配器和其他外设等。BIOS 还会读取 CMOS(可擦除只读存储器)中的设置,如系统时间、启动顺序等。
重装系统的时候,不知道有没有注意到有人会去调试 BIOS 的启动顺序。BIOS初始化完就是这样的。
在这里插入图片描述计算机 BIOS(基本输入/输出系统)既包含硬件部分,也包含软件部分。

硬件方面,计算机的 BIOS 是存在于主板上的一片固件芯片,通常称为 BIOS 芯片或者系统固件。这个芯片包含了一些硬件电路,如时钟、存储器、接口电路等。这些硬件电路负责启动计算机、初始化硬件设备,并提供最基本的输入输出功能。

软件方面,计算机的 BIOS 包含了一套预先安装在 BIOS 芯片上的固件程序,这些程序用于控制计算机的启动过程、硬件初始化和基本的输入输出操作。这些固件程序通常以低级的机器语言或者汇编语言编写。

当计算机启动时,计算机的 BIOS 被加载到内存中,并运行其中的固件程序,负责进行启动自检(POST,Power-On Self-Test)、初始化硬件设备、检测和配置系统资源等操作。之后,BIOS 将控制权交给操作系统或其他引导程序,由它们继续处理计算机的运行。

因此,计算机的 BIOS 既包含硬件部分(BIOS 芯片和相关电路),也包含软件部分(预先安装在 BIOS 芯片上的固件程序)。它在计算机启动时扮演着重要的角色,确保计算机能够正常启动和运行。

启动设备选择

BIOS 根据 CMOS 中的设置确定启动设备的顺序。它将按照预设的启动顺序尝试读取启动设备,例如硬盘、光盘驱动器、USB 设备等。一旦找到可引导的设备,BIOS 将加载引导扇区中的引导程序。
特别是在重装系统的时候,启动设备顺序,往往会优先选择 USB 设备

引导程序(Bootloader)加载

引导程序是一个小型的程序,位于引导设备(如硬盘)的引导扇区。引导程序被加载到内存中,并负责加载操作系统的核心部分。
因为引导扇区,往往是磁盘的一个扇区,默认 512 字节,而操作系统往往好几十个G,所以需要引导程序来加载操作系统,而非引导扇区

操作系统引导加载程序执行

引导加载程序会读取操作系统引导加载程序(如GRUB或Windows引导管理器)的配置文件和设置。

启动管理器启动

操作系统引导加载程序会根据配置文件中的设置启动启动管理器。启动管理器会显示一个菜单,列出可用的操作系统选项供用户选择。

启动管理器(如GRUB或Windows引导管理器)通常是由操作系统安装程序或操作系统本身在安装过程中写入磁盘的。具体来说,当你安装操作系统时,安装程序会将启动管理器的文件和相关配置写入硬盘的特定位置。

用户选择操作系统

用户可以通过启动管理器的菜单界面选择要启动的操作系统。
这也是双系统的原理

操作系统加载

每个操作系统通常都有自己的引导程序,对应的引导程序会启动操作系统的加载过程。它会读取操作系统的核心文件(如 Windows 的 ntoskrnl.exe 或 Linux 的内核映像),将其加载到内存中,并将控制权转交给操作系统。操作系统开始初始化并准备接收用户的指令。
加载过程中,一般都会看到屏幕是黑的,但 window 会显示 圈圈一直在转。

操作系统初始化

操作系统继续启动过程,进行一系列初始化操作,如初始化设备驱动程序、建立系统数据结构、加载系统服务等。最终,操作系统会进入用户界面或登录屏幕,等待用户交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录 Spring Cloud Sleuth概述概述主要功能:Sleuth中的术语和相关概念官网 zipkin配置下载运行zipkin下载zipkin运行 demo配置服务提供者 lf-userpom.xmlapplication.ymlUserController 服务调用者 lf-authpom.xmlapplication.ymlAuthController 测试 Spring Cl…

JuiceFS 目录配额功能设计详解

JuiceFS 在最近 v1.1 版本中加入了社区中呼声已久的目录配额功能。已发布的命令支持为目录设置配额、获取目录配额信息、列出所有目录配额等。完整的详细信息,请查阅文档。 在设计此功能时,对于它的统计准确性,实效性以及对性能的影响&#…

前端uniapp如何修改下拉框uni-data-select下面的uni-icons插件自带的图片【修改uniapp自带源码图片/图标】

目录 未改前图片未改前源码未改前通过top和bottom 和修改后图片转在线base64大功告成最后 未改前图片 未改前源码 然后注释掉插件带的代码,下面要的 未改前通过top和bottom 和修改后 找到uni-icons源码插件里面样式 图片转在线base64 地址 https://the-x.cn/b…

RK3288:BT656 RN6752调试

这篇文章主要想介绍一下再RK3288平台上面调试BT656 video in的注意事项。以RN6752转接芯片,android10平台为例进行介绍。 目录 1. RK3288 VIDEO INPUT 并口 2. 驱动调试 2.1 RN6752 驱动实现 ①rn6752_g_mbus_config总线相关配置 ②rn6752_querystd配置制式 …

【单片机】18-红外线遥控

一、红外遥控背景知识 1.人机界面 (1)当面操作:按键,旋转/触摸按键,触摸屏 (2)遥控操作:红外遥控,433M/2.4G无线通信【穿墙能力强】,蓝牙-WIFI-Zigbee-LoRa等…

基于WTMM算法的图像多重分形谱计算matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、WTMM算法概述 4.2、WTMM算法原理 4.2.1 二维小波变换 4.2.2 模极大值检测 4.2.3 多重分形谱计算 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部…

核货宝:服装店收银系统如何选择?收银系统选购指南!

对于各行各业而言,收银系统都是必备的工具。特别是对于像服装店这样的零售门店来说,选择一套适合的收银系统尤为重要。在选择收银系统时,有一些关键的技巧需要注意,以达到软硬件合理搭配、节省开支的目的。下面将分享四个选购服装…

【Java】微服务——微服务介绍和Eureka注册中心

目录 1.微服务介绍2.服务拆分和远程调用2.1.提供者与消费者 3.Eureka注册中心3.1.Eureka的结构和作用3.2.Eureka的结构3.3.搭建Eureka服务3.3.1.引入eureka依赖3.3.2.编写配置文件 3.4.服务注册及拉1)引入依赖2)配置文件3)启动多个user-servi…

C语言编程实现只有一个未知数的两个多项式合并的程序

背景: 直接看题目把!就是C语言写两个多项式多项式合并 题目要求: 1. 题目: 编程实现只有一个未知数的两个多项式合并的程序。如: 3x^26x7 和 5x^2-2x9合并结果为8x^24x16。 2. 设计要求 (1&#xff09…

【kubernetes】带你了解k8s中PV和PVC的由来

文章目录 1 为什么需要卷(Volume)2 卷的挂载2.1 k8s集群中可以直接使用2.2 需要额外的存储组件2.3 公有云 2 PV(Persistent Volume)3 SC(Storage Class) 和 PVC(Persistent Volume Claim)4 总结 1 为什么需要卷(Volume) Pod是由一个或者多个容器组成的,在启动Pod中…

JavaScript中的模块化编程,包括CommonJS和ES6模块的区别。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 模块化编程概述⭐ CommonJS 模块⭐ ES6 模块⭐ 区别⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、…

git的基础操作

https://blog.csdn.net/a18307096730/article/details/124586216?spm1001.2014.3001.5502 1:使用场景 SVN,如果服务器里面的东西坏掉了,那么就全线崩盘了。 1:基本配置 git config --global user.name “luka” (自己的名字就行) git co…

一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理

以后保持每日一更,由于兴趣较多,更新内容不限于数据结构,计算机组成原理,数论,拓扑学......,所谓:深度围绕职业发展,广度围绕兴趣爱好。往下看今日内容 一.什么是KMP算法 KMP&#x…

ARM-day5作业

.text .global _start _start: 1、设置GPIOE、GPIOF寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28 LDR R0,0x50000a28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) STR R1,[R0]2、设置PE10、PF10、PE8管脚为输出模式 GPIOE_MODER[21:20]->01 0x50006000…

Windows环境下下载安装Elasticsearch和Kibana

Windows环境下下载安装Elasticsearch和Kibana 首先说明这里选择的版本都是7.17 &#xff0c;为什么不选择新版本&#xff0c;新版本有很多坑&#xff0c;要去踩&#xff0c;就用7就够了。 Elasticsearch下载 Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;最初由…

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境方法一方法二 安装其他模块安装MySQL 数据库 模块实现1. 数据预处理1&#xff09;数据整合2&#xff09;文本清洗3&#xff09;文本分词 相关其它博客工程源代码下载其它资料下载 前言 本项目以支…

C++对象模型(7)-- 数据语义学:成员变量偏移值、地址

1、成员变量偏移值 &#xff08;1&#xff09; 成员变量偏移值&#xff0c;就是指这个成员变量的地址离对象首地址偏移了多少字节&#xff0c;这个偏移值在编译完成后是不变的。 class Base { public:int b_i;int b_j; };int main() {Base base;printf(" b_i的偏移值:%…

计算机专业毕业设计项目推荐14-文档编辑平台(SpringBoot+Vue+Mysql)

文档编辑平台&#xff08;SpringBootVueMysql&#xff09; **介绍****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及模式&#xff0c;在编写的…

Linux 基金会分叉 Terraform,正式推出 OpenTofu

Linux 基金会宣布推出 OpenTofu&#xff0c;这是一个 Terraform 的开源替代方案&#xff0c;并且分叉自 Terraform。OpenTofu 原名 OpenTF&#xff0c;为所有人提供了一个在中立治理模式下的可靠的开源替代方案。 Terraform 是 HashiCorp 开源的一个安全和高效的用来构建、更改…

内网渗透——哈希传递

文章目录 哈希传递1. 概念1.1 LM1.2 NTLM 2. 原理3. 利用3.1 hash传递浏览上传文件3.2 hash传递获取域控RDP 4. 总结 哈希传递 哈希传递攻击&#xff08;Pass The Hash&#xff09;是基于 NTLM 认证缺陷的一种攻击方式&#xff0c;攻击者可以利用用户的密码哈希值来进行 NTLM …