手写操作系统 - 7.保护模式

103 阅读1分钟

保护模式

B站视频链接 - 【208.保护模式】

  1. 准备GDT(全局描述符表)

  2. 加载GDTR

  3. 设置CR0寄存器

mov eax, cr0
or eax, 1
mov cr0, eax
  1. 跳转到保护模式代码
jmp dword code_selector:offset

保护模式与实模式的区别

  1. 内存寻址方式
  • 实模式: 段基址:偏移地址,最大寻址1MB
  • 保护模式: 通过段选择子和段描述符,最大寻址4GB
  1. 特权级别
  • 实模式: 无特权级别保护
  • 保护模式: 4个特权级别(Ring 0-3)
  1. 内存保护
  • 实模式: 程序可以访问任意内存
  • 保护模式: 具有内存保护机制

注意事项

  • 进入保护模式前需要关中断
  • 需要预先设置好段描述符
  • 跳转后需要重新设置段寄存器