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

这篇具有很好参考价值的文章主要介绍了从按下电源键到进入系统,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在干嘛?

文心一言文章来源地址https://www.toymoban.com/news/detail-672825.html

到了这里,关于从按下电源键到进入系统,CPU在干什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】什么是Docker,它用来干什么

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到

    2024年02月07日
    浏览(50)
  • WAF是干什么的 有哪些功能

    Web应用防火墙简称:WAF(Web Application Firewall,Web应用防火墙),很多人不了解WAF是干嘛的,WAF的功能有哪些,以及WAF的应用场景!接下来小情给大家说一说! WAF是Web应用防火墙(Web Application Firewall)的简称,Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为W

    2024年02月15日
    浏览(52)
  • 国外的大龄程序员在干什么?

    在Quora有个帖子: 我今年35岁了,是不是太老了,没法加入Google, Facebook, Microsoft 或者 Apple了? 下面的回复让人叹为观止,我摘录几个: 萨特南·辛格  Google软件工程师 (2017–present) 不,我在51岁的时候加入了Google ,我们团队还有几个比我年长的人!他们都是非常卓越的软件

    2024年02月05日
    浏览(39)
  • 服务器是什么?它是用来干什么的?

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注   目录 一、服务器是什么? 二、服务器的作用 1、提高访问速度 2、提高安全性 三、云服务器与物理服务器 1、云服务器 云服务器的优点: 2、物理服务器 物理服务器的优点:

    2024年02月08日
    浏览(57)
  • 什么是tomcat?tomcat是干什么用的?

    什么是tomcat Tomcat是常见的免费的web服务器. Tomcat 这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立生活。 Tomcat的作者,取这个名字的初衷是希望,这一款服务器可以自力更生,自给自足,像Tomcat这样一种野生动物一般,不依赖其他插件,而可以独立达到提供

    2023年04月11日
    浏览(50)
  • xml中的vo是干什么用的

    在Java中,VO(Value Object)是一种常见的设计模式,用于表示纯粹的数据对象。VO 通常用于在不同层或模块之间传递数据,并且它们的主要目的是封装和组织数据,而不包含业务逻辑。 VO 在Java中的具体作用有以下几个方面: 数据封装:VO 对象用于封装一组相关的数据字段。它

    2024年02月12日
    浏览(39)
  • python cv2是什么,可以用来干什么

    OpenCV (Open Source Computer Vision Library) 是一个流行的开源计算机视觉库,提供了丰富的图像和视频处理功能。通过使用 OpenCV 的 Python 绑定库 cv2,可以实现以下一些功能: 图像读取和显示:使用 cv2.imread() 读取图像文件,使用 cv2.imshow() 显示图像窗口。 图像处理:包括图像滤波、

    2024年02月14日
    浏览(44)
  • SpringBoot 配置文件:什么是配置文件?配置文件是干什么?

    学习一个东西,我们先要知道它有什么用处。整个项目中所有重要的数据都在配置文件中配置,例如:数据库的连接信息、项目启动窗口、第三方系统调用密钥、日志等级…,如果没有配置信息,那么 SpringBoot 项目就无法连接数据库,不能保存关键日志,因此,在项目中,配

    2024年02月16日
    浏览(44)
  • 阿里云2核2G服务器可以干什么?

    阿里云2核2G服务器可以干什么?2核2G云服务器可以用来搭建网站、爬虫、邮件服务器、接口服务器、个人博客、企业官网、数据库应用、大数据计算、AI人工智能、论坛、电子商务、AI、LLM大语言模型、测试环境等,目前2核2G阿里云服务器61元一年,老用户99元一年,优惠活动

    2024年04月22日
    浏览(46)
  • 数字IC设计工程师一般都干什么

    简单来说,数字IC设计工程师一般就是负责写verilog代码(当然,不是仅仅写个代码)。本文主要对数字IC设计的工作流程进行简单的介绍,也算是对我从业一年来的总结。 一般来说,数字IC设计的工作流程如下: 算法文档学习(搞清楚你负责的功能):先由算法的同事给出详

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包