操作系统--存储管理的任务
存储管理的任务
存储管理一共有三个存储管理任务:
--存储分配
--地址映射
--存储保护
--存储共享
--存储扩充
存储分配:
-
分配基本内存空间
-
增加新的内存空间
-
回收内存空间
逻辑地址:表示相对地址,在外存中。
物理地址:绝对地址,标识内存中的每一个存储单元,在内存中
地址映射:
程序装入内存之后,由操作系统将逻辑地址改为逻辑地址+起始地址,得到的实际的物理地址。
映射的种类:
动态映射:在编译时候,对他进行映射。
静态映射:在程序装入内存时,一次性完成地址转换。(有专门的地址管理部件来进行地址的计算)
存储保护:
防止地址越界,防止操作越权。
存储共享:
为了进程通讯和节约内存空间,两个或者多个进程共用内存中相同的分区。为了节约存储空间。
存储扩充:
采用软件手段,在硬件的配合下,将部分外存空间虚拟为内存空间,并将内存和外存有机的结合起来,得到一个容量相当与外存,速度接近于内存,价格十分便宜的虚拟存储系统。
上面我们简单介绍了操作系统中存储器的使用功能。现在我们来对上面的这些功能处理中遇到的问题来做一些详细的介绍:
内存划分与分配技术
静态划分:
划分预先进行的,创建新进程的时候,在内存中找到一个合适的分区分配给他们。一旦划分完毕,分区大小和数目将不再改变。静态划分分为分区和分页两个方式。
动态划分:
创建新进程时,根据进程申请的空间大小,依照某种方式(下面的四个算法)在这个分区中动态的划分一部分空间。
动态划分涉及到一些动态划分的算法:
首次适应算法:
从一个内存的某一端开始查找,选择一个超过进程申请大小的空闲分区。如果找到的分区的大小恰好与申请的进程的存储空间的大小相同或者相差的很少的话,这个时候,我们就将这个分区全部分配给这个申请进程。否则,系统将这个分区划分为两个分区,一个分区的长度等于进程申请的空间大小,并将其分配给申请进程。然后,将另一个子分区链接到空闲分区链表中。
下次适应算法:
下次适应算法能记住上次分配分区的位置,下次实施分配时,从上次的分配位置之后开始查找,选择一个大小足够的空闲分区。
最佳适应算法:
最差适应算法: