计算机体系结构/内存分层体系内容:
1)计算机系统结构
2)内存分层体系
3)在操作系统的内存管理范例
一、计算机系统结构主要包含了三大内容:
1、cpu:完成对整个程序的控制
2、内存:放置了程序的代码和管理的数据
3、外设:配合程序发挥更大的作用
三、操作系统到底要完成的重点事情
五、在操作系统中管理内存的不同方法
程序重定位,分段,分页,虚拟内存,按需分页虚拟内存
ps:其实现高度依赖于硬件,必须知道内存架构,MMU(内存管理单元):硬件组件负责处理cpu的内存访问请求。
连续内存分配所涉及的问题:
内存碎片问题
分区的动态分配(第一分配,最佳适配,最差适配)
压缩式碎片整理
交换式碎片整理
一、内存碎片问题
可以理解为当给一个运行的程序分配一个空间之后,会出现一些无法进一步利用的空间。
1.外部碎片:分配单元之间无法利用的空间
2.内部碎片:运行的程序无法对所分配好的空间进一步的使用
2、最优适配算法(best fit)–最适合分配请求的size
基本原理和实现:
1)按尺寸排列空闲块列表
2)分配需要寻找一个合适的分区
3)重分配需要搜索及合并于相邻的空闲分区(若有)
优点:
对于大多数小内存分配的情况比较合适,比较简单。避免了分割大的空闲块,并且最小化外部碎片产生的尺寸
缺点:
将外碎片分配得比较细,重分配慢,而且容易产生很多没用的微小碎片(不怎么好)
3、最差适配算法(worst fit)—与请求差距最大的size分配
大块变成了小块,小块进行保留
基本原理和实现:
1)按差距的尺寸最大进行排列空闲块列表
2)分配很快(获得更大的分区)
3)重分配需要合并相邻的空间分区(若有),然后调整空闲块列表
优点:
假如分配是中等尺寸效果最好
缺点:
易于破坏大的空闲块以致于大分区无法被分配
小结:应用请求的需求是随机的和可变的,这些算法都不可能满足全部的应用请求的。
以下两种方法减少碎片的产生
1.压缩式碎片整理
2.交互式碎片整理
一、压缩式(compression)碎片整理
重置程序以合并孔洞
要求所有程序是动态可重置的
内存拷贝前思考两个问题:
1)什么时候考虑内存的重定位是合适的
当程序处于等待的状态之中可以开始内存的重定位
2)考虑开销大不大
仅仅利用软件的移动实现开销是很大的
二、交换式(swap)碎片整理
考虑几个问题
1)考虑将那一个程序拷贝到磁盘中去?
2)什么时候做这个换入和换出的操作?
3)换入换出的开销?
需要后续的知识补充
参考链接:https://www.bilibili.com/video/av6538245?p=15