存储管理中首先要面对的第一个boss是内存管理。内存管理需要考虑这两个问题:
- 1)内存管理需要解决什么问题?
- 2)内存管理方式有哪些?
那接着具体看看两个问题。
1)内存管理需要解决什么问题?
程序运行需要存储空间,将自身的代码和数据存放起来。为了更好的满足程序对内存提出的存储要求,需要解决的问题如下:
1. 重定位:如何确定程序所在的地址位置
2. 保护:程序之间相互独立的代码和数据如何确保互不干扰
3. 共享:程序之间相互通信的代码和数据如何确保通信
4. 逻辑组织:程序内部如何组织代码和数据
5. 物理组织:存储器如何组织代码和数据
简单点:需要解决怎么在存储中圈一块地出来给程序。在存储中圈的地,保证这块地的使用是当前程序说了算的,同时程序内或程序之间的是可以相互定位的。这就是内存管家需要做的事情。
2)内存管理方式有哪些?
内存管理方式是啥?就是怎么圈地!
1. 固定分区分配:每块地都是已经圈好了的,自己拿。
2. 动态分区分配:按需分配,要多少给多少。少给不行!多给不行!
3. 伙伴系统:一半分你多么,太多了,一半再分成两半分你一半,……
4. 分页分配:一个人,一块地(每块地大小一样)。一家有几个人,每个人自己拿一块地。
5. 分段分配:你家打猎,去拿山头;他家种稻,去拿良田;我家养鱼,去拿小池塘。
以上,说话的方式有点简单。
知道怎么圈地了,看看第二步,怎么分地。(先不考虑别的操作,只考虑内存够用)
2.1 固定分区分配
将内存提前分配好,一种是平均的分