存储管理1-分区管理,伙伴系统
来源:互联网 发布:如何成为淘宝分销商 编辑:程序博客网 时间:2024/05/16 00:56
本文为笔记总结
多道程序存储管理:
分区程序管理:分为系统区,用户区(再分为若干分区)
一 固定分区存储管理(分区大小个数确定不变);
管理:内存分配表:记录分区号,起始地址,空间大小,状态及占用进程名
特点:简单,开销小,内部碎片浪费,分区总数固定,缺乏内存保护;程序大小不超过分区大小
二 可变分区管理
从用户区动态创建,不预先分区;
最后会形成占用区与空闲区相间布局,
管理:分区表(已占用,空闲分区表)
分区链(表):起始地址递增顺序
特点:灵活,无内部碎片,有外部碎片
分区分配算法:
1.首次适应分配算法:顺序查找空闲分区表,选择第一个满足空间要求的分区,一部分分给作业,剩余部分仍为空闲分区。性能最好
2下次适应分配算法:第二个进程从第一个进程落脚分区开始查找,到达结尾返回开头;使得空闲分区更均匀,性能略逊
3.最佳适应分配算法:找到满足作业空间要求的最小空闲分区,外部碎片会非常零散;
性能最差
4.最坏适应分配算法:满足作业空间需求的最大空闲分区进行分割,外部碎片不会太小,有利于中小进程
分区回收:
将上下邻空闲区(如果有的话)合并,合并或插入空闲分区表;
碎片问题:
分区回收解决了一部分,
内存紧缩技术:另外所有进程占用空间尽可能往地址一端移动(如低端),高端形成新的空闲大分区;花费时间长注意地址重定位问题;
地址重定位:地址映射---逻辑地址转化为物理地址
物理地址:内存地址,绝对地址,实地址;只有通过物理地址,才可对内存单元进行直接访问;
逻辑地址:相对地址,虚地址;编译后目标代码,首地址为0;
还有后面的虚拟地址,注意区分;
静态重定位:程序装入内存时,直接对代码修改,完成转换;简单,无需硬件支持,缺点:装入内存,不可移动;
动态重定位:程序装入内存时,不修改,运行访问内存单元时,进行地址转换;由硬件完成(设置基地址寄存器,装入进程的分区起始地址,访问内存时,相对地址加之)
存储保护:
上下界寄存器保护模式
基址寄存器+限长寄存器
三 伙伴系统:
对固定,可变分区的折中;
已分配,空闲分区,大小均是2的k次方;
找到或分割得到满足进程要求空间的最小分区(和伙伴分区),分区满足pow(2,i-1)<k<=pow(2,i)
合并时,伙伴分区空闲,一直合并下去;
特点:存在内部碎片,外部碎片极少;搜索空闲块速度快,找到满足要求的第一个即可;合并简单
- 存储管理1-分区管理,伙伴系统
- 内存管理---伙伴系统---
- 动态多分区存储管理模拟系统
- 管理系统存储--分区划分以及删除
- 内存管理-----伙伴系统---2
- 可变分区存储管理
- 可变分区存储管理
- 分区存储管理方式
- 分区存储管理方法
- 分区存储管理
- 伙伴系统之伙伴系统概述--Linux内存管理(十五)
- 分区计量管理系统
- linux系统分区管理
- 系统分区管理 加密
- 管理系统分区问题
- 伙伴宿舍管理系统(源码下载)
- Linux系统内存管理之伙伴系统分析
- Linux系统内存管理之伙伴系统分析
- 【旧资料整理】xampp Apache DocumentRoot跨分区配置要点及Access forbidden解决方法
- 【家庭火情监测系统】零、项目简介
- webUI自动化测试框架(二):代码分层-基础层
- 两个独立系统中比较同一名字的文件是否相同
- JavaScript 六种继承方式
- 存储管理1-分区管理,伙伴系统
- 160CrackMe之001Acid burn
- 存储管理2-页式与段式存储管理
- 一个好用的python测试框架(pytest)及其CI设置
- Container With Most Water
- 【undefined与null的区别】
- 存储管理3-虚拟存储技术
- Others7_北京三/四日游规划
- RxJava 1.0版本入门篇之--3