2314576

☞ 通用计算机启动过程

1️⃣一个基础固件:BIOS

一个基础固件:BIOS→基本IO系统,它提供以下功能:

  • 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检,保证正常运行和初始化;
  • 基本IO驱动与事件处理功能:初始化并驱动硬件,如显示器、串口、键盘等接口,使能基本的中断;
  • 启动参数设置功能:过程中允许通过热键启动设置界面,进而对CMOS RAM中的启动参数进行配置。CMOS RAM等效于BBSRAM,存放启动配置数据,电池掉电后数据丢失;
  • 系统自动装载功能:在系统自检成功后,根据启动顺序,将相应启动设备主引导记录MBR(一般位于0磁道的0扇区,大小为512字节)的引导程序装入内存并从入口地址运行;
2️⃣WIndows操作系统启动过程

① 系统上电或复位,X86处理器复位——代码段寄存器CS为0xFFFF,指令指针寄存器IP为)0x0000,CS:IP地址存放下一条跳转指令,跳转至ROM中BIOS入口地址0xFFFFFFF0(复位向量地址),并启动BIOS。
② BIOS上电自检,若出现错误则初始化基本硬件,允许用户进行参数配置。
③ BIOS将第1个启动设备的第1个扇区加载到系统RAM的0x7C000地址,启动MBR中的引导程序,进入引导的第一个阶段。
④ 调用 Windows MBR Loader 或 LILO GRUB WinGrub等引导程序,进入引导的第二个阶段。
⑤ 引导程序调用 OS Boot Loader 把用户选择的操作系统内核加载到内存,并跳转到操作系统入口地址开始执行。
此时,计算机的控制权交给了操作系统,基本启动过程完成。

☞ 嵌入式系统启动过程

MCS-51 MCU 上电复位后,PC寄存器的初值为0x0000。0000H,0001H,0002H这三个单元存放了一条无条件跳转指令,当从该地址执行时将直接跳转到主程序的入口地址。
arm处理器复位后将从0x00000000地址处开始执行指令。

1️⃣处理器片内集成启动固件——嵌入式系统启动

① 上电程序引导
片内集成独立 Boot ROM (Brom),代码 Rom Boot Loader (RBL) 支持从 NAND Flash、SPI、UART 等外部接口启动。

  • 加电后,处理器将从该ROM的复位向量地址开始执行,RBL通过判断处理器特定引脚的电平来进入正常启动模式或开发模式;
  • RBL获取下一步要执行的代码,并将其复制到SRAM或SDRAM中引导执行;

② 嵌入式操作系统装载
嵌入式操作系统的引导也需要特定的机制和软件支持,即 Boot Loader。

  • 复位后,将 Boot Loader 代码从Flash 拷贝到SDRAM的特定区间并引导执行;
  • Boot Loader 程序执行一系列基本的硬件初始化工作;
  • 将自身拷贝到SDRAM中,RAM中的 Boot Loader 继续执行,为操作系统的运行做好环境准备,并将外部存储器中的操作系统内核映像及根文件系统映像拷贝到内存中的代码,数据空间,设置内核启动参数;
  • 跳转至内核入口地址开始执行。
2️⃣裸机

直接部署在嵌入式硬件上的软件称为裸机代码,或裸机(应用)软件。一般来说都是些无限循环结构,比如空调、冰箱等嵌入式系统。通过板级支持包BSP,向下屏蔽硬件的细节,向上提供统一的服务和接口。没有操作系统,通过中断来实现多任务运行。

☞ Linux系统启动过程

计算机接通电源上电后,需要经过BIOS加电自检、MBR系统引导、加载内核三步之后,操作系统才会启动。

1️⃣BIOS加电自检
  • BIOS全称 Basic Input/Output System,即基本输入输出系统,它是一个被永久刻录在ROM中的软件,加电自检是指 Power On Self Test,POST,属于BIOS的主要组成部分。
  • 计算机在接通电源后,BIOS通过POST来加载硬件信息,进行内存、CPU、主板等检测,如果硬件设备正常工作,BIOS会寻找硬盘第一个扇区中存储的数据,并使用MBR中的数据激活引导加载程序。
2️⃣MBR系统引导
  • MBR全程 Master Boot Recode,是一种磁盘分区格式,也是以此种格式的磁盘中0盘片0扇区中存储的一段记录——主引导记录。磁盘中扇区的大小为512byte,主引导记录MBR占据第一个扇区的前446字节,剩余的空间依次存储一个64字节的磁盘分区表,和一个用于标识MBR是否有效的2字节的模数。
  • 主引导记录MBR中包含一个实现引导加载功能的程序——Boot Loader。由于BIOS只能访问很少量的数据,所以MBR中的引导加载程序其实只是一段初始程序的加载程序 Initial Program Loader,IPL,这段程序唯一的功能就是定位并加载 Boot Loader 的主体程序。
  • 加载引导分为两个阶段
    • 第一阶段,BIOS引导IPL获取 Boot Loader 主题程序在磁盘中的位置,此时系统启动的控制权由BIOS转移到MBR;
    • 第二阶段,Boot Loader 主题程序与操作系统对应的内核,定位到内核文件所在的位置,并将其加载到计算机内存中,此时系统启动的控制权由MBR转移到内核。
3️⃣加载内核
  • 内核是操作系统的核心,Linux操作系统的内核就是Linux。内核以一种自解压的压缩格式压缩,它与一个初始化的内存映像和存储设备映像表一起存储在 /boot 目录下。
  • 在选定的内核被加载到内存中并开始执行前需要先从压缩格式中解压,一旦内核自解压完成,systemd进程(也就是早期版本中的init进程)便被启动。
  • systemd进程的启动标识着引导过程的结束,也标识着启动过程的开始。在系统启动之初,由于系统中没有除systemd之外的程序执行,系统初始化工作尚未完成,因此计算机不能执行任何和用户相关的功能性工作。
  • 系统初始化需要进行挂载文件系统、启动后台服务等等一系列工作,这些初始化工作全部由systemd进程完成。对于用户来说,系统初始化完成后,系统才算正式启动。
4️⃣附:init进程启动级别

系统启动流程:
BIOS → MBR → boot loader → kernel → init
BIOS → MBR → GRUB → kernel → init

  • BIOS:找到启动介质 - 移动硬盘、磁盘、U盘等,找到启动介质后读取其中的第一个扇区;
  • MBR:第一个扇区(512字节)称为主引导记录。主引导记录分为3部分,前446byte是引导信息,后64byte是磁盘分区信息,最后2byte是标志位。MBR的作用是找到 boot loader 。
  • GRUP:是一种 boot loader ,用于加载kernel核心信息。
  • kernel:内核。
  • init:内核的第一个程序,分为7个启动级别。

查看启动级别配置文件

cat /etc/inittab  #查看启动级别相关的配置文件

inti命令可以切换系统的启动级别

inti 0/1/2/3/4/5/6
  • 0表示关机(不能设置为开机默认启动级别)
  • 1表示单用户
  • 2表示多用户(无网络的3级别)
  • 3多用户(命令行模式,字符终端)
  • 4用于开发
  • 5图形界面,默认启动方式
  • 6reboot(不能设置为开机默认启动级别)
runlevel   #查看系统的启动级别

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

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

相关文章

学习JAVA的第十二天(基础)

算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述 解决问题的策略 机制。 查找算法 基本查找(顺序查找) 关键: 从0索引开始依次向…

学习:吴恩达:什么是神经元?神经网络如何工作?

学习-吴恩达《AI for everyone》2019 深度学习非技术解释 第2部分 可选.zh_哔哩哔哩_bilibili 深度学习Deep learning 人工神经网络Artificial Neural network 什么是神经网络? 只有一个神经元 4个神经元的神经网络 神经网路的绝妙之处 神经网路的绝妙之处就在…

ctf_show笔记篇(web入门---信息收集)

目录 信息收集 1-2:查看源代码 3:bp抓包 4:robots.txt(这个文件里会写有网站管理者不想让爬虫的页面或其他) 5:网站源代码泄露index.phps 6:同样也是源码泄露,(拿到…

Java快读

java的快读 (1)BufferedReader BufferedReader br new BufferedReader(new InputStreamReader(System.in));//定义对象String[] strings br.readLine().split(" ");//读取一行字符串,以空格为分隔转化为字符串数组int n Integer.parseInt(strings[0])…

k8s分布式图床(k8s,metricsapi,vue3+ts)

image-manage 图像管理应用 图像管理应用提供了一个方便管理图片的平台,支持单机和Kubernetes集群部署。请确保您至少拥有一个MySQL数据库和一个Redis数据库,以及一个至少为Kubernetes 1.29版本的集群(如果选择集群部署)。 文档…

PCL1.14.0安装、使用教程

写在前面 本文内容 本文是PCL1.14.0在Windows下的安装、使用教程; PCL、Open3D其他版本的编译和使用相关教程见 各个版本的Open3D、PCL的编译、使用教程平台/环境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode转载请注明出处&#xff…

http和https的区别是什么?

–前言 传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 一、传输信息安全性不同 1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。 2、h…

关于django makemigrations/migrate在生成数据表上遇到的一些问题

当你删除了生成的 migration 文件夹,将数据库从 SQLite 切换到 MySQL,并且在执行 makemigrations 命令时显示没有变化,同时 MySQL 中没有生成表,可能是由于以下原因造成的: Django迁移系统的工作方式:Djang…

排序(3)——直接选择排序

目录 直接选择排序 基本思想 整体思路(升序) 单趟 多趟 代码实现 特性总结 直接选择排序 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的…

软考 系统分析师系列知识点之详细调查(3)

接前一篇文章:软考 系统分析师系列知识点之详细调查(2) 所属章节: 第10章. 系统分析 第2节. 详细调查 在系统规划阶段,通过初步调查,系统分析师已经对企业的组织结构、系统功能等有了大致的了解。但是&…

力扣203移除链表元素

题目: 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 1,设置一个头节点,统一操作。 2,这里是用p查找,但是…

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件,是一个.pcap文件 3.放在wireshark中,仔细观察数据流,会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式,接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…

查看端口占用命令

fuser 8080/tcp netstat -tuln | grep 8080 lsof -i:8080 ss -tuln | grep 8080

在Linux上使用通用二进制包安装MySQL

下载安装包 MySQL Community Downloads 安装依赖 mysql 数据目录初始化及服务启动阶段依赖libaio,检测是否已安装libaio dnf install libaio解压安装 ## 创建用户组 groupadd mysql ## 创建用户 useradd -r -g mysql -s /bin/false mysql ## 解压安装包 tar xv…

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据,对客户进行分类对不同类别的客户进行特征分析&#xf…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前,调研过浮点数与整数之间的双射问题: win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准,也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术,据说这本书中也有讨论。 参考&…

电商数据分析13——电商平台退货率分析与降低策略

目录 写在开头1. 退货率分析的重要性1.1 退货现象的影响1.2 退货数据的收集与分析 2. 数据分析揭示的主要退货原因2.1 产品描述不准确2.2 物流配送问题2.3 产品质量问题 3. 基于数据分析的退货率降低策略3.1 优化产品描述和图片3.2 改进物流配送服务3.3 加强质量控制和售后服务…

抖音视频批量采集软件|视频评论下载工具

在日常工作中,需要频繁下载抖音视频,但逐个复制分享链接下载效率太低?别担心!我们推出了一款专业的抖音视频批量采集软件,基于C#开发,满足您的需求,让您通过关键词搜索视频并自动批量抓取&#…

力扣每日一题 受限条件下可到达节点的数目 DFS

Problem: 2368. 受限条件下可到达节点的数目 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {int ans 0;boolean[] set;List<Integer>[] es;publ…

Unity中URP下实现水体(C#动态生成渐变图)

文章目录 前言一、Shader部分1、申明水渐变图纹理和采样器2、在片元着色器&#xff0c;进行纹理采样&#xff0c;并且输出 二、C#脚本部分1、我们新建一个C#脚本2、我们定义两个变量3、在Start内&#xff0c;new 一个Texture2D(宽&#xff0c;高)4、定义一个Color[宽*高]的颜色…