Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >x86体系早期的实模式下的内存分段的地址映射

x86体系早期的实模式下的内存分段的地址映射

作者头像
lexingsen
发布于 2022-02-25 00:31:52
发布于 2022-02-25 00:31:52
5120
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客

实模式:程序员可以直接在物理地址上进行编写程序,此时还没有操作系统进行内存的管理。

实模式下的CPU架构为:8086,16位数据总线,20位的地址总线。可寻址空间大小为2^20=1M,但是由于数据总线仅仅支持16位,而由CPU法出的地址却是20位,为了使得地址位数为16。8086进行了这样的规定:物理内存的地址必须是16的倍数,也就是说经过分段,段大小在这个区间[16, 2^16=64k]。这样做的好处是,地址是16的倍数意味着地址的二进制形式其第四位是0,这样一来,多余的4位0可以不用表示,那么就可以用16位的数据总线来传输20位的物理内存地址。

8086常用的段寄存器(都是16位的): DS(数据段寄存器),CS(代码段寄存器),SS(堆栈段寄存器)。

实模式内存分段的管理:由于段寄存器都是16位的,在实际由CPU发出的地址是类似这样的,DS<<4 + IP = 物理地址, 通过这样的方式进行物理内存的访问。其中,DS<<4也称之为段基址,IP为偏移量,偏移地址,逻辑地址(它表示的在内存的一个段上的偏移量)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
内存分段与分页机制
8086CPU以后总线寻址和CPU位数趋于一致,操作系统结构向下兼容,线性地址基址置0:
sofu456
2019/07/09
1.4K0
内存分段与分页机制
x86保护模式下的内存分段的地址映射
正是由于在实模式下直接对物理内存进行读写,非常不安全,所以诞生了新的内存分段的映射方式,其目的就是对物理内存进行保护,而对内存进行保护需要注意的是一下三点: 1.内存的起始地址。 2.内存的长度。 3.内存的权限信息。
lexingsen
2022/02/25
7070
x86保护模式下的内存分段的地址映射
从进入内核态看内存管理
知乎上搜到一个比较有意思的话题:如何理解「进入内核态」,要回答好这个问题需要对内存管理及程序的运行机制有比较深刻的了解,比如你需要了解内存的分段,分页,中断,特权级等机制,信息量比较大,本文将会从 Intel CPU 的发展历史讲起,循序渐近地帮助大家彻底掌握这一概念,相信大家看了肯定有帮助,本文目录如下
kunge
2022/09/02
1.1K0
从进入内核态看内存管理
Linux内存寻址之分段机制及分页机制【转】
本文涉及的硬件平台是X86,如果是其他平台的话,如ARM,是会使用到MMU,但是没有使用到分段机制; 最近在学习Linux内核,读到《深入理解Linux内核》的内存寻址一章。原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解。于是,查找了很多资料,最终理顺了内存寻址的知识。现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处。
233333
2018/08/01
3.6K0
Linux内存寻址之分段机制及分页机制【转】
一文详解 32 位保护模式与内存分段机制
此前我们对操作系统中的分段、分页机制以及虚拟地址、逻辑地址、线性地址、物理地址进行了较为详细的介绍。 操作系统的内存管理 — 分段与分页、虚拟地址、逻辑地址、线性地址、物理地址
用户3147702
2022/06/27
1.4K0
一文详解 32 位保护模式与内存分段机制
Linux从头学02:x86中内存【段寻址】方式的来龙去脉
饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史:
IOT物联网小镇
2021/07/20
1.8K0
Linux 从头学 01:CPU 是如何执行一条指令的?
这两年多以来,我的本职工作重心一直是在 x86 Linux 系统这一块,从驱动到中间层,再到应用层的开发。
IOT物联网小镇
2021/07/20
1.3K0
保护模式究竟“保护”了什么
经过一系列的文章,我们通过汇编语言,体验了保护模式下分段、分页、特权级跳转、中断、异常等机制。 那么,事到如今,你是否已经深谙保护模式的设计之道了呢?究竟什么是保护模式,保护模式又在“保护”什么呢?他为了什么诞生,又和实模式有什么区别呢? 本文我们就来详细总结一下。
用户3147702
2022/06/27
1.3K0
保护模式究竟“保护”了什么
Windows程序设计学习笔记(一)Windows内存管理初步
学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流。因为刚学习所以可能有的地方写不不正确,希望大家能够指出。
Masimaro
2018/08/31
5640
微机原理与接口技术 重点详解与章节总结——8086微处理器系统结构
8086 CPU是Intel系列的16位微处理器,有40个引脚。它的外部数据总线为16位,地址线为20根。因为可用20位地址,所以可寻址的地址空间达1MB。(代表了外围存储器的寻址能力)
timerring
2022/07/20
8.4K0
微机原理与接口技术 重点详解与章节总结——8086微处理器系统结构
爱了爱了,这篇寄存器讲的有点意思
下面我们就来介绍一下关于寄存器的相关内容。我们知道,寄存器是 CPU 内部的构造,它主要用于信息的存储。除此之外,CPU 内部还有运算器,负责处理数据;控制器控制其他组件;外部总线连接 CPU 和各种部件,进行数据传输;内部总线负责 CPU 内部各种组件的数据处理。
C语言与CPP编程
2020/12/10
5.6K0
爱了爱了,这篇寄存器讲的有点意思
xv6 启动理论部分
本节来说说捋清启动需要知道的一些东西,因知识点的确很多,涉及了各个方面,我就不像其他章节一样各个部分前后有比较紧密的联系,而是直接以干货的形式罗列出来,这样或许更清晰些,不多说了来看
rand_cs
2023/12/02
4520
《微机原理与接口技术》期末复习笔记「建议收藏」
​ ■ 寻址:确定设备的地址,区分不同的设备; ​ ■ 缓冲:适配外设与CPU的工作速度; ​ ■ 转换:适配外设与CPU的信息格式、类型、幅度; ​ ■ 时序:外设与CPU的工作时序。
全栈程序员站长
2022/11/10
4.2K0
《微机原理与接口技术》期末复习笔记「建议收藏」
汇编语言访问寄存器和内存篇---02
注意: 并不是一个物理地址就可以决定一个段地址,而是当我们给出一个段地址后,通过适当调整,即加上一个偏移地址,就可以得到一个物理地址,看下面的例子:
大忽悠爱学习
2022/06/19
1K0
汇编语言访问寄存器和内存篇---02
80386的分段机制、分页机制和物理地址的形成
s1mba
2018/01/03
1.4K0
80386的分段机制、分页机制和物理地址的形成
Linux 0.12 内核管理存储器
每一个进程都有一张段表LDT。整个系统有一张GDT表。且整个系统仅仅有一个总页表。
全栈程序员站长
2022/07/05
1.2K0
Linux 0.12 内核管理存储器
第二章 IBM-PC微机的基本功能
标志寄存器是用来反映CPU在程序运行时的某些状态,如是否有进位、奇偶性、结果的符号、结果是否为零等等。 8086/8088CPU中标志寄存器的长度为16位,但只定义了其中的9位。
cheese
2023/10/25
4610
第二章 IBM-PC微机的基本功能
2.3存储器分段和地址空间
欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。
命运之光
2024/09/05
1400
2.3存储器分段和地址空间
进军保护模式
IA-32 CPU 结合保护模式的软硬件设计,提供了 4GB 内存的寻址能力,这对仍停留在 16 位实地址模式的我们是一个极大的诱惑。 上一篇文章中,我们详细的介绍了 32 位保护模式与内存分段机制的寻址机制、以及相关的寄存器、内存结构: 详解 32 位保护模式与内存分段机制
用户3147702
2022/06/27
7110
进军保护模式
如何开启保护模式
实模式下的内存访问形式是段基址左移16位+段内偏移地址,实模式下的寄存器是16位,也就是说CPU最大可以放到的地址是0xFFFF0+0xFFFF,即0x10FFEF。
shysh95
2021/07/16
1.1K0
相关推荐
内存分段与分页机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档