操作系统之内存管理: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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值