您当前的位置: 首页 > 

衣舞晨风

暂无认证

  • 3浏览

    0关注

    1156博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

OS学习笔记五:存储模型

衣舞晨风 发布时间:2017-10-07 20:26:49 ,浏览量:3

一、地址重定位 1、已知内容
  • 程序装载到内存才可以运行

    • 通常,程序以可执行文件格式保存在磁盘上
  • 多道程序设计模型

    • 允许多个程序同时进入内存
  • 每个进程有自己的地址空间

    • 一个进程执行时不能访问另一个进程的地址空间

    • 进程对于内存空间不能执行不适合的操作

  • 进程中 的地址 不是 最终的物理 地址

  • 在进程运行 前无法计算出物理地址

    • 因为:不能确定进程被 加载到内存什么 地方

    • →→ 需要 地址重定位 的支持

    • 地址转换、地址变换、地址翻译、地址映射Translation 、Mapping

2、地址重定位RELOCATION(地址翻译、地址转换、地址映射)
  • 逻辑地址(相对地址,虚拟地址)

    用户 程序经过 编译、汇编后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0 ,其余地址都相对于首地址而编址不能用逻辑地址在内存中读取信息

  • 物理地址(绝对地址,实地址)

    内存中存储单元的 地址 可直接寻址

为了保证CPU 执行指令时可正确 访问内存单 元, 需要将 用户程序中的逻辑地址转换为运行 时可由 机器直接寻址的物理地址,这一过程称为 地址重定位

3、静态重定位与动态重定位
  • 静态重定位:

    当 用户程序加载到内存时,一次性实现逻辑地址到物理地址的 转换

    一般 可以由软件完成

  • 动态重定位:

    在 进程执行过程中进行地址变换,即 逐条指令执行时 完成地址转换

    需要硬件部件支持

这里写图片描述

4、内存回收问题

内存回收算法

  • 当某一块归还后,前后空闲空间合并,修改内存空闲区表

  • 四种情况

    • 上相邻、 下相邻、上下都相邻、上下都不相邻
5、伙伴系统(BUDDY SYSTEM)

Linux 低层内存管理采用,一种特殊的“分离适配”算法

  • 一种经典的内存分配方案

  • 主要思想:将内存按2 的幂进行划分,组成若干空闲块链表;查找该链表找到能满足进程需求的最佳匹配块

  • 算法:

    • 首先将整个可用空间看作一块: 2^U

    • 假设进程申请的空间大小为 s ,如果 满足2^(U-1) < s

关注
打赏
1647422595
查看更多评论
立即登录/注册

微信扫码登录

0.0416s