博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
80X86 保护模式
阅读量:2220 次
发布时间:2019-05-08

本文共 1145 字,大约阅读时间需要 3 分钟。

保护模式定义:

 

保护:用硬件对每个任务使用的内存空间进行保护,阻止其他任务的非法访问。 特点如下: 
 
A 采用虚拟存储管理,启用分段和分页机制。允许关闭分页机制
 
 
B 段内偏移地址32位,每个段最大232B=4GB,每个程序最多可以使用16K个段,理论上的虚拟地址空间为4GB×16K=64TB
 
 
C 采用32位地址寄存器,如EBXESIEIPESP等。
 
D  4特权级0123
       0级具有最高的特权,可以执行所有指令,建立和维护各种表格,管理整个系统,供操作系统进程使用
     3级最低,3级任务只能访问操作系统分配给它的内存区间, 不能执行特权指令,访问IO设备的权限也受到限制。 供用户程序使用。
 
 
 
 
 
保护模式下的寻址方式:

 

分段管理
 逻辑地址仍然采用段:偏移地址的形式。
 逻辑地址通过分段管理机构转换为32位的线性地址
 16位段寄存器内存放的不再是20位段起始地址的高16位,而  是这个段的一个编号,称为段选择符Segment Selector
 使用这个段选择符查找段描述符表Segment Descriptor     Table,得到这个段的32位起始地址,加上32
位的偏移地
      址,得到这个存储单元的32线性地址

 

 

 

 

 

 

分页管理
32位线性地址通过分页管理机构转换为32/36位的物理地址
所有的存储器以4KB为单位划分成Page
线性地址被划分成页号页内地址
两部分,根据页号查找
    页表
,得到这个页在内存真实的起始地址,加上页内地址,
    得到该存储单元的物理地址。
如果通过查表发现该页还在硬盘中,则还要首先启用换页制,把这个页调入内存。

 

 

 

 

 

分段机构的三张段描述符表

段描述符表 由若干个段描述符组成,每个段描述符记录一个段的相关信息,如这个段的起始地址,段的长度,段的属性等
全局段描述符表Global Descriptor Table, GDT)整个计算机内只有一张,存放操作系统使用的各种段的信息。
局部段描述符表Local Descriptor Table, LDT)每个任务都有一张局部段描述符表,记录这个任务使用的段的信息。
中断描述符表Interrupt Descriptor Table, IDT)记录中断服务程序的位置信息。

 

 

 

控制寄存器

控  制
寄存器
CRx BIT31 BIT30—BIT12 BIT11—BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
CR0 PG 0000000000000000 ET TS EM MP PE
CR1 保留
CR2 页故障线性地址
CR3 页目录表物理页码 000000000000
 

转载地址:http://rpnfb.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>