学习了操作系统的实模式、保护模式与长模式,此文作为回顾。

x86 CPU 在第一次加电和每次 reset 后,都会自动进入实模式,要想进入保护模式,就需要程序员写代码实现从实模式切换到保护模式。

一.实模式

早期处理器8086 有 20 根地址线,可以寻址 1MB 内存。但是,它内部的寄存器16 位的,无法在程序中访问整个 1MB 内存。8086CPU将1MB存储空间分成许多逻辑段,每个段最大限长为64KB(但不一定就是64KB)。这样每个存储单元就可以用“段基地址+段内偏移地址”表示段基地址由16位段寄存器值左移4位表达,段内偏移表示相对于某个段起始位置的偏移量。这样就可以访问多达1M的内存。这就是大名鼎鼎的分段内存管理模型。

一个地址有段和偏移两部分组成,物理地址的计算公式为:
    物理地址(physicaladdress)=段值(segment) * 16 + 偏移(offset)
            其中,segment和offset都是16位的。

段寄存器是16位的,在段不重叠的情况下,最多可以将1MB的内存分成65536个段,段地址分别是0000H、0001H、0002H、0003H,……,一直到FFFFH

  在这种模式下,系统计算实际地址的时候是按照对1M求模的方式进行的,这种技术被称为wrap-around。也就是说,当程序员给出超过1M(100000H-10FFEFH)的地址时,因为逻辑上正常,系统并不认为其访问越界而产生异常,而是自动从0开始计算(有时会破坏内存)。

实模式下的中断有硬件中断与软件中断(INT)两种,其实中断本质就是满足中断条件,转向某个地址执行,再返回原地址的下条指令的地址。中断地址也是基地址+偏移量构成的

二.保护模式

随着软件的规模不断增加,需要更高的计算量、更大的内存容量。此时CPU 的寄存器和运算单元都要扩展成 32 位的。但是实模式下CPU的处理就像脱缰的野马,CPU 对任何指令不加区分地执行,并且CPU 对访问内存的地址不加限制,保护模式由此而生。

保护模式相比于实模式,增加了一些控制寄存器和段寄存器,扩展通用寄存器的位宽,所有的通用寄存器都是 32 位的,还可以单独使用低 16 位,这个低 16 位又可以拆分成两个 8 位寄存器。

顾名思义,保护模式主要对内存起保护作用。为了实现对内存的保护,CPU 实现了特权级(权力向少数人开放?),特权级分为 4 级,R0~R3,每个特权级执行指令的数量不同,R0 可以执行所有指令,R1、R2、R3 依次递减。

在保护模式下地址的表示方式与实模式是一样的,都是:段(segment):偏移(offset),不过保护模式下,“段”的概念发生了根本性的改变。实模式下,段值还是可以看作是地址的一部分,比如段值为xxxxh表示以xxxx0h开始的一段内存。而保护模式下,虽然段值仍然由原来的cs、ds等寄存器表示,但此时它就像一个向导,导向段描述表(描述一个段的信息封装成特定格式的段描述符,放在内存中一个段描述符有 64 位 8 字节数据,里面包含了段基地址、段长度、段权限、段类型等信息。多个段描述符在内存中形成全局段描述符表)。

保护模式下的中断要权限检查,还有特权级的切换。

三.长模式

长模式相比于保护模式,增加了一些通用寄存器,并扩展通用寄存器的位宽,所有的通用寄存器都是 64 位,还可以单独使用低 32 位。32 位可以拆分成一个低 16 位寄存器,低 16 位又可以拆分成两个 8 位寄存器。

长模式依然具备保护模式绝大多数特性,如特权级和权限检查。

长模式下中断门描述符格式发生变化。

操作系统:浅谈实模式,保护模式与长模式相关推荐

  1. 关于计算机运行管理模式,浅谈学校计算机机房管理及维护运行模式.docx

    浅谈学校计算机机房管理及维护运行模式 摘要:计算机辅助教学在学校的教学体系中占有重要地 位,计算机机房是学校教学和学生实践学习的重要学习场 所.合理的机房管理与维护模式,是提高学校教学质量和培 养学生 ...

  2. 浅谈 MVC、MVP 和 MVVM 架构模式

    2019独角兽企业重金招聘Python工程师标准>>> 谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MVC.MVP ...

  3. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  4. 浅谈信息安全等级保护与ISO27000系列标准的异同

    摘要:信息安全等级保护和ISO27000系列标准是目前国内主流的两个信息安全标准体系,在党政机关及企事业单位运用非常广泛.在建立单位内部信息安全体系的时候往往会遇到需要同时满足两个标准体系要求的难题. ...

  5. 浅谈并行编程中的任务分解模式

     并行编程使用线程来使得多个操作能够同时运行.并行编程主要包括应用程序中线程设计,开发和部署以及线程间相互协调和各自的操作. 在下文中我们将讨论怎样分割适合线程化大小的编程任务来多任务化一个应用程 ...

  6. html5和极速模式,浅谈360浏览器6.0版本极速模式与兼容模式_蓝戒的博客

    360浏览器升级到6.0版本后对html5实现了全面兼容,于此同时360 6.0版本浏览器提供了两种模式:1.极速模式 2.兼容模式,也就是说360浏览器为双核浏览器.浏览器最核心的部分是渲染引擎(R ...

  7. 浅谈MVC、MVP、MVVM架构模式的区别和联系

    MVC.MVP.MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用. 一.MVC(Model-View-Controller) MVC是比较直观的架构模式 ...

  8. 浅谈NFT抵押借贷的三种模式:点对点、资金池和中心化模式

    前言 (恍惚间,2020 的 DeFi 之夏已经过去十多个月.作为 DeFi 借贷「白马股」Aave 的市值排名已悄然降到 61 位,而 Compound 更是跌落在 100 名开外,不禁感到有些出乎 ...

  9. 浅谈电弧光保护在10kV变电站高压室的应用方案

    摘要:阐述了弧光保护在变电站10kV高压室的有效应用,通过比较两种应用.两种保护方式,提出电弧光保护应用的模式.电弧光保护作为开关柜内母线的主保护,能够数毫秒级切断故障,有效地保护变压器不受损伤,减轻 ...

最新文章

  1. MySQL datetime类型字段的毫秒四舍五入
  2. (多图) 基于FPGA的FIR数字滤波器设计与仿真
  3. 朴素的串模式匹配(C语言实现)【串模式匹配】
  4. #ifdef #else #endif #fi #ifndef 的用法
  5. avalon.js实践 svg地图配置工具
  6. VC++ 轻松实现“闪屏” SplashWnd
  7. Android开发入门之学习笔记(三):程序窗口的布局
  8. Python---编程检查并判断密码字符串的安全强度
  9. 常见问题_自动打螺丝机常见问题及解决办法
  10. 微信发虎年新春贺词领福袋:游戏皮肤、QQ音乐VIP、现金红包等
  11. c combobox绑定mysql数据库_C# ComboBox:组合框控件数据绑定
  12. Linux线程同步介绍和示例
  13. node开发命令行脚本
  14. Android4.4 Sensor APP--HAL代码流程
  15. python or的用法_python and or用法详解
  16. 【IIOT】欧姆龙PLC数采之NX/NJ系列
  17. mysql 分页 count 查询效率低下分析
  18. FPGA状态机跑飞 的解决办法
  19. 生成osm文件_OSM地图本地发布-如何生成各省市矢量地图
  20. 怎样获取Atlantic免费一年的VPS主机

热门文章

  1. CAD中插入外部参照字体会变繁体_为什么CAD插入相同图框但尺寸却相差很多?
  2. windows 2003 远程桌面没有声音解决方法
  3. YOLOX训练高精度车辆检测
  4. 线程实用解析--------(六)Control.Invoke()和Control.BeginInvoke()
  5. java:如何解决汉字在记事本中编译翻译后出现乱码
  6. Excel 统计绘制直方图
  7. 【微信小程序】日历弹窗选择器
  8. DOM解析与DOM4J
  9. cancase vector_vector CANcase 1630
  10. 万字文肝Redis基础知识