当前位置: 首页 > news >正文

进入保护模式

Intel CPU启动的时候是16位(实模式), 但是我们要工作在32位模式下

实模式下没有任何保护措施, 别人可能通过给数据段寄存器赋值上代码段地址, 然后来改变代码段的内容,

保护模式访问内容会检查权限之类的, 也会检查程序访问的内存范围是不是超了, 我们这个操作系统不会利用保护模式所有的特性, 我们只会利用其中一部分

实模式到保护模式, CPU不会自动切换到这样的状态, 我们需要通过一些设置, 最核心的是要给其一个GDT表

Snipaste_2024-12-07_23-52-34

第二个:需要改一个寄存器(进入保护模式), 将其置一, 然后需要改一下段寄存器(比实模式复杂多了)这里的设置, 保护模式是放的是GDT表里面的索引, 当CS=8,就会到GDT表==对应的表项里面(这里存疑)==找第8个字节处, 然后有一个内核代码段的描述结构体, 然后这个结构体里面会指定(在线性空间里面)这块空间的起始地址是多少, 整块的大小是多少, 以及你要访问这一块的代码的时候, 一个具备什么样的权限

数据也是通过选择子(索引),

更正图的部分结构

Snipaste_2024-12-07_23-57-48

我们后面在代码中会自己定义GDT表,然后将其起始地址给到GDTR中, 让硬件知道表在这里,

如果检查这个结构体发现你权限不够, 或者越界CPU就会进入异常


http://www.mrgr.cn/news/79392.html

相关文章:

  • 【Rive】Android与Rive交互
  • React框架:解锁现代化Web开发的新维度
  • 数据集搜集器(百科)016
  • 【jvm】内存溢出内存不够的原因
  • jQuery UI 小部件方法调用
  • 链式设计模式——装饰模式和职责链模式
  • 【Linux】防火墙
  • 代码随想录算法训练营day50|动态规划12
  • Codeforces Round 991 (Div. 3)
  • 【C语言】C语言的变量和声明系统性讲解
  • 重磅更新:CnosDB 2.3.5.4 版本上线, 性能提升,问题修复一网打尽
  • 吉他初学者学习网站搭建系列(9)——如何用coze做一个网站助手
  • 事件循环(eventloop)
  • PySpark3.4.4_基于StreamingContext实现网络字节流中英文分词词频累加统计结果保存到数据库中
  • 游戏引擎学习第36天
  • Spring事务实现原理
  • 公共云提供商正在错失人工智能机遇
  • Linux 进程 ID(PID)查看 / 获取
  • 在做题中学习(77):快排
  • 万物可爬(以爬取浏览器井盖图片和豆瓣电影名字为例)
  • Next.js 系统性教学:构建应用的路由与页面管理
  • jeecg-uniapp 跨域问题解决方法记录
  • Let up bring up a linux.part2 [十一]
  • Codeforces Round 991 (Div. 3) F. Maximum modulo equality(区间gcd模板)
  • 《单片机原理及接口技术》(C51编程)(第三版)------张毅刚主编
  • Java线程的interrupt中断、wait-notify/all(源码级分析)