内存的基础知识-第四十天

目录

什么是内存?内存的作用

常用的数量单位

指令的工作原理

思考

三种装入方式

绝对装入

可重定位装入(静态重定位)

动态运行时装入(动态重定位)

写程序到程序运行 

编译和链接

链接的三种方式

本节思维导图


什么是内存?内存的作用

基本概念:暂时存放CPU中的运算数据,以及与硬盘等 外部存储器 交换的数据

作用:缓和CPU与硬盘之间的速度矛盾,程序执行前需要先放到内存中才能被CPU处理

        原本数据是放在外存中进行处理的,但是外存处理速度很慢,CPU的处理速度很快,所以引入内存概念,将要处理的数据放入内存中让CPU进行快速处理

思考:多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要放到内存中,那么,如果区分各个程序的数据是放在什么位置?

答案:给内存的存储单元编写地址

        位、字节、字是计算机数据存储的单位。位是最小的存储单位,每一个位存储一个1位的二进制码,一个字节由8位二进制组成。而字通常为16、32或64个二进制位组成。

常用的数量单位

  • 2^10 = 1k(千)
  • 2^20 = 1M(兆,百万)
  • 2^30 = 1G(十亿,千兆)

        一台手机有4GB内存,是指该内存中可以放4*2^30个字节,如果按字节编址,就有4*2^30 = 2^32个内存单元,这些内存单元需要2^32个地址才能一一标识,所以地址需要32个二进制位来标识(0~2^32-1)

指令的工作原理

指令(操作码,与该操作相关的必要参数,与该操作相关的必要参数...) 

  1. 输入代码x=x+1.代码被编译成三条指令(机器码),每条指令都有其相应的作用
  2. 程序运行时,这些指令就会被放入内存的程序段中,等待上CPU
  3. 指令1在CPU上执行时,CPU发现操作码代表的意思是数据传送指令:将地址为01001111中存放的数据放入地址为00000011的寄存器中,然后执行指令2
  4. 指令2在CPU上执行时,CPU发现操作码代表的意思是加法指令:将地址为00000011的寄存器中存放的数据10加上1(00000001),此时该寄存器中存放的数据是11,然后执行指令3
  5. 指令3在CPU上执行时,CPU发现操作码代表的意思是数据传送指令:将地址为00000011的寄存器中存放的数据放入地址为01001111的内存单元中
  6. 至此完成x=x+1这段代码

(01001111这些码都是瞎编的,目的是为了方便理解) 

结论:我们写的代码在执行后会要翻译成CPU能识别的指令(这些指令会告诉CPU应该去内存的哪个地址读/写数据,这个数据应该做什么样的处理。在这个例子中,我们默认让这个进程的相关内容从地址#0开始连续存放,指令中的地址参数直接给出了变量x的实际存放地址(物理地址)

思考

如果这个进程不是从地址#0开始存放的,会影响指令的正常执行吗

利用装入模块中提供的逻辑地址

起始为#0:

起始不为#0: 

那么如何将指令中的逻辑地址最终转换为物理地址?

三种装入方式

绝对装入

概念:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码,装入程序按照装入模块中的地址,将程序和数据装入内存

缺点:只适用于单道程序环境(不存在操作系统时期使用的方法),可以移植性低(将该代码放在另一个操作系统中时,如果绝对地址为179的位置不能使用就会出错)

可重定位装入(静态重定位)

概念:编译、链接后的装入模块的地址都是从0开始的。指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行”重定位“,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)

缺点:一个作业在装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存后,在运行期间就不能再移动,也不能再申请空间

动态运行时装入(动态重定位)

概念:编译、链接后的装入模块的地址都是从0开始的。装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址(这种方式主要是利用了一个重定位寄存器)

重定位寄存器:存放装入模块存放的起始地址

 如果想要从200开始,就将重定位寄存器中存放的起始地址修改为200即可

优点:

  1. 允许程序在内存中发生移动
  2. 可将程序分配到不连续的存储区中
  3. 在程序运行前只需要装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存
  4. 便于程序段的共享,可以向用户提供一个比存储空间大很多的地址空间

写程序到程序运行 

编译和链接

链接的三种方式

本节思维导图

~over~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦数据:数字化时代,国产数据库第一股终于到来?

又是新的一年开始。回首一年前的此时,在大家千呼万唤地期待中,数据基础制度体系的纲领性文件正式发布。 时隔一年之后,数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行,各行各业海量数据巨大的…

Fiddler工具 — 6.Fiddler页面布局之工具栏

Fiddler工具栏就是平时比较常用功能的一个快捷方式。 下面一一说明: 1、第一组工具: WinConfig:可以在里面配置一些windows系统的应用程序,配置在里面的应用的请求Fiddler都可以抓到,Fiddler5新增功能。 换句话说&…

caj转换成pdf有哪些方法?

caj转换成pdf有哪些方法?PDF是一个被广泛支持的文件格式,这种格式基本上在所有的操作系统和设备上都是支持使用的,也能够将PDF文件打开和查看的,相比于caj文件,它就只能通过一下特定的软件或者是插件才能够将caj打开或…

潮玩宇宙大逃杀游戏搭建

潮玩宇宙是当下较火的社交互动平台,它不仅涵盖了各种潮玩商品,还拥有各种游戏玩法,尤其是大逃杀游戏非常火爆!本文将介绍大逃杀游戏的开发和发展前景。 大逃杀游戏 大逃杀游戏是当下的一种新型游戏模式,旨在为玩家提供…

odoo17 | 计算字段和更改事件

前言 模型之间的关系是任何Odoo模块的关键组成部分。它们是任何业务案例建模所必需的。然而,我们可能希望给定模型中的字段之间存在链接。有时一个字段的值是由其他字段的值决定的,而有时我们希望帮助用户进行数据输入。 这些案例得到了计算字段和onch…

JavaScript 基础四 函数使用、传参、返回值、作用域、匿名函数

JavaScript 基础四 函数 1.1 函数1.2 函数使用函数名命名规范函数的调用 1.3 函数传参(1)声明语法(2)调用有参函数(3)形参和实参(4)参数默认值 1.4 函数返回值(1&#xf…

HTML如何设置多图片上传,并限制格式类型

在HTML如何设置多图片上传&#xff0c;并限制格式类型为jpg和png格式。 <input type"file" name"fileInput" id"fileInput"> 上面这行代码&#xff0c;只支持单个文件上传&#xff0c;且不支持文件类型过滤&#xff0c;在实际开发过程中&…

Mybatis Plus 条件构造器的简单介绍 以及IService 的简单使用

文章目录 Mybatis Plus条件构造器LambdaWrapper自定义SQLService接口 Mybatis Plus 条件构造器 简单案例演示 特殊案例更新 UpdateWrapper 更新几个用户的余额减少200LambdaWrapper 因为上方为硬编码&#xff0c;所以不建议 而是使用反射&#xff08;Lambda&#xff09;这样…

AI的突破与融合:2024年中国智能技术的新纪元_光点科技

随着人工智能领域的不断突破&#xff0c;2024年注定将成为中国智能技术发展的一个新纪元。当下&#xff0c;AI技术不仅在理论研究上取得了重大进展&#xff0c;其在商业应用、社会服务等领域的融合也日益深入。本文将结合近期网络上的AI热点&#xff0c;展望中国在AI技术方面的…

Windows关闭自动更新

winR 打开运行界面&#xff0c;输入taskschd.msc 在任务计划程序中找到/Microsoft/Windows/WindowsUpdate&#xff0c;并禁用该任务。

告别复杂排版:Markdown语法指南

导语&#xff1a;Markdown作为一种轻量级的标记语言&#xff0c;以其简洁、易学的语法和强大的兼容性赢得了广泛的应用。本文将为您详细介绍Markdown的起源、基本语法及其在写作、博客、项目管理等场景的应用&#xff0c;带您领略这一简洁高效的文本编写工具的无穷魅力。 Mark…

超实用!人力资源都在找的工资核算管理系统,内含公式,个税自动计算!

——“有没有推荐的工资核算管理系统&#xff1f;” ——“你要做工资核算&#xff0c;就不能只做工资核算。” 人事的工作一般分为“六大模块”&#xff0c;即人力资源规划、招聘与配置、培训与开发、绩效管理、薪酬福利管理、劳动关系管理&#xff0c;六大模块分工协作并有…

JRT打印元素绘制协议之-A4Double

以前打印相信很多人因为A4打印两个报告头大过&#xff0c;M要把一堆报告既有A4的也有A5的还有微生物的&#xff0c;可能输出Page还不那么严谨。要么换页不对叠加了、要么多空白页、中间夹杂A4报告就更加头大。也有的人为了打印页码的共几页而头大。 借助新设计的优势&#xff…

搜维尔科技:【简报】第九届元宇宙数字人设计大赛,报名已经进入白热化阶段!

随着元宇宙时代的来临&#xff0c;数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划与美术设计的专业核心能力&#xff0c;我们特别举办了这场元宇宙数字人设计赛道&#xff0c;赛道主题为「AI人工智能科技」 &#xff0c;只要与「AI人工智能科技」相关的…

Docker·1(简介、安装、基本使用)

目录 1. 什么是Docker1.1. 什么是容器1.2. 什么是Docker 2. 安装Docker3. 镜像操作3.1. 拉取镜像3.2. 卸载镜像/容器3.3. 使用镜像/容器 4. 相关指令说明 1. 什么是Docker 1.1. 什么是容器 虚拟机&#xff1a; 操作系统是一个很笨重的程序&#xff0c;即是啥都不干&#xff0c…

MAC 中多显示器的设置(Parallels Desktop)

目录 一、硬件列表&#xff1a; 二、线路连接&#xff1a; 三、软件设置&#xff1a; 1. 设置显示器排列位置及显示参数 2. 分别设置外接显示器为&#xff1a;扩展显示器&#xff0c;内建显示器为主显示器 3. 设置Parallels Desktop屏幕参数 四、结果 一、硬件列表&a…

部署KVM虚拟化平台

一、KVM简介&#xff1a; KVM是Kernel Virtual Machine 的简写&#xff0c;目前Linux发行版必须在64位的系统环境才能运行KVM,同时硬件需要支持VT技术。KVM自Linux 2,6.20版本后就直接整合到Linux内核.它依托CPU虚拟化指令集&#xff08;如intel-VT.AMD-V&#xff09;实现高性…

RTSP/Onvif安防平台EasyNVR接入EasyNVS显示服务不存在的原因及解决办法

EasyNVS云管理平台具备汇聚与管理EasyGBS、EasyNVR等平台的能力&#xff0c;可以将接入的视频资源实现统一的视频能力输出&#xff0c;支持远程可视化运维等管理功能&#xff0c;还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户在现场部署EasyNVR&#xff0c;…

HTTP模块

一、Web服务器 当应用程序&#xff08;客户端&#xff09;需要某一个资源时&#xff0c;可以向一台服务器&#xff0c;通过Http请求获取到这个资源&#xff1b;提供资源的这个服务器&#xff0c;就是一个Web服务器 目前有很多开源的Web服务器&#xff1a;Nginx、Apache&#xf…

设计领域不可缺少的10款PS插件,2023年必知!

即时设计 即时设计是一个更快更简单的产品协作设计平台。即时设计主要用户人群涵盖产品经理&#xff0c;设计师和工程师&#xff0c;其核心功能点包括&#xff1a;智能标注、一键切图、多样批注、快速交互、全貌画板、团队管理。从产品到开发&#xff0c;真正实现了只要一个文…