“本文的一些截图来自于<IntelDEV卷3>和<x86汇编从实模式到保护模式>`
最近复习一些操作系统的知识,首先遇到了个坑便是计算机寻址问题.
本文是一些偏理论的东西(汇编可能在工作中用不到,需要的时候再深入研究吧- -!)
本文参考的一些博客和书本:
<a href=http://blog.csdn.net/trochiluses/article/details/8954527>[实模式与保护模式解惑之(一)——二者的起源与区别]</a>
汇编相关-从汇编研究局部变量机制
我看保护模式
x86汇编语言:从实模式到保护模式
实模式
- 是什么
INTEL 8086
CPU的寻址方式.
具体利用分段机制访问内存,访问时给出一个段基地址和一个段内偏移;(如DS:AX,其中DS和AX在这里的字长为16),访问的地址为实实在在的物理地址.
为什么
一个原因是
8086
特点 – 数据总线16位(字长为16)、地址总线却有20位(准确地说是CPU的寻址能力需要被设计成20位).这样程序员在没有特殊机制的引入时,只能访存
2^16 B = 64 KB
的空间(16位字长),达不到产品经理的需求(20位地址空间 = 2^20 B = 1 MB
)于是,这里设计成了使用
段基地址 + 段内偏移
的方式:物理地址 = 段基地址<<16 + 段内偏移
有个小问题就是这种方式实际上可访问的空间大于1M,即最大可以访问到0xFFFF*16 + 0xFFFF = 0x10FFEF > 0xFFFFF
,多出的这些地址将从0开始(即对1M取模).实模式的段的特点 –
每个段基地址都是16的倍数;
每个段的最小长度是16 Bytes,最大是64 KB;<———-更新: 段的大小从1B到64KB都可以.见wiki:
Processon.com
Naive的页表:
原文作者:Quasars
原文地址: https://www.jianshu.com/p/764dfd9d5cef
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。