【理解OS】1.保护模式概述
这个系列文章主要目的是为了记录我个人学习保护模式后的总结与一点点的思考。我也是一个学习者,其中由错误在所难免,若各位朋友指出将不胜感激。
1. Intel CPU的运行模式概述
这里我将粗略介绍Intel IA-32 CPU和其64扩展所提供的运行模式,及各运行模式的特点。
Intel IA-32架构一共提供了四种运行模式、分别是保护模式(protected mode)、实地址模式(实模式,Real-address mode)、系统管理模式(SMM)、虚拟8086模式(Virtual-8086 mode)。
其中保护模式是几乎所有运行在现代x86 CPU上操作系统使用的模式,具备x86 CPU所有的架构特性、最佳的性能、所有的指令支持、最佳的向后兼容性,也是现代x86 CPU的原生运行模式。x86 CPU通常对所有操作系统都推荐使用该模式。
实地址模式在现代计算机中的职责通常是负责计算机开启启动时计算机操作系统运行环境的准备。开机启动时CPU 首先进入实模式 读取BIOS进行基本的硬件自检查、硬盘扇区引导、操作系统选择和加载等等,待操作系统加载至内存接管CPU等硬件资源时,CPU将根据操作系统期望的运行模式进行切换,通常会切换至保护模式。
虚拟8086模式是一种开启保护模式后,为向后兼容8086程序所提供的一种准模式。注意虚拟8086模式与保护模式的关系是寄生关系,只有开启保护模式才能在保护模式中运行虚拟8086模式,虚拟8086模式是不可单独运行的。
当操作系统运行时,CPU接受操作系统的调度,但若这个过程中CPU自身出现缺陷和不可修复的错误怎么办?X86 CPU提供了一种最高权限模式,系统管理模式。当CPU接收到SMM中断时,将会切换至SMM,并且在BOIS中寻找可能修正CPU错误的方法。
以上是X86 IA-32架构阐述,但现代CPU和操心系统基本都运行在64位环境下,6并且4位已经成为主流,因此下面将介绍一个X86为应对64位机时代对64位做的拓展所新增的一个运行模式,IA-32e Mode(IA-32 extra mode),现代64位操作系统基本运行在该模式。该模式提供了2种子模式,兼容模式和64位模式。兼容模式提供对保护模式几乎所有特性的接纳,而64位模式则将保护模式的线性地址扩展至64位,提供了超过64GB的内存寻址空间,由此可见IA-32e模式基本可以看作是对保护模式的扩展(这也是IA-32e这种e的含义,extra),但也兼容了32位程序的运行环境。
通过上述,无论是IA-32还是其64位扩展,基本都是围绕保护模式所展开的,而现代操作系统也可以简单说基本都是运行在保护模式下(IA-32e模式本质上是对32位保护模式的扩展)。因此想要理解现代操作系统,保护模式必然是一道绕不过的坎。
2.保护模式概述
保护模式的重要性于Intel 白皮书中所占的篇幅即可窥探一二。这个小节将介绍在X86架构中举足轻重的存在,力图理清保护模式的特性。
在保护模式为出来之前,也即16位机时代,基本所有的CPU都是运行在实地址模式下。实地址模式中线性地址即可等同于物理地址,对线性地址内存的修改则直接等同与对物理地址的修改,这个所谓的实地址指的就是这个特点,线性地址等效于物理地址。这种模式有没有问题?当然有,而且问题很大,否则为什么要有保护模式呢?实模式的主要问题其实就是出在实地址这三个字上,一切的问题都是由实地址所带来的。
首当其冲的问题,实地址模式直面物理内存,导致CPU对所有内存一视同仁,这种做带来的后果是CPU无法区分代码和数据,那么代码所在内存和数据所在内存的特点都一样,因此所有的内存都是可读可写可执行的,这个问题对于系统稳定的影响和系统的危险性不言而喻,其后一切的问题基本都因此所带来的。而后面诞生的所谓保护模式,保护的是什么?保护就是物理内存,因此保护模式最为重要的两个特性就是段的机制和页的机制,它们的主要目的都是为了更加安全和高效的使用物理内存,那么保护模式后面的虚拟内存、分页映射和权限检查等重要特性的目的将不难理解。
因此后续的文章将围绕保护模式段和页的机制作为主线展开,将保护模式琐碎的细节串联起来。
【理解OS】1.保护模式概述的更多相关文章
- Oracle Dataguard三种保护模式概述(转)
Oracle的DataGuard技术有三种实现模式,分别是max performance.max availability.max protection这三种模式. 以下是来自Oracle文档的摘要信 ...
- DataGuard的三种保护模式
(一)三种保护模式介绍1.最大性能模式这种模式保证数据库主库性能最大化,主备库之间数据是异步传输的.即,主备日志归档以后才会传输到备库,在备库上使用归档日志文件做恢复操作.这种模式提供在不影响prim ...
- OSLab:开启保护模式
日期:2019/5/22 关键词:操作系统:OS:保护模式:A20地址线激活:分页开启:二级页表的设置 PS:OSLAB实验课的整理. 本文主要内容是分析操作系统中一个简易的MBR. 建议先阅读:ht ...
- 自制操作系统Antz(5)——深入理解保护模式与进入方法
Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs. ...
- 【OS】实模式和保护模式区别及寻址方式
实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...
- ASM:《X86汇编语言-从实模式到保护模式》第14章:保护模式下的特权保护和任务概述
★PART1:32位保护模式下任务的隔离和特权级保护 这一章是全书的重点之一,这一张必须要理解特权级(包括CPL,RPL和DPL的含义)是什么,调用门的使用,还有LDT和TSS的工作原理(15章着重 ...
- 保护模式下pmtest1.asm的理解
整个代码对应内存线性地址分为四段,[gdt] [code32] [video32] [code16] 代码先在实模式[code16]下运行,code16中的cs就是系统分配的该程序物理地址的基址. 编 ...
- CPU保护模式DPL、CPL简易理解
现代INTEL CPU都有保护模式,实模式这两种CPU运行模式.当CPU加电,CPU初始化时就运行在是模式下,然后现代操作系统会从实模式跳转到保护模式! 为什么需要保护模式? 在最开始编程的汇编时代, ...
- ASM:《X86汇编语言-从实模式到保护模式》第17章:保护模式下中断和异常的处理与抢占式多任务
★PART1:中断和异常概述 1. 中断(Interrupt) 中断包括硬件中断和软中断.硬件中断是由外围设备发出的中断信号引发的,以请求处理器提供服务.当I/O接口发出中断请求的时候,会被像8259 ...
随机推荐
- 【maven】私服搭建
转自:https://www.cnblogs.com/likehua/p/4552620.html 一.软件安装 地址:http://www.sonatype.org/nexus/thank-you- ...
- linux 下的用户的管理
- qt 中的自定义pushbutton
- 大天使之剑H5游戏超详细图文架设教程
引言 想体验传奇游戏霸服的快乐吗?想体验满级VIP的尊贵吗?想体验一刀99999的爽快吗?各种极品装备装备.翅膀.宠物通通给你,就在大天使之剑! 本文讲解大天使之剑H5游戏的架设教程,想研究H5游戏如 ...
- adb shell 查看当前与用户交互的 activity
adb shell dumpsys activity activities | grep mActivityComponent
- Redis的读写分离
1.概述 随着企业业务的不断扩大,请求的并发量不断增长,Redis可能终会出现无法负载的情况,此时我们就需要想办法去提升Redis的负载能力. 读写分离(主从复制)是一个比较简单的扩展方案,使用多台机 ...
- ubantu下载源详细目录
都说ubantu系统自带的下载源不给力,一般使用时体现不出来,也没有必要更换.我是在安装gnuradio时,安装了好久,没安装上,后来就去更改下载源(后来发现不是下载源的问题),不过还不错,最起码最下 ...
- vue 进入页面每次都调用methods里的方法
// 监听路由,每次进入页面调用方法,放在method里 mounted(){ this.getPath() }, methods: { getPath(){ console.log(this.$ro ...
- DLL延时加载技术与资源释放
DLL延时加载技术与资源释放 0x00 前言 诸如调用非Windows的第三方库,我们或许会使用到dll文件,而这个时候原本程序运行需要相应的dll文件才能加载启动.通过DLL延时加载技术,使用延时加 ...
- git config 选项
git config --global -- global 写入选项:写入全局的 ~/.gitconfig 文件而不是版本库的 .git/config,如果 ~/.gitconfig 文件不存在,则 ...