1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)

  • 思维导图
  • 什么是内存?
  • 指令的工作原理
  • 装入模块的三种实现
    • 绝对装入
    • 可重定位装入
    • 动态重定位
  • 程序的运行过程
  • 链接的三种方式

思维导图

什么是内存?

内存:可存放数据,程序执行前需要放到内存中才能被CPU处理
内存的作用:主要是为了解决硬盘与CPU速度不匹配的问题
问题:
当多个程序并发执行时,如何区分各个程序的数据存放位置呢?
解决:
给内存的存储单元编址。
问题:
具体怎么编址呢?
解决:
可按字节编址:每一个存储单元大小为1字节;
也可按字编址:由机器字长决定,若机器字长为64位,每一个存储单元就是64个2进制位(8字节)
也可按半字编址

指令的工作原理

1、现在有一条指令:x=x+1
2、经过编译之后会翻译成3条机器指令(如图)
3、当程序运行时,会将程序装入内存,创建进程;产生程序段和数据段
4、然后根据机器指令中的地址找到对应的内存地址取出或者放入数据
上图中,我们从地址为79的存储单元取出数据10放入地址为3的寄存器,然后执行加一操作,然后将地址为3的寄存器中的数据在放回到地址为79的内存中。
问题:当程序经过编译后装入模块时产生的地址为逻辑地址,例如:当机器指令中存放10的地址为79但是程序在内存中的存储开始地址为100,这样的话如果没有相应措施本应该存储到179地址的数据会存储到79位置上,这是很危险的,所以我们需要对逻辑地址和物理地址进行转化

装入模块的三种实现

绝对装入

可重定位装入

装入后可执行文件中的地址都被修改为了物理地址,地址变换在装入时一次性完成

动态重定位

在装入后通过重定位寄存器和逻辑地址计算数据存放地址,即使程序移动后,也可以通过再次计算得到新的物理地址

程序的运行过程

程序从编程到运行的过程:
1、编辑
2、编译:生成目标模块
3、链接:生成装入模块,即可执行文件
4、装入

链接的三种方式

1、静态链接:将目标模块整合成一块,一起装入
2、装入时动态链接:将目标模块以独立的模块全部装入
3、运行时动态链接:在装入时将用到的模块装入,没有用到的模块则不装入

操作系统之内存管理:1、内存管理基础知识(指令工作原理、地址转化、程序运行过程)相关推荐

  1. 08.GPIO基础知识和工作原理

    GPIO基础知识和工作原理 参考资料 1.正点原子开发板资料 <STM32FXX开发指南:库函数版本>-第六章跑马灯实验 2.STM32FxXx官方资料: F429:<STM32F4 ...

  2. linux服务器基础知识及工作原理汇总

    服务器基础 一.服务器的种类 1.按网络规模划分 按网络规模划分,服务器分为工作组级服务器.部门级服务器.企业级服务器 2.按架构划分 按照服务器的结构,可以分为CISC(复杂指令集)架构的服务器和R ...

  3. HDD/SSD基础知识及工作原理

    文章目录 HDD 一.硬盘的硬件结构 1.硬盘外部结构 : 2.硬盘内部结构: 3.硬盘控制电路: 磁头 磁道 盘片 磁面 柱面 扇区 电机主轴 二.硬盘的工作原理 三.硬盘的主要参数 四.硬盘的接口 ...

  4. 什么是MPLS?多协议标签交换(MPLS)基础知识和工作原理

    <什么是MPLS?多协议标签交换> 简介 MPLS的起源 90年代中期,IP技术凭借技术简单和成本低廉实现快速发展,Internet数据海量增长.但由于硬件技术存在限制,基于最长匹配算法的 ...

  5. 固态继电器基础知识和工作原理

    固态继电器是一种完全由固态电气元件组成的非接触式开关,可以以较小的控制信号驱动大电流负载.由于电气元件(即开关晶体管.可控硅等半导体元件)的开关特性,它可以实现无接触和无火花的开关.与电磁继电器相比, ...

  6. java在程序运行过程中_Java内存管理-程序运行过程(一)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 勿在浮沙筑高台,出来混迟早要还的. 相信在做Java开发的伙伴一定知道 JVM(Java Virtual Machine( ...

  7. 内存管理——程序运行过程中内存的作用以及如何与cpu、os交互

    今年以来,内存条价格暴涨,已经跃升为新的新一代理财产品,所以今天就和大家讨论一下内存条的话题,主要内容就是在程序运行过程中,内存的作用以及如何与CPU,OS交互. 我们先来讨论:计算机的运行究竟是在做 ...

  8. C# winform程序运行过程中提示尝试读取或写入受保护的内存.这通常指示其他内存已损坏的

    C# winform程序运行过程中提示"尝试读取或写入受保护的内存.这通常指示其他内存已损坏的" 错误,如下图所示 查看详细信息如下 未处理System.AccessViolati ...

  9. [Java基础]--Java GC工作原理

    感谢原文链接:http://www.hollischuang.com/archives/76 GC的基本原理 GC是什么?为什么要有GC呢? GC是垃圾收集的意思(GarbageCollection) ...

最新文章

  1. linux socket 清空缓存区
  2. 【解决方案】Expected object of type torch.FloatTensor but found type torch.DoubleTensor
  3. linux不允许root用户登录图形界面的解决办法
  4. [DP/单调队列]BZOJ 2059 [Usaco2010 Nov]Buying Feed 购买饲料
  5. python画有权重网络图_使用Python的networkx绘制精美网络图教程
  6. 推流中转服务器,视频推流服务器EasyRTMPLive拉转推过程当中遇到复杂目的地址解决方法?...
  7. Ormlite数据库
  8. JAVA b2b2c多用户商城系统源码-服务发现服务端EurekaServer微服务
  9. 数字IC后端设计实现流程之floorplan及powerplan规划
  10. 计算机网络总结 第一章 计算机网络概论
  11. 简单的java web服务器实例
  12. VGGNet网络结构学习
  13. 无线网络监控服务器怎么,无线监控系统如何安装?
  14. 一款集成微信小助手的mac微信最新版!支持发朋友圈!
  15. Pytorch实现有监督对比学习损失函数
  16. 【秋无痕作品】Windows7SP1(32位)+XPSP3集成安装版V201108
  17. python笛卡尔坐标系_THREE笛卡尔右手坐标系详解
  18. mac pro M1(ARM)安装:ubuntu桌面版虚拟机(五)
  19. 华为LiteOS操作系统中的LOS_DL_LIST_ENTRY怎么理解?
  20. 卷积学习与传统稀疏编码、ICA模型学习区别(逐步补充)

热门文章

  1. 拼多多、腾讯 C++开发工程师面试题
  2. 不搞代码来搞我,我又动了谁的奶酪?
  3. admin.php为什么是乱码,phpadmin和MySQL中文乱码问题的剖析
  4. python中iloc的详细用法_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)...
  5. python-opencv图像处理之哈里斯角检测
  6. Windows10系统下虚拟环境的安装与使用
  7. 中国中医科学院中药资源中心2021年公开招聘应届毕业生预公告
  8. 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
  9. STM32H743+CubeMX-定时器TIM输出PWM(Out Compare模式) + 中断
  10. php mssql_init,Php Mssql操作简单封装支持存储过程