查派网站建设,云南网站开发培训机构,下载官方版微信,wordpress主本专栏更新速度较慢#xff0c;简单讲讲计算机的那些事#xff0c;简单讲讲那些特别散乱杂的知识#xff0c;欢迎各位朋友订阅专栏
非常感谢一路相伴的大佬们
浅淡计算机系列第2篇 目录
通电
保护模式和实模式 内存管理单元MMU
逻辑地址#xff1f;物理地址#xff1…本专栏更新速度较慢简单讲讲计算机的那些事简单讲讲那些特别散乱杂的知识欢迎各位朋友订阅专栏
非常感谢一路相伴的大佬们
浅淡计算机系列第2篇 目录
通电
保护模式和实模式 内存管理单元MMU
逻辑地址物理地址
段与基址
执行
MBR
操作系统
结语
快捷翻页
参考文章 通电
只要一通电电路就会启动自检工作把所有的寄存器全部重置如果哪里有异常的话就会把错误记录到EAX寄存器中如果发现EAX的值不是0那就不好了
一般开机的时候寄存器的值长这个样子
EAXEBX, 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 UnitPMMU
MMU通过将逻辑地址转换为物理地址来实现内存管理。它通过将虚拟地址空间映射到物理地址空间使得多个进程可以同时访问相同的物理地址空间而不会相互干扰。MMU还负责内存的访问权限管理确保程序只能访问其被授权访问的内存区域
MMU是现代计算机系统中的重要组成部分它与CPU紧密配合提高了系统的性能和安全性
逻辑地址物理地址
比如大家经常看到的类似于0x123456789abcdef0的就是逻辑地址
而物理地址则是二进制串类似于1010001001100001010011010111100001111111111010000
MMU的工作就是转换逻辑地址与物理地址
段与基址
段指的是内存中连续的存储区域每个段的起始地址称为段基址即此段从内存中的哪个地址开始存储。段基址是段的起始地址但不是物理地址它是一个线性地址
段基址通常有20位但在某些操作系统中可能会被压缩到16位
段与基址的关系可以理解为段是内存中连续的存储区域而基址是段的起始地址 举个例子段和基址的概念可以类比于现实中的地址索引方式
假设有一本书或者一篇文章它被分为若干个章节每个章节都是一个独立的段落而每个段落都有一个起始页码。如果我们要引用这本书中的某个段落我们通常会提供段落名称和页码页码就是相对于该段落的起始页码的偏移量
例如如果第一章的起始页码是10而我们要引用第二章的某个段落我们可以说“第二章第20页”这里的20就是相对于第一章起始页码的偏移量
这种分段和偏移量的方式可以帮助我们更灵活地组织和引用文本内容类似于计算机存储器中的段和基址的组织方式
执行
在开机的时候内存刚刚通电应该是空的吧
在主板上CPU旁边不远处有BIOSBIOS是一个ROM芯片一般一通电他就映射到地址空间中按照CS:IP0xF000: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在干嘛
文心一言