OS存储器管理(一)
存储器的层次:
分为寄存器、主存(内存)和 辅存(外存)三个层次。
主存:高速缓冲存储器、主存储器、磁盘缓冲存储器,
主存又称为可执行存储器;
辅存:固定磁盘存储器、可移动的外部存储器;
其可长期保存数据,但不能被处理器直接访问。
此处针对的是在OS层面上对主存(内存)的管理。
内(主)存储器管理的主要功能:① 逻辑地址到物理地址的转换 ② 内存(主存)空间的分配与回收 ③ 内存信息(数据)的共享与保护 ④ 内存的逻辑扩充(虚拟存储器的实现)




②固定分区分配
③可变(动态)分区分配
④可重定位分区分配
①单分区分配方法(Single-partition allocation)
重定位寄存器方案用来保护用户进程之间,用户进程与操作系统之间不会相互修改代码与数据
重定位寄存器包含了最小的物理地址;界限寄存器包含了逻辑地址的范围,每个逻辑地址必须小于界限寄存器

|
分区号 |
分区大小 |
起始地址 |
状态 |
|
1 |
12k |
20k |
已分配 |
|
2 |
32k |
32k |
已分配 |
|
3 |
64k |
64k |
已分配 |
|
4 |
128k |
128k |
空闲 |
|
5 |

分配:查分区说明表,找到一个足够大的空闲分区分配之;
回收:将回收分区对应的分区说明表状态改为“空闲”。
优点:内存可同时装入多道作业代码,算法实现简单;
缺点:存在浪费(分区一次性全部分配出去);会产生内部碎片。
③动态存储分配问题
算法思想:事先不划分分区,待作业需要分配内存时,再按需分配划分分区(分区的大小及个数不固定)。
数据结构:
空闲分区表或空闲分区链表 ----> 记录空闲分区的大小、地址等

空闲分区链表状况:
分配:查空闲分区链表,找到第一个足够大的分区,将其一分为二分配之;
分配策略(算法):首次适应算法,循环首次适应算法,最佳适应算法,最差适应算法
回收:先将回收分区与相邻空闲分区合并再修改空闲分区链表。
回收算法:前邻接合并,后邻接合并,前、后邻接合并,不邻接处理
* 优、缺点
按需分配,可解决浪费问题;
分配算法复杂,会产生外部碎片;
邻接合并系统开销大。
* 碎片问题
碎片:可变分区分配过程中形成的若干个非常小的无法再利用的小分区,形成外部碎片
碎片分为外部碎片和内部碎片。
处理碎片的方法:
1.紧缩(compaction,拼接):用来降低外部碎片移动内存内容,以便所有空闲空间合并成一整块。
如果重定位是动态的,是在运行时进行的,那么就能采用紧缩
2.另一种可能解决外部碎片问题的方法是允许物理地址空间为非连续,这样只要有物理内存就可为进程分配:分页或分段
④可重定位分区分配
* 算法思想
在可变分区分配算法的基础上,采用动态重定位方式装入程序(数据)。当无足够大的分区供分配时,若总的空闲存储容量够用,则将各分区中的内容向内存一端移动(紧凑),使另一端形成一个大的空闲分区,然后再分配。
例:前例若要为作业10分配120k的存储空间,因无足够大分区(总空闲容量290k),则先进行合并处理:

内存的离散分配方式见下篇。
OS存储器管理(一)的更多相关文章
- OS存储器管理(三) 虚拟存储器
基本概念与实现 1)局部性原理 在一段时间内,运行的作业程序仅访问(涉及到)一部分作业代码,即不会涉及整个地址空间.即在一段时间间隔内,仅装入一部分代码,作业照样能正常运行 2)虚拟存储器的引入 作业 ...
- OS存储器管理(二)
离散分配 分页(Paging),分段,段页式 一.分页 一个进程的物理地址可以是非连续的: 将物理内存分成固定大小的块,称为块(frame): 将逻辑内存分为同样大小的块,称为页(page): ...
- MMU——存储器管理单元
更多文档参见:http://pan.baidu.com/s/1qW0hjwo MMU,全称Memory Manage Unit, 中文名——存储器管理单元. 许多年以前,当人们还在使用DOS或是更古老 ...
- Intel 80386 微处理器的存储器管理
一.存储器的管理 存储器的管理是一种硬件机制,微处理器在总线地址上对物理存储器进行寻址.但是,为了给程序提供比物理存储器容量更大的空间,就引入了虚拟存储器的概念,它在外存(比如磁盘)的支持 ...
- 从内存管理原理,窥探OS内存管理机制
摘要:本文将从最简单的内存管理原理说起,带大家一起窥探OS的内存管理机制,由此熟悉底层的内存管理机制,写出高效的应用程序. 本文分享自华为云社区<探索OS的内存管理原理>,作者:元闰子 . ...
- Mac OS 下包管理器 homebrew的安装
homebrew :熟悉mac os的小伙伴们一定都知道这个包管理工具,它非常方便且好用,安装它只需要打开终端并将以下代码粘贴到终端中运行即可: /usr/bin/ruby -e "$(cu ...
- 8、Cocos2dx 3.0三,找一个小游戏开发3.0存储器管理的版本号
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27693365 复杂的内存管理 移动设备上的硬件资源十 ...
- ARM“庖丁解牛”之存储器管理单元MMU
转:http://blog.sina.com.cn/s/blog_a07635070101bcbt.html 最近笔者详细地学习了由杜春雷老师编写的<ARM体系结构与编程>.对ARM存储管 ...
- MMU内存管理单元相关知识点总结
1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件 ...
随机推荐
- 编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Stud
package zuoye; public class student { int age; String name; int stuNO; void outPut() { System.out.pr ...
- WCF绑定和行为在普通应用和SilverLight应用一些对比
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 绑定 普通应用和SilverLight应用区别 本文版权归mephisto和博客园共有, ...
- DDNS
一.DDNS简介 DNS,域名系统,是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人们更方便的访问互联网. DDNS,动态域名系统,是域名系统(DNS)中的一种自动更新名 ...
- ASP.NET Core 1.0 安装并发布到Centos 7.2 使用jexus 5.8.2
安装运行环境 sudoyuminstall libunwind libicu 下载.net core https://www.microsoft.com/net/download 下载完后上传文件 安 ...
- SQLITE配置环境变量
SQLITE配置环境变量和Java的配置其实是一样的,不过好像每个人配的时候不完全相同, 有的机器可以,另外一些机器同样的方法却行不通,总之思路是一样的多试几种,总有合适的参数 下面是我在配置时截 ...
- 连载《一个程序猿的生命周期》-6、自学C++,二级考过后,为工作的机会打下了基础
一个程序猿的生命周期 微信平台 口 号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103 微 博:h ...
- Objective-C声明在头文件和实现文件中的区别
Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件 ...
- POJ 2826 An Easy Problem?! --计算几何,叉积
题意: 在墙上钉两块木板,问能装多少水.即两条线段所夹的中间开口向上的面积(到短板的水平线截止) 解法: 如图: 先看是否相交,不相交肯定不行,然后就要求出P与A,B / C,D中谁形成的向量是指向上 ...
- 利用注解进行sql反射代码示例
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Table { String val ...
- Java正则获取邮箱
实现思路 1.使用Java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过 ...