从按下电源键到进入系统,CPU在干什么?

本专栏更新速度较慢,简单讲讲计算机的那些事,简单讲讲那些特别散乱杂的知识,欢迎各位朋友订阅专栏

非常感谢一路相伴的大佬们

浅淡计算机系列第2篇


目录

通电

保护模式和实模式

 内存管理单元MMU

逻辑地址?物理地址? 

段与基址

执行

MBR

操作系统

结语

快捷翻页

参考文章


通电

只要一通电,电路就会启动自检工作,把所有的寄存器全部重置,如果哪里有异常的话,就会把错误记录到EAX寄存器中,如果发现EAX的值不是0,那就不好了

一般开机的时候寄存器的值长这个样子

EAX,EBX, ECX, ESI, EDI, EBP, ESP: 0x00000000
EFLAGS: 0x00000002
CS: 0xF000
EIP: 0xFFF0
······

CS和IP这两个寄存器会决定CPU一会从哪里执行代码

CPU一般都是工作在保护模式下,使用虚拟地址来访问内存,由内存管理单元MMU负责给转换成真实的物理地址

不过在刚刚开机的时候,虚拟地址翻译所需要的页目录、页表这些信息都还没准备好,MMU还没法工作,这时候只能使用16位的寄存器,工作在实地址模式下,使用段+基址的方式来和内存读写,最多只能使用1MB的内存空间

这里来解释一下刚才涉及的知识点

保护模式和实模式

这个对于完全不懂的人解释起来太复杂了,但按照惯例,先放干货(这里引用cqwei1987大佬的文章《实模式和保护模式的区别》):

实模式:

它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂(1M)的可访问内存空间(物理内存和BIOS-ROM),软件可通过这些地址直接访问BIOS程序和外围硬件。实模式下处理器没有硬件级的内存保护概念和多道任务的工作模式。但是为了向下兼容,所以80286及以后的x86系列兼容处理器仍然是开机启动时工作在实模式下。80186和早期的处理器仅有一种操作模式,就是后来我们所定义的实模式。实模式虽然能访问到1M的地址空间,但是由于BIOS的映射作用(即BIOS占用了部分空间地址资源),所以真正能使用的物理内存空间(内存条),也就是在640k到924k之间。1M地址空间组成是由16位的段地址和16位的段内偏移地址组成的。用公式表示为:物理地址=左移4位的段地址+偏移地址。

实模式寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。

保护模式:

286处理器体系结构引入了地址保护模式的概念,处理器能够对内存及一些其他外围设备做硬件级的保护设置(保护设置实质上就是屏蔽一些地址的访问)。

保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。

两者区别在cqwei1987大佬的文章中讲的很详细,这里举个简单易懂的例子:

保护模式就像一家高档餐厅,顾客在这里可以享受更加细致的服务和更加精致的美食。高档餐厅的菜品通常需要更多的时间和精力来准备,而且餐厅会为顾客提供更加周到的服务,确保顾客的用餐体验更加舒适和安全

实模式则像一家快餐店,顾客在这里可以快速地买到食物并离开。快餐店的菜品通常不需要太多的时间和精力来准备,而且餐厅也不会为顾客提供太多的服务。实模式下的计算机就像快餐店一样,可以快速地启动并运行程序,但功能和安全性都相对有限

 内存管理单元MMU

内存管理单元是计算机硬件的一部分,负责处理CPU的内存访问请求
MMU是Memory Management Unit的缩写,有时也称作分页内存管理单元(Paged Memory Management Unit,PMMU)

MMU通过将逻辑地址转换为物理地址来实现内存管理。它通过将虚拟地址空间映射到物理地址空间,使得多个进程可以同时访问相同的物理地址空间,而不会相互干扰。MMU还负责内存的访问权限管理,确保程序只能访问其被授权访问的内存区域

MMU是现代计算机系统中的重要组成部分,它与CPU紧密配合,提高了系统的性能和安全性

逻辑地址?物理地址? 

比如大家经常看到的,类似于:0x123456789abcdef0的就是逻辑地址

而物理地址则是二进制串,类似于:1010001001100001010011010111100001111111111010000

MMU的工作就是转换逻辑地址与物理地址

段与基址

段指的是内存中连续的存储区域,每个段的起始地址称为段基址,即此段从内存中的哪个地址开始存储。段基址是段的起始地址,但不是物理地址,它是一个线性地址

段基址通常有20位,但在某些操作系统中可能会被压缩到16位

段与基址的关系可以理解为,段是内存中连续的存储区域,而基址是段的起始地址

举个例子:段和基址的概念可以类比于现实中的地址索引方式

假设有一本书或者一篇文章,它被分为若干个章节,每个章节都是一个独立的段落,而每个段落都有一个起始页码。如果我们要引用这本书中的某个段落,我们通常会提供段落名称和页码,页码就是相对于该段落的起始页码的偏移量

例如,如果第一章的起始页码是10,而我们要引用第二章的某个段落,我们可以说“第二章第20页”,这里的20就是相对于第一章起始页码的偏移量

这种分段和偏移量的方式可以帮助我们更灵活地组织和引用文本内容,类似于计算机存储器中的段和基址的组织方式

执行

在开机的时候,内存刚刚通电,应该是空的吧?

在主板上,CPU旁边不远处有BIOS,BIOS是一个ROM芯片,一般一通电他就映射到地址空间中,按照CS:IP(0xF000:0xFFF0)

从F000:FFF0处,也就是0xFFFF0处取到的第一个地址一般是jmp到某处,一般是直接跳转到BIOS中央,BIOS会下达对主板上各单位进行检测,看看有没有异常情况,还有初始化CPU工作需要的中断向量表等等

而在这个时候,其他核心一般都不工作,只有一个核心工作,通常是1核,它会协助引导处理器加载硬件检测、内存初始化等

MBR

BIOS中的启动顺序第一位是硬盘,引导处理器会把第0盘第0道第1扇区的内容读取到了内存中的0x7C00位置,它叫做主引导记录MBR,一共512个字节

MBR是操作系统在安装的时候,写到硬盘里的。这个位置非常重要,假如有病毒占据了这个位置,解决办法只有重装系统

读取到了MBR后,要检查最后两个字节必须是0x55和0xAA,确认正常之后才能认为这是一个合法的MBR,这时会跳到了0x7C00的位置开始执行

操作系统

在操作系统上CPU会使用保护模式工作,MMU仍然没法做地址翻译工作,这时候CPU只能直接使用物理地址跟内存联系,把页目录和页表搞好MMU才可以

当启用内存分页后,MMU就会工作,CPU将可以使用虚拟地址访问内存了

在这之后其它核心就可以投入工作了


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

3000字,7个父项,2个子项,1个孙子项


快捷翻页

UNIX家族?Windows NT家族?一文讲清操作系统繁杂的家族史


参考文章

按下电源后的几秒钟,CPU在干嘛?

文心一言

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

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

相关文章

MyBatis:使用注解让数据库操作更简单

目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中,数据库操作是一个常见而重要的任务。为了方便地执行SQL语句,获取结果集,处理异常等,我们通常需要使用JDBC(Java Database …

【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler 中断处理函数源码分析

【SA8295P 源码分析】25 - QNX Ethernet MAC 驱动 之 emac_isr_thread_handler 中断处理函数源码分析 一、emac 中断上半部:emac_isr()二、emac 中断下半部:emac_isr_thread_handler()2.1 emac 中断下半部:emac_isr_sw()系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章…

POSTGRESQL 如何用系统函数来诊断权限问题

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

酷炫JavaScript 技巧

1.检查元素是否在屏幕可见区域内 我们如何获得元素的点击率? 主要取决于用户点击元素的次数和元素在页面上显示的次数。 我们可以很容易地获取到用户的点击次数,但是如何获取一个元素的显示次数呢? 我们可以通过IntersectionObserver轻松…

2023MySQL+MyBatis知识点整理

文章目录 主键 外键 的区别?什么是范式?什么是反范式?什么是事务?MySQL事务隔离级别?MySQL事务默认提交模式?MySQL中int(1)和int(10)的区别MySQL 浮点数会丢失精度吗?MySQL支持哪几种时间类型&a…

docker 命令

一、docker命令 1、镜像保存 docker save imageid -o modelzoozl.tar #把镜像保存到本地 docker load -i dockername #把tar包load下来,load成镜像 docker export CONTAINERID/CONTAINERNAME -o modelzoozl.tar #把启动着的镜像导出 docker import modelzo…

excel处理公式获得最终值--------------gxl

/*** 读取单元格内容 包括计算公式的结果,引用公式的结果* param cell* return*/public static String getCellValue(Cell cell){System.out.println(cell);String value null;if(cell ! null){System.out.println(cell.getCellType());switch (cell.getCellType()…

【JavaWeb】会话管理

HTTP的基本性质 HTTP是简单的HTTP是可扩展的:HTTP headers让协议的扩展变得容易HTTP是无状态的,有会话的:这意味着服务器不能记住之前的请求或连接状态。每个HTTP请求都是独立的,服务器无法识别该请求是否来自同一个客户端或与之前…

springcloud3 GateWay章节-Nacos+gateway动态路由负载均衡4

一 工程结构 1.1 工程 1.2 搭建gatewayapi工程 1.pom文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--gateway--&g…

java中写入excel类HSSFWorkbook和XSSFWorkbook和SXSSFWorkbook的区别?

在Java中&#xff0c;HSSFWorkbook、XSSFWorkbook和SXSSFWorkbook都是Apache POI库中用于处理Excel文件的类。它们之间的主要区别如下&#xff1a; HSSFWorkbook&#xff1a;它是POI库中处理旧版Excel&#xff08;.xls&#xff09;文件的类。HSSFWorkbook基于OLE2 Compound Doc…

复习之web服务器--apache

PS&#xff1a;Vim复制小技巧 一、实验环境 两台虚拟机 (nodea,nodeb)配置ip搭建软件仓库关闭selinux [rootftp Desktop]# hostnamectl set-hostname nodea.westos.org [rootftp Desktop]# hostname nodea.westos.org [rootftp Desktop]# ifconfig enp1s0: flags4163<UP,B…

大数据开发要学习什么?学完又能做什么

学习大数据需要掌握什么语言基础&#xff1f; 1、Java基础 大数据框架90%以上都是使用Java开发语言&#xff0c;所以如果要学习大数据技术&#xff0c;首先要掌握Java基础语法以及JavaEE方向的相关知识。 2、MySQL数据库 这是学习大数据必须掌握的知识之一。数据的操作语言是…

Vue2向Vue3过度核心技术组件通信

目录 1 组件基础知识scoped解决样式冲突1.1 默认情况&#xff1a;1.2 代码演示1.3 scoped原理1.4 总结 2 组件基础知识data必须是一个函数2.1 data为什么要写成函数2.2 代码演示2.3 总结 3 组件通信3.1 什么是组件通信&#xff1f;3.2 组件之间如何通信3.3 组件关系分类3.4 通信…

为什么使用Nacos而不是Eureka(Nacos和Eureka的区别)

文章目录 前言一、Eureka是什么&#xff1f;二、Nacos是什么&#xff1f;三、Nacos和Eureka的区别3.1 支持的CAP3.2连接方式3.3 服务异常剔除3.4 操作实例方式 总结 前言 为什么如今微服务注册中心用Nacos相对比用Eureka的多了&#xff1f;本文章将介绍他们之间的区别和优缺点…

【element-ui】el-dialog改变宽度

dialog默认宽度为父元素的50%&#xff0c;这就导致在移动端会非常的窄&#xff0c;如图1&#xff0c;需要限定宽度。 解决方法&#xff1a;添加custom-class属性&#xff0c;然后在style中编写样式&#xff0c;注意&#xff0c;如果有scoped限定&#xff0c;需要加::v-deep &l…

浅谈Spark的RDD、部署模式

一、RDD Spark RDD&#xff08;弹性分布式数据集&#xff09;&#xff0c;弹性是指Spark可以通过重新计算来自动重建丢失的分区。 从本质上讲&#xff0c;RDD 是数据元素的不可变分布式集合&#xff0c;跨集群中的节点进行分区&#xff0c;可以与提供转换和操作的低级 API 并行…

到目前为止,所有的关于安卓14的详细介绍

安卓14现在可能已经不远了,谷歌已经进行了五次测试,通常10月份的发布窗口时间很快就会到来。但除了在谷歌I/O 2023上进行简短讨论外,谷歌对正在发生的变化相对沉默。 可以肯定地说,Android 14不会是操作系统有史以来最大的一系列变化,但有很多改进和变化可以让Android保持…

【计算机网络】HTTPs 传输流程

HTTPS和HTTP的区别 1、HTTP协议传输的数据都是未加密的&#xff0c;是明文的&#xff0c;使用HTTP协议传输隐私信息非常不安 HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议&#xff0c;要比http协议安全。 2、HTTPS协议需要到CA申请证书&#xff0c;一般…

qt 的基础学习计划列表

1 第一天 &#xff08;qt 的基础&#xff09; 什么是qt hello程序&#xff0c;空窗口 添加按钮&#xff08;对象树、父子关系&#xff09; 按钮的功能&#xff08;信号和槽&#xff09; 信号和槽的拓展2 第二天 各个控件 最简单的记事本界面&#xff08;菜单栏、状态栏、工具…

apache的ab工具测试网页优化效果速度以及服务器承载

今天为大家介绍一款apache自带的一种的测试网页优化效果速度以及服务器承载的工具——ab.exe。 大家在工作中或者开发中可以使用apache的ab工具来测试自己的网站并发量大小&#xff0c;和某个页面的访问时间。 一、基本用法 如果你是用的是apache的话&#xff0c;那么只要进…