程序装载到内存才可以运行
- 通常,程序以可执行文件格式保存在磁盘上
多道程序设计模型
- 允许多个程序同时进入内存
每个进程有自己的地址空间
一个进程执行时不能访问另一个进程的地址空间
进程对于内存空间不能执行不适合的操作
进程中 的地址 不是 最终的物理 地址
在进程运行 前无法计算出物理地址
因为:不能确定进程被 加载到内存什么 地方
→→ 需要 地址重定位 的支持
地址转换、地址变换、地址翻译、地址映射Translation 、Mapping
逻辑地址(相对地址,虚拟地址)
用户 程序经过 编译、汇编后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0 ,其余地址都相对于首地址而编址不能用逻辑地址在内存中读取信息
物理地址(绝对地址,实地址)
内存中存储单元的 地址 可直接寻址
为了保证CPU 执行指令时可正确 访问内存单 元, 需要将 用户程序中的逻辑地址转换为运行 时可由 机器直接寻址的物理地址,这一过程称为 地址重定位
3、静态重定位与动态重定位静态重定位:
当 用户程序加载到内存时,一次性实现逻辑地址到物理地址的 转换
一般 可以由软件完成
动态重定位:
在 进程执行过程中进行地址变换,即 逐条指令执行时 完成地址转换
需要硬件部件支持
内存回收算法
当某一块归还后,前后空闲空间合并,修改内存空闲区表
四种情况
- 上相邻、 下相邻、上下都相邻、上下都不相邻
Linux 低层内存管理采用,一种特殊的“分离适配”算法
一种经典的内存分配方案
主要思想:将内存按2 的幂进行划分,组成若干空闲块链表;查找该链表找到能满足进程需求的最佳匹配块
算法:
首先将整个可用空间看作一块: 2^U
假设进程申请的空间大小为 s ,如果 满足2^(U-1) < s
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?