[操作系统]内存的基础知识
什么是内存
1.存储单元
用于存放数据的硬件,程序执行前先放到内存中才能被CPU处理
2.内存地址
给内存存储单元编地址,从0开始每个地址对应一个存储单元,可以按字节编址,也可以按字长编址,一个存储单元一个字节或字长
内存运行的基本原理
1.指令的工作原理
内存有数据段和程序段,指令存放在程序段,变量存放在数据段
程序编译成指令,会告诉CPU应该去内存的哪个地址存取数据,数据应该进行怎样的处理
2.逻辑地址 vs 物理地址
逻辑地址是相对地址 , 物理地址是绝对地址 ,编译后装入过程是把逻辑地址到物理地址转换
3.从写程序到程序运行:编辑-->编译-->链接-->装入
编译:把高级语言编译成机器语言,生成多个目标模块
链接:把目标模块形成完整逻辑地址
装入:形成物理地址
4.三种链接方式->形成逻辑地址
静态链接:将各目标模块和所需库函数连接成完整的可执行文件
装入时动态链接:边装入边链接
运行时动态链接:边运行边链接
5.三种装入方式->形成物理地址
绝对装入:编译时就知道程序产生的绝对地址
静态重定位:编译后装入的时候将逻辑地址转换成物理地址,位置不可更改
动态重定位:运行时指令运行的过程中进行逻辑地址到物理地址转换,现在都采用这种方式,需要重定位寄存器
内存空间的分配和回收
内存空间的扩展(虚拟性,把物理较小的内存扩展成较大的内存)
内存的地址转换
绝对装入:编译时就知道程序产生的绝对地址
静态重定位:编译后装入的时候将逻辑地址转换成物理地址,位置不可更改
动态重定位:运行时指令运行的过程中进行逻辑地址到物理地址转换,现在都采用这种方式,需要重定位寄存器
内存保护:进程只能访问自己的内存空间
1)采用上下限寄存器
2)采用重定位寄存器和界地址寄存器,重定位(基址寄存器)存储起始物理地址,界地址寄存器(限长寄存器)存储最大逻辑地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-12-30 [PHP] PHP7已经删除了preg_replace的e修饰符
2017-12-30 [日常] 2017年2月工作总结
2017-12-30 [日常] 2017年1月工作总结