计算机系统基础 5 物理地址的形成

历史

        早期,程序员自己管理主存,通过分解程序并覆盖主存的方式执行程序

  •         取指令和存储操作数所有的地址都是物理地址;
  •         执行速度快,无需进行地址转换;
  •         未采用虚拟存储机制。

        1961年有人提出自动执行overlay的方式,把程序员从大量繁琐的存储管理工作中解放出来,使得程序员编程时不用管主存容量的大小。

基本思想

  • 地址空间主存容量的概念区分开来,程序员在地址空间里编写程序,程序则在真正的内存中运行;
  • 由一个专门的机制实现地址空间和实际主存之间的映射
  • CPU 中的 MMU (Memory Management Unit) 负责逻辑地址(即虚拟地址)转换为内存的物理地址

逻辑地址(即虚拟地址)转换为内存的物理地址的方式:

分页式
分段式
段页式

分段 

        根据程序的模块化性质,按程序的逻辑结构划分成多个相对独立的部分,称为段;

        一个程序可以有多个代码段;

        一个程序可以有多个数据段;

        段通常有段名、段起点、段长、段属性等信息

        C语言程序中,变量的定义和指令写在一起,无分段的概念

        机器语言层次上,是要分段的:在C程序编译时,将变量的空间分配和指令分开,分别放在不同段中。

主存分段管理

        在分段内存模型中,每个分段通常加载不同的分段选择器,以便每个段寄存器指向线性地址空间内的不同段。

主存物理地址的形成 

        实方式 

物理地址 = (段寄存器)左移4位 +偏移地址

  • 32位CPU与8086一样,只能寻址1M物理存储空间
  • 可以访问6个段:CS, DS, SS, ES, FS, GS,每个段至多64K
  • 段开始单元的物理地址 /16➡段址
  • 段中某一存储单元的地址用两部分表示——“段首地址:偏移地址”,称二维的逻辑地址。

        8086中,只有4个段寄存器 CS, DS, ES, SS 

  •         在代码段中取指令时:指令物理地址 PA= (CS) 左移四位 + (IP) ,使用的是IP, 而不是EIP
  •         在数据段中读/写数据时:数据的物理地址 PA = (DS或ES)左移四位 + 16位偏移地址  (偏移地址由寻址方式确定)
  •         在堆栈操作时:栈顶的物理地址 PA = (SS) 左移四位 + (SP)

        保护方式 

               在多任务环境下,系统中有多个程序在运行,程序之间要隔离。

        分段是存储管理的一种方式,为保护提供基础,不同程序在不同段中,一个程序可以包含多个段,段用于封闭具有共同属性的存储区域;

        描述符

                 存放为保护一个段需要的信息

  • 段的起始位置(段基地址)
  • 段的大小(段界限)
  • 段的特权级
  • 段的属性(是代码段、数据段还是堆栈段?数据段是否可写?代码段是否可读出?)
  •  段的位置(在内存还是在磁盘?)
  • 段的类型(在系统段还是用户段?)
  • 段的使用(段被访问过,还是没有?)

        描述符表

                描述符的集合。

        局部描述符表:一个LDT,是一个系统段,最大可为64KB,最多可存放8192个描述符。

        对每一个程序,都建立一个局部描述符表(LDT)

        全局描述符表:只有一个。GDT最大可为64KB,存放8192个描述符。包括:

  •         操作系统所使用的段的描述符;
  •         各个LDT段的描述

        保护方式下物理地址的形成 

                1——从虚拟地址到线性地址 
xxxx: cs、ds、ss、es、fs、gs
xxxx : yyyyyyyy 到线性地址的映射

        xxxx指出找相应段描述符的方式,称段选择符

        1. TI 位为 0 (操作系统段)

GDTR 寄存器中获取 GDT 的基址;
GDT 表中 , XXXX 的高 13 位作为索引,取出一个描述符 A
描述符 A 中的段基地址 + yyyyyyyy : 为要访问单元的 线性地址。

        2. 若TI 位为 1 (用户程序段) 

    • GDTR 寄存器中获取 GDT 的基址;
GDT 表中 , LDTR 的高 13 位作为索引,取出一个描述符 A
描述符 A 描述的段为一个 LDT (LDT_A )
XXXX 的高 13 位,作为索引,在 LDT_A 段中找到描述符 P_A
P_A 描述段的基址+ yyyyyyyy 线性地址。

                2——从线性地址到物理地址 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/501794.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Openfeign

Openfeign 相关扩展 在 2020 以前的 SpringCloud 采用 Ribbon 作为负载均衡,但是 2020 年之后,SpringCloud 吧 Ribbon 移除了,而是使用自己编写的 LoadBalancer 替代. 因此,如果在没有加入 LoadBalancer 依赖的情况下&#xff0c…

linux离线安装maven

一、下载maven 地址:Maven – Download Apache Maven 使用root权限用户登录服务器 cd /opt sudo mkdir maven cd maven 二、上传maven 使用Xftp工具 三、解压并配置环境变量 tar -zxvf tar -zxvf apache-maven-3.9.6-bin.tar.gz cd apache-maven-3.9.6/ 看到解压…

AI智能视频剪辑解决方案,便捷的视频制作体验

在数字化时代,视频内容已成为企业宣传、产品展示、品牌塑造不可或缺的重要载体。然而,传统视频剪辑方式往往耗时耗力,效率低下,无法满足企业快速响应市场变化的需求。美摄科技凭借领先的AI技术,推出了一款全新的AI智能…

游戏本笔记本更换@添加内存条实操示例@DDR5内存条

文章目录 添加内存条的意义准备工具设备拔出电源适配器并关机👺样机 内存条上的金手指安装过程Notes 安装后开机初次开机速度屏幕显示分辨率和闪烁问题检查安装后的效果 添加内存条的意义 参考双通道内存DDR5多通道内存-CSDN博客 准备工具 准备一个质量差不多的螺…

我国伺服系统市场规模逐渐扩大 未来有望实现完全国产替代

我国伺服系统市场规模逐渐扩大 未来有望实现完全国产替代 伺服系统又称为随动系统,是用于精确地跟随或复现某个过程的反馈控制系统。伺服系统主要包括驱动器、指令机构和电机等,可根据控制指令,对功率进行放大、变换与调控等处理,…

在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)

问题场景 目前我的环境变量都存储在 /etc/profile 文件中,当我通过远程 SSH 执行一些命令时,提示命令找不到,如下所示: 问题出现原因 这里找到了一张出自尚硅谷的图片,很好的解释了该问题: 这是由于 Linu…

Java集成E签宝实现签署

完整代码:java-boot-highpin-background: 背调服务 (gitee.com) 【暂不开源】 1.在application.yml中配置appid、密钥信息,包含沙箱环境javaesign:host: https://smlopenapi.esign.cnappId: your appIdappSecret: your secret 2.实现电子签的主要流程在…

智慧水利中数据可视化的关键作用

在当今这个数据驱动的时代,数据可视化已成为转化复杂数据集为易于理解的视觉格式的关键技术,它在智慧水利领域的应用尤为显著。智慧水利利用现代信息技术,整合水资源管理的各个方面,旨在提高水资源的使用效率和管理效能。数据可视…

leetcode-链表算法题

leetcode-链表算法题 237.删除链表中的节点 题目地址 有一个单链表的 head,我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个…

elementui el-input输入框类型为textarea时,将输入的数据保存换行和空格,并展示换行和空格

el-input输入框类型为textarea时,如果不做数据处理,是不会保存换行和空格的说输入了换行,但是保存数据后不会进行换行,需要保存输入的换行。 1、效果图 输入状态: 显示时: 2、实现代码 2.1、html部分&am…

目标检测评价标准

主要借鉴:https://github.com/rafaelpadilla/Object-Detection-Metrics?tabreadme-ov-file 主要评价指标、术语: Intersection Over Union (IOU):两个检测框交集面积与并集面积的比值 True Positive (TP):IOU大于阈值的检测框…

SpringBoot 登录认证(二)

SpringBoot 登录认证(一)-CSDN博客 SpringBoot 登录认证(二)-CSDN博客 SpringBoot登录校验(三)-CSDN博客 HTTP是无状态协议 HTTP协议是无状态协议。什么又是无状态的协议? 所谓无状态&…

Spring Cloud GateWay——网关的基本使用

1. 为什么所有的请求先到网关呢? 有了网关就可以对请求进行路由,路由到具体的微服务,减少外界对接微服务的成本,比如:400电话,路由的试可以根据请求路径进行路由、根据host地址进行路由等, 当微…

Js逆向简单分析-某网站登录案例

文章目录 概要整体流程1.打开网站,输入数据进行登录2.对getlogin.php进行查看分析3.对于登录请求连接进行断点调试4.堆栈跟踪5.在网络上找在线md5加密 友情推荐 概要 某网站登录流量包逆向分析。 整体流程 1.打开网站,输入数据进行登录 用户名&#…

API接口自动化测试框架搭建之需求整理、详细设计和框架设计!

​ 简介: API接口自动化测试框架搭建之需求整理、详细设计和框架设计 1 需求整理 1.1 实现目的 API接口自动化测试,主要针对http接口协议;便于回归测试;线上或线下巡检测试,结合持续集成,及时发现运行环…

网络——套接字编程TCP

目录 服务端 创建套接字(socket) 服务端绑定(bind) 服务端监听(listen) 服务器接收(accept) 服务端处理(read & write) 客户端 创建套接字&#…

抖店不出单怎么办?关键在选品!想要选到”好品”就必须这样做!

哈喽~我是电商月月 做抖音小店在新手眼里,最难的是什么?有好多都说是,找达人 但其实不是,最难的就是找品,一个好的产品是自带流量的 我们可以这样理解:你见到的那些有能力的主播她是一个人做起来的吗&am…

GT收发器第四篇_QPLL和CPLL工作原理

文章目录 前言一、CPLL工作原理二、QPLL工作原理 前言 每个channel的时钟结构如图: Transceiver内部时钟来源可以是QPLL也可以是自己的CPLL。其内部TX 和 RX 时钟分频器可以单独从 QPLL 或 CPLL 中选择时钟,允许 TX和 RX 数据通道使用不同的参考时钟输入…

公司官网怎么才会被百度收录

在互联网时代,公司官网是企业展示自身形象、产品与服务的重要窗口。然而,即使拥有精美的官网,如果不被搜索引擎收录,就无法被用户发现。本文将介绍公司官网如何被百度收录的一些方法和步骤。 1. 创建和提交网站地图 创建网站地图…

用MATLAB编写一个简易的贪吃蛇游戏

编写一个贪吃蛇游戏的MATLAB代码需要涉及到游戏逻辑、图形用户界面(GUI)的创建、事件监听(如键盘操作)和游戏状态更新等。以下是一个简化的贪吃蛇游戏MATLAB代码示例,展示了基本的游戏框架和逻辑。 此代码创建了一个游戏窗口&#xf…