连续内存分配 读操作系统概念第六版
来源:互联网 发布:java 量化交易系统 编辑:程序博客网 时间:2024/05/15 06:37
内存通常分为两个区域:一个用于驻留操作系统,另一个用于用户进程。
保护操作系统不受用户进程所影响,保护用户进程不受其他用户进程所影响。通过采用重定位寄存器和界限寄存器,可以实现这种保护。重定位寄存器含有最小的物理地址值;界限寄存器含有逻辑地址的值。有了重定位寄存器和界限寄存器,每个逻辑地址必须小于界限寄存器;MMU动态地将逻辑地址加上重定位寄存器的值后映射为物理地址。映射后的物理地址在送交内存单元。
当CPU调度程序选择以进程执行时,作为上下文切换工作的一部分,派遣程序会用正确的值初始化重定位寄存器和界限寄存器。
内存碎片可以是内部的也可以是外部的。设想有一个18464B大小的孔,并采用多分区分配方案。假如有一个进程需要18462B。如果值准确分配所要求的块,那么还剩下一个2B的孔。维护这一小孔的开销要比孔本身大很多。因此,通常将内存以固定大小的块为单元来分配。采用这种方案,进程所分配的内存可能比所需要的要大。这两个数字之差称为内部碎片,这部分内存在分区内,而又不能用。
一种解决外部碎片问题的方法是紧缩。紧缩的目的是移动内存内容,以便所有空闲空间合并成一整块。紧缩是有一定条件的。如果重定位是静态的,并且在汇编时或装入时进行的,那么就不能紧缩。如果重定位是动态的,是在运动时进行的,那么就能采用紧缩。对于动态重定位,可以首先移动程序和数据,然后再根据新基地址的值来改变基地址寄存器。如果能采用紧缩,还需要评估其开销。还需要评估其开销。最简单的合并算法是简单地将所有进程移到内存的一端;而将所有的孔移到内存的另一端,以生成一个大的空闲块。
- 连续内存分配 读操作系统概念第六版
- 操作系统是什么?+读操作系统概念第六版
- 进程概念 读操作系统概念第六版
- 线程概念 读操作系统概念第六版
- [操作系统概念]第六部分——内存管理(4):帧分配
- 进程同步 读操作系统概念第六版
- 硬件同步 读操作系统概念第六版
- 信号量 读操作系统概念第六版
- 地址捆绑 读操作系统概念第六版
- 分页一 读操作系统概念第六版
- 分页 读操作系统概念第六版
- 分段 读操作系统概念第六版
- 虚拟内存 读操作系统概念第六版
- 页面置换 读操作系统概念第六版
- 操作系统--内存管理之连续分配管理方式
- 操作系统-内存管理-内存空间的连续分配方式
- 由malloc内存分配是否连续 引出的 一些概念
- 进程调度1 读操作系统概念第六版
- Troubleshooting error in cloud but not happen in local
- 第一节课堂笔记
- python截取中文字符串
- 加载图片内存溢出 解决办法
- Java抽象类与接口的区别
- 连续内存分配 读操作系统概念第六版
- jsp常用标签
- jsp开发中的4个域对象
- 使用HTML5和jQuery插件Quicksand实现一个超酷的星际争霸2兵种分类展示效果
- Ising model
- 关于有符号数和无符号数的探讨
- opener与parent
- asp.net动态添加控件和获取控件的值
- Hibernate 多对一连接表单向关联