80x86的保护模式
什么是保护模式?
通过对程序使用的存储区采用分段、分页的存储管理机制, 达到分组使用、互不干扰的保护目的。能为每个任务提供一台虚拟处理器,使每个任务单独执行,快速切换。
所以,内存地址由段基地址、偏移地址构成。
在内存中段怎么描述?
段的描述符:段基地址(32位)、段长度(20位,单位为2^12,即4K)、访问权限, 总计64位。
出于系统的兼容问题,段寄存器都是16位的, 那么如何表示64位的段描述符呢?
通过描述符表:将段寄存器的高13位作为索引来访问该表(描述符表本身也有一个基址,加上这13位的偏移地址), 从而获得64位的段描述符。
描述符表分为两类:
1. GDT是全局描述符表,主要存放操作系统和各任务公用的描述符, 也存放LDT描述符。
2. LDT是局部描述符表, 主主要存放各个任务的私有描述符。
段寄存器:高13位用来指示描述符在描述符表中的索引号, 低两位是表示使用描述符的特权级别。另外一位(TI)是GDT和LDT的信号量,如果TI = 0, 则使用GDT, 如果 TI为1, 则使用LDT。
如何从GDT里找到需要的描述符呢??
芯片上有一个GDT寄存器,是48位,存放着GDT的位置与长度, 对程序员是可见。
先从GDT寄存器中找到GDT的基址,然后从段寄存器中找到需要的描述符的索引值,这样就找到了需要的描述符了。如下图所示:
如何找到LDT上需要的描述符呢??
芯片上也有一个LDT寄存器, 是48位的,存放着LDT在GDT里的索引值与。
先从GDT寄存器里找到GDT的基址,再从LDT寄存器里找到LDT的索引值,这样就找到了LDT的描述符, 也就找到了LDT的基址了,然后从段寄存器里找到需要的描述符的索引值 ,这样就找到了需要的描述符了。如下图所示:
80x86的保护模式的更多相关文章
- 80X86保护模式及其编程(一)
80x86系统寄存器和系统指令 1.标志寄存器(EFLAGS) 标志寄存器EFLAGS的标志位含义如下图: TF 位8是跟踪标志(Trace flag),当设置该位时可为调试操作启动单步执行方式.复位 ...
- 《linux 内核全然剖析》 chapter 4 80x86 保护模式极其编程
80x86 保护模式极其编程 首先我不得不说.看这章真的非常纠结...看了半天.不知道这个东西能干嘛.我感觉唯一有点用的就是对于内存映射的理解...我假设不在底层给80x86写汇编的话.我 ...
- 80x86保护模式下IDT和中断调用过程分析
80x86保护模式下IDT和中断调用过程分析 1.中断描述符表(IDT),将每个异常或中断向量分别与它们的处理过程联系起来.与GDT和LDT类似,IDT也是由8字节长度的描述符组成.IDT空描述符的存 ...
- 《80x86汇编语言程序设计》保护模式第一个例题
<80x86汇编语言程序设计>保护模式第一个例题的一些个人理解和注视 ; 16位偏移的段间直接转移指令的宏定义 jump macro selector, offsetv db 0eah ...
- 基础篇-Windows保护模式
1 一般来说,80x86(80386及其以后的各代CPU)可以在三种模式下运转:实模式,保护模式,V86模式.实模式就是古老的MS-DOS的运行环境.Win95只利用了两种模式:保护模式和V86模式. ...
- 全局描述符表(GDT)——《x86汇编语言:从实模式到保护模式》读书笔记09
在进入保护模式之前,我们先要学习一些基础知识.今天我们看一下全局描述符表(Global Descriptor Table, 简称GDT). 同实模式一样,在保护模式下,对内存的访问仍然使用段地址加偏移 ...
- 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10
一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...
- oslab oranges 一个操作系统的实现 实验三 认识保护模式(二):分页
实验目的: 掌握内存分页机制 对应章节:3.3 实验内容: 1.认真阅读章节资料,掌握什么是分页机制 2. 调试代码,掌握分页机制基本方法与思路 – 代码3.22中,212行---237行,设置断点调 ...
- 企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
随机推荐
- android studio java工程 报错
作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com android studio java工程 ...
- luoguP3302 [SDOI2013]森林 主席树 启发式合并
题目链接 luoguP3302 [SDOI2013]森林 题解 本来这题树上主席树暴力启发式合并就完了 结果把lca写错了... 以后再也不这么写了 复杂度\(O(nlog^2n)\) "f ...
- jQuery UI练习
jQuery UI 是建立在 jQuery JavaScript 库上的一组用户界面交互.特效.小部件及主题.无论您是创建高度交互的 Web 应用程序还是仅仅向窗体控件添加一个日期选择器,jQuery ...
- replace方法,替代敏感字符
var val = $("#id").val(); var reg =/垃圾|你大爷|你妹的/g; if(val){ // false : isNaN-- 0-- undef ...
- NOIP 竞赛注意事项
<一>程序习惯注意 一.Linux与Windows的区别 a) 大小写敏感 i. 在Windows下,文件名大小写不敏感,例如A.c 与 a.c 与和a.C与A.C和没有区别. ii. ...
- 怎么把html页面中共用的底部代码做成共享模块
问: 很多时候,我们在设计网站时会发现,站内每一个页面的header跟footer其实都是一样的,如果每个页面都写header跟footer就会显示代码冗余而且维护也不方便, 这时候最好的做法就是把相 ...
- C# 格式化新招
C# 格式化新招 ) from Attribute_Item where AttributeSysNo=$AttributeSysNo and Name='$Name' and SysNo !=$Sy ...
- 使用 IntraWeb (28) - 基本控件之 TIWTemplateProcessorHTML、TIWLayoutMgrHTML、TIWLayoutMgrForm
TIWTemplateProcessorHTML //使用外部的 html 文件做模板 TIWLayoutMgrHTML //直接输入 Html 文本做模板 TIWLayoutMgrForm //这应 ...
- Android:Unable to find explicit activity class
写了两个Activity,确定java代码和xml配置文件没问题之后,运行工程,报错: E/AndroidRuntime(10513): FATAL EXCEPTION: main E/Android ...
- 常见爬虫/BOT 对抗技术简介(二)
上一篇文章分别从网络协议,Robots文件,JS渲染,行为分析等多方面讲了些“反爬虫”,“反-反爬虫”技术. 点击查看:<常见爬虫/BOT 对抗技术简介(一)> 本文将主要介绍各种IP地址 ...