手写操作系统 - CPU段页门

前言

  1. 为什么要知道CPU的段页门
  2. 如何控制CPU由实模式进入保护模式
  3. CPU是如何找到数据并读写的?CPU是如何找到代码并执行的?

整体流程:

mov eax, [0x100] 为例,其将0x100内存中得数据复制到eax寄存器当中。

在这里插入图片描述
需要了解的知识点:

  • 内存地址中逻辑地址、线性地址和物理地址之间的联系

    • 逻辑地址:看到的所有的内存地址;
    • 线性地址:线性地址 = 段基址 + 逻辑地址
      没有启用分页机制的情况下,线性地址与物理地址相同
      开启后线性地址 -> MMU -> 物理地址;
    • 物理地址:物理内存的地址 ;
  • 运行模式
    从开机到达64位长模式(Long Mode),需要经过实模式(Real Mode)保护模式(Protected Mode),以及在某些情况下的兼容模式(Compatibility Mode)

    • 实时模式(16位):1MB的内存地址空间,并且没有硬件级别的内存保护,20根地址总线,但是寄存器是16位的;
    • 保护模式(32位):内存的访问(高达4GB),硬件级别的内存保护,以及多任务功能。
    • 兼容模式(32位):用于支持旧的32位操作系统和应用程序,它在64位处理器上允许运行未修改的32位代码。
    • 64位长模式 (64位):允许访问远大于4GB的物理和虚拟内存。
  • 虚拟内存

    • 兼容模式和长模式一定要开虚拟内存;
    • 保护模式可以开可以不开。

1、为什么要知道CPU的段页门

  • 什么是段,就是你经常听到的:代码段、数据段
  • 什么是页,就是你经常听到的:虚拟内存,又叫CPU分页机制
  • 什么是门,与你经常听到的用户态切内核态有关
    • 四种门:中断门、调用门、任务门、陷进门
    • 快速调用:sysenter/sysexit、syscall/sysret
  • 想让CPU由实模式进入包含模式,必须构建段

2、如何控制CPU由实模式进入保护模式

  1. 配置GDT表,至少包含一个代码段一个数据段
  2. 开A20总线
  3. 设置控制寄存器CR0
  4. 设置段寄存器

3、CPU是如何找到数据并读写的?CPU是如何找到代码并执行的?

mov eax, [0x100] 为例,其将0x100内存中得数据复制到eax寄存器当中。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值