一、实模式与保护模式鸟瞰

我这人喜欢直面问题,其实本章只需要搞明白三个主要问题就行了,

  • 什么是实模式和保护模式,
  • 实模式与保护模式的区别是什么,
  • 怎么进入保护模式。

我先来简单阐述下这三个问题

什么是实模式和保护模式

Intel 8086 是一个由 Intel 于 1978 年所设计的 16 位微处理器芯片,是 x86 架构的鼻祖。紧接着 Intel 又推出了第一款 32 位的 cpu Intel 80286(很快被淘汰,80386更经典一些),这款 cpu 由于和之前有很多不同的“保护”特性,所以称为保护模式,也是与此同时,之前的 8086 这个 16 位 cpu 才有了实模式的叫法。

所以什么是实模式和保护模式,其实就是 Intel 给自己的处理器特性命的一个名字而已,具体有哪些特性那就是细节问题了,但最起码有一点刚刚已经有所透露,那就是保护模式至少是 32 位的,而实模式是 16 位的(即使一个 32 位的 cpu 也有实模式)

实模式与保护模式的区别是什么

1.实模式 16 位,保护模式 32 位
2.实模式下的地址是段寄存器地址偏移4位+偏移地址得到物理地址。保护模式下段寄存器存入了段选择子,在段描述符表中寻找段基址,再加上偏移地址得到物理地址(开启分页下为逻辑地址)

这个我觉得是 1 的推论,就是实模式寻址空间是 1M,保护模式是 4G
这个我觉得是 2 的推论,就是段描述符表记录了段的权限,改变了实模式下可以随意访问所有内存的隐患(这也是保护这两个字的体现)

怎么进入保护模式

进入保护模式有三步:

1.打开 A20
2.加载 gdt
3.将 cr0 的 pe 位置 1(cr0是GDT表中的字段属性名)

可以看出进入保护模式的操作是很简单的,但提前要做好准备工作,最重要的就是 gdt(Global Descriptor Table 全局描述表)的准备。

保护模式与实模式的关键点要理解GDT

所以我们先说一说先什么是段描述符?

在你开机的一瞬间,CPU 的 PC 寄存器被强制初始化为 0xFFFF0。如果再说具体些,CPU 将段基址寄存器 cs 初始化为 0xF000,将偏移地址寄存器 IP 初始化为 0xFFF0,根据实模式下的最终地址计算规则,将段基址左移 4 位,加上偏移地址,得到最终的物理地址也就是抽象出来的 PC 寄存器地址为 0xFFFF0。

这种段基址左移 4 位,加上偏移地址,得到物理地址的方式,就是实模式下的地址转换方式。

然而保护模式下不一样了
在保护模式下,段基址寄存器中存的数据,被理解为==段选择子,根据这个值去我们自己在内存中写好的段描述符表中找,找到对应的段描述符,从中取出段基址。用这个段基址加上偏移地址,最终得到物理地址(逻辑地址和页表的事以后再说,不冲突)。

那自然就有两个问题,一个是段描述符表长什么样子呀?决定了我们往内存中写的数据结构是什么。另一个就是去哪找段描述符表压,这个就需要告诉 cpu 为我们提前预留好的寄存器,也就是 lgdt 指令。下面我们就分别看着两个问题

段寄存器中16位2字节段选择子的结构如下


段描述符表长什么样子
首先段描述符表是一张表,在内存中也就是个数组,是一个个的段描述符一个个紧挨着的结果。所以我们要了解段描述符长什么样就好了

对于一个段寄存器描述的一个段,该段具有段属性Attribute段基址Base以及段限长Limit,段寄存器中能看到的16位段选择子就是为了能够查找上述三个属性

【操作系统 3.了解实模式与保护模式的区别】相关推荐

  1. 操作系统学习:实模式进入保护模式

    本文参考书籍 1.操作系统真相还原 2.Linux内核完全剖析:基于0.12内核 3.x86汇编语言 从实模式到保护模式 ps:基于x86硬件的pc系统 保护模式相关介绍 从实模式进入保护模式其实经历 ...

  2. 操作系统引导--从实模式到保护模式

    从开始到保护--系统开机引导 ------没有一个文档能写的通俗易懂,我希望写出来. 开机引导和实模式: 两个星期加上假期吐血整理,所述为计算机的开机引导,其中包括一系列计算机内存设置等等,由于没有老 ...

  3. x86从实模式到保护模式 pdf_【自制操作系统04】从实模式到保护模式

    通过前三章的努力,我们成功将控制权转交给了 loader.asm 这个程序.具体说就是 bios 通过加载并跳转到 0x7c00(IMB大叔们定的) 把控制权转交给了我们操作系统的第一个汇编程序 mb ...

  4. 3.操作系统——CPU的实模式、保护模式和长模式

    有实模式.保护模式.长模式 实模式16(实地址模式) 真实分为两个方面: 运行真实指令.不区分指令动作,只是直接执行指令的真实功能 发往内存的地址是真实.不加限制的. 总结来说就是,这个模式下直接往物 ...

  5. (操作系统开发)从实模式---->保护模式---->IA-32e模式( 64位模式)

    实模式和保护模式都是CPU的工作模式. 实模式与保护模式介绍 在实模式下,程序可以操作任何地址空间,而且无法限制程序的执行权限.尽管这种模式给设置硬件功能带来许多方便,但却给程序执行的安全性和稳定性带 ...

  6. 操作系统:浅谈实模式,保护模式与长模式

    学习了操作系统的实模式.保护模式与长模式,此文作为回顾. x86 CPU 在第一次加电和每次 reset 后,都会自动进入实模式,要想进入保护模式,就需要程序员写代码实现从实模式切换到保护模式. 一. ...

  7. 实模式和保护模式区别及寻址方式

    64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很长一段时间里都没真正的明白它们的内含,更别说为 ...

  8. 《x86汇编语言:从实模式到保护模式》读书笔记之后记

    本来打算把整本书的读书笔记写完,可是由于有其他的计划(就叫做"B计划"吧)且优先级更高,所以我的读书笔记搁浅了.为了全力以赴执行B计划,我的博客要荒芜一段时间(我希望不要永远荒芜下 ...

  9. 任务切换——《x86汇编语言:从实模式到保护模式》读书笔记38

    任务切换--<x86汇编语言:从实模式到保护模式>读书笔记38 本文及后面的几篇博文是原书第15章的学习笔记. 本章依然使用第13章的主引导程序. 1. 协同式多任务与抢占式多任务 有两种 ...

最新文章

  1. 如何理解和评价机器学习中的表达能力、训练难度和泛化性能
  2. WPF-数据绑定:日期时间格式
  3. 大数据之mongodb -- (2)java集成 MongoDB 3.2,使用Spring-data-mongodb进行集成
  4. 内存不能为read进不去桌面_四级报名进不去怎么办
  5. HTML5锤子官网,美国ESTWING 一体化锻造羊角锤 非常好用的锤子
  6. 朋友圈新增访客记录?大众点评辟谣”被放弃”;百度 7 款 APP 进入 App Store 前十 | 极客头条...
  7. 预测自适应滤波_使用自适应滤波的时间序列预测
  8. 银联的支付创新产业基地将落户安徽合肥 投资达80亿
  9. R语言学习笔记 | R语言的入门
  10. jxls对比_13、进阶之Jxls2与Jxls1的历史问题
  11. Python文本加密 或 文本文件加密
  12. var,let const,const 变量提升
  13. python 基因测序_科学网-python3 计算 基因组测序结果文件 各碱基数目(个人练习)-靳泽星的博文...
  14. 要取好名字的来这儿!哈哈
  15. 麦克风MIC 工作原理以及灵敏度调整
  16. 5V开关电路应用设计
  17. 边缘检测的评价指标:PR曲线,OIS,ODS,AP的计算与代码实现
  18. 学习也是一种兴趣爱好
  19. D神文木源:创业和做生意不同,区块链现在没有什么创业精神
  20. 自定义控件实现(淘宝头条/京东快报)垂直循环滚动栏目

热门文章

  1. android pad office,安卓平板电脑也可以使用Office应用了
  2. 宝塔Linux苹果cms安装,苹果CMS V10 全站伪静态教程 伪静态规则分享 宝塔Linux系统...
  3. 考研计算机专业学校选择,关于学校的选择问题:计算机专业_跨考网
  4. 论文——多指标与机器学习算法相结合的中国县级玉米产量早期预测
  5. php checkmobile,如何在php中檢查請求是來自移動設備還是計算機
  6. 近期iOS开发者问题全面答疑(3)
  7. FP-Growth关联分析算法在网络监控领域的应用
  8. 机器学习之ID3算法(小白入门级别)
  9. 【论文阅读】Oriented R-CNN for Object Detection
  10. 美国大学生足球联赛数据集football——DeepWalk算法