从开机开始

1. 开机之后,计算机干了什么?

  • 加载BIOS:计算机通电后,基本输入/输出系统(BIOS)会首先运行。BIOS是一个固件程序,它位于计算机主板上的芯片中,并负责初始化硬件设备、检测和解决问题以及执行其他预启动任务。
  • 加载引导程序:BIOS会加载引导程序,引导程序是操作系统的一部分,负责启动操作系统。引导程序通常被存储在硬盘驱动器的引导扇区中,并根据系统配置进行加载。
  • 加载操作系统:引导程序会加载操作系统内核并将控制权交给操作系统。操作系统内核是操作系统的核心部分,它负责管理计算机的硬件、软件和资源,并提供各种系统服务。
  • 初始化硬件设备:操作系统内核会初始化计算机的硬件设备,包括CPU、内存、硬盘驱动器、键盘、鼠标等。
  • 启动系统服务:操作系统内核会启动各种系统服务,如网络服务、文件系统服务、安全服务等。
  • 启动用户界面:操作系统内核会启动用户界面,如登录屏幕或桌面环境,以便用户可以使用计算机。
    关键词:引导程序

2. BIOS是如何得知引导程序位置并加载引导程序的?引导程序是什么,它是如何工作的?

  • 在计算机启动之后,bios会按照顺序检查计算机中的硬件设备,直到找到包含MBR的硬件设备。MBR 叫做主引导记录,它通常位于磁盘的一个物理扇区(并不是绝对的)。MBR 的大小为512个字节,它最后两个字节为0x55AA,bios会通过结尾字节来判断它的有效性。引导程序在MBR的代码段,即MBR的前446个字节。bios找到MBR后会将MBR的代码段加载到内存中,并且运行引导程序。
  • 引导程序是用来加载系统内核到内存中,并将控制权交给内核的一段MBR中的程序。引导程序会加载同在MBR上的分区表,从而确定内核文件所在的分区和具体位置。找到内核文件后,引导程序会将内核加载到内存中并且将控制权交给内核。至此,引导程序的工作完成。

3. GPT分区是如何加载引导程序的?

GPT分区表中的UEFI系统引导程序与MBR分区表中的传统引导程序不同,UEFI引导程序市存储在磁盘上的EFI系统分区中的,而不是存储在磁盘的MBR中的。
引导程序
使用DiskGenius可以看到在磁盘中有一个ESP系统分区,该分区中的一个Boot文件夹中有引导程序文件 bootx64.efi。

4. linux中的MBR和引导程序

Linux-0.11 中使用的引导程序就是位于boot文件夹下的bootsect.s文件。该文件是一个汇编语言源代码文件。通过编译,这个文件会被编译成二进制文件,存放在启动区的第一扇区。bootsect.s包含了引导程序代码、硬件配置代码和错误处理代码。

5. linux 0.11版本的引导程序

在Linux-0.11版本中,引导程序位于boot目录下的bootsect.s。
引导程序
下面看一下bootsect.s:

SETUPLEN = 4				; nr of setup-sectors
BOOTSEG  = 0x07c0			; original address of boot-sector
INITSEG  = 0x9000			; we move boot here - out of the way
SETUPSEG = 0x9020			; setup starts here
SYSSEG   = 0x1000			; system loaded at 0x10000 (65536).
ENDSEG   = SYSSEG + SYSSIZE		; where to stop loadingentry start
start:mov	ax,#BOOTSEGmov	ds,axmov	ax,#INITSEGmov	es,axmov	cx,#256sub	si,sisub	di,direpmovwjmpi	go,INITSEG
go:	mov	ax,csmov	ds,axmov	es,ax
; put stack at 0x9ff00.mov	ss,axmov	sp,#0xFF00		; arbitrary value >>512

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

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

相关文章

106、基于STM32单片机万年历闹钟温度LCD1602系统设计(程序+原理图+PCB源文件+参考论文+开题报告+硬件设计资料+元器件清单等)

摘 要 本文介绍了基于STM32单片机的多功能电子万年历的硬件结构和软硬件设计方法。本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。系统以STM32单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、…

Redis缓存同步1-策略介绍

缓存数据同步策略示意图 在大多数情况下,我们通过浏览器查询到的数据都是缓存数据,如果缓存数据与数据库的数据存在较大差异的话,可能会产生比较严重的后果的。所以,我们应该也必须保证数据库数据、缓存数据的一致性,…

Django_MVT(二)

目录 一、MVT简介 二、M-模型类 1. 定义模型类 2. 迁移 2.1 生成迁移文件命令如下: 2.2 执行迁移命令如下: 3. 数据基础操作 三、V-视图 1.定义视图 2.配置URLconf 访问服务器 四、T-模板 创建模板文件 定义模板 视图调用模板 视图调用模…

Ubuntu 的移动梦醒了

老实讲,移动版 Ubuntu 在手机、平板上的发展自始至终可能都没有达到过 Canonical 的期望,既然如此,不再勉为其难地坚持下去,或许才是更加明智的做法。 时至今日,官方显然也意识到了这一点,在早些时候发布的…

Linux安装配置Oracle+plsql安装配置(超详细)

注意:本文有大量的界面截图,如观看效果不佳可前往文字版: Linux安装配置Oracleplsql安装配置(详细)_超爱慢的博客-CSDN博客 目录 1 安装虚拟机系统 1.1 安装虚拟机 2.配置虚拟机 2.1 设置机器名 2.2 修改域名映射…

【编译原理】词法分析程序设计(C语言)

目录 一、实验内容二、实验原理三、结果分析四、源代码一、实验内容 给定下表所示的一个简单语言的词法规则描述完成以下任务: (1)画出识别该语言词法规则的状态转换图; (2)依据状态转换图,设计并编制词法分析程序,实现从输入源程序中,识别出各类单词,即关键字、标识…

keepalived

文章目录 一、suse系统安装keepalived1.1、准备环境1.2、修改主机名1.3、关闭防火墙1.4、配置网络1.5、配置 yum 源1.6、安装 mysql1.7、安装 keepalived报错信息:使用 wget 下载keepalived 报错解决 使用 wget 下载 keepalived的报错 一、suse系统安装keepalived …

Oracle表空间和用户

Oracle表空间和用户 前言 1、创建表空间 2、 删除表空间 3、创建用户 4、用户赋权限 5、Oracle三个重要的角色 1、创建表空间 ORACLE 数据库的逻辑单元。 一个表空间可以与多个数据文件(物理结构)关联 一个数据库下可以建立多个表空间,一个表…

什么是操作系统

操作系统(Operating System) 什么是操作系统 操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等 操作系统的定位 操作系统的基本功能 操作系统由…

Vue3setup的参数说明

setup的两个参数 setup包含两个参数&#xff0c;一个为props、一个为context &#xff08;均为形参&#xff09; props&#xff1a;值为对象&#xff0c;包含&#xff1a;组件外部传递过来&#xff0c;且组件内部声明接收了的属性。context&#xff1a;上下文对象 <scrip…

基于springboot+Redis的前后端分离项目之消息队列(六)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 秒杀优化、消息队列 秒杀优化1 秒杀优化-异步秒杀思路2 秒杀优化-Redis完成秒杀资格判断3 秒杀优化-基于阻塞队列实现秒杀优化 Red…

MySQL第三天(简单单表查询)

前言 今天的三个题目是针对于单表查询和多表查询的课后作业&#xff0c;针对于初学者还是很合适的听有用处的&#xff0c;我会把我的答题过程一步一步写出来&#xff0c;有需要的小伙伴可以参考哦… 第一题、单表信息查询 题目代码如下&#xff1a; 作业&#xff1a;1.创建表…