内存:系统区 + 用户区 (内存管理的主要对象)
实存管理+虚存管理
管理包括以下内容:
a.分配和回收
b.地址重定位
c.内存的共享和保护
d.虚拟存储器
a.分配和回收
静态分配方式:一次性装入内存
动态分配方式:相反_程序装入时只分配基本内存
内存分配机制: 利用 内存分配数据结构
分配时:根据 内存分配算法 分配空间 (修改相应数据结构)
回收时:回收内存(废话!) (修改相应数据结构)
b.地址重定位 ( 逻辑地址---->物理地址 )
应用程序装入内存是随机的!目标程序.obj ( 自己写的程序 经过 编译器 编译后 的文件 例如 vc写的东西)
每个首地址都为0 其他 则为 相对地址 || 逻辑地址
b1:静态重定位(软件实现)
物理地址
=
逻辑地址
+
起始地址
b2:动态重定位(硬件实现:重定位寄存器)
c.内存的共享和保护
共享:例如 多个用户共享 一个C语言编译器
两个或多个进程共享内存中相同的区域
程序共享: 为了 节省内存空间,提高内存利用率
数据共享: 为了实现 进程间的通信.
保护:使 用户程序 运行在 自己的 用户空间 中 不能访问其他区
防止地址越界:IF(越界) 产生 地址越界中断
防止越权操作:
常常需要硬件支持 从而减小系统开销
d.虚拟存储器
原理:
时间局部性: for() 函数调用
空间局部性: 顺序语句
结果:在 用户看来 内存变大了 ( 实际上是 用 CPU的时间 + 外存的空间换取的 )
虚拟内存的大小 和 内存大小无直接关系 受外存大小+系统寻址能力 的 限制
IF( 用到程序 ) 请求调入:外存---->内存
IF( 内存不足 ) 页面置换
交换技术 : 以 进程 为单位 进行
虚拟存储器: 以 页 段 为单位 进行