操作系统之存储管理

计算机存储结构

1 CPU寄存器:速度最快,但个数有限。
2 高速缓存Cache:多由硬件控制,可以暂存内存数据,速度比内存快,但容量仍然有限。
3 内存:速度快,容量较大,但信息断电消失,不能长久保存大容量数据。
4 外存:磁盘等可以永久保存信息的大容量存储介质,作为存储补充,其成本也较低。
5 远程存储:远程访问存储介质。

        在这个存储层次结构中,每一层的存储介质都可以作为低一层存储介质的缓存,越往上,速度越快,但成本也越高,容量也越小,因此,就有了越靠近底层速度越慢、但成本也会下降。

地址重定位

1、静态重定位 装入时对地址进行“重定位”,将逻辑地址变换为物理地址重定位

2、动态重定位 装入时并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。

物理内存管理

分区存储方式

1.固定分区分配

        系统预先把用户区划分为个数固定的若干个区域,每个区域叫作分区,分区的大小可以相等,也可以不等,一个用 户进程只占据一个分区。当程序要装入内存运行时,若有合适大小的空闲分区则装入内存,否则等待。
        操作系统可通过分区表或分区链表来实现存储管理,表中一般应包含每个分区的分区号、起始地址、长度、状态以及占据该分区的进程名。 这种方式非常简单,开销也小,但同时它也存在两个方面的问题。一是由于每个分区的大小已经固定下来,进程可 能因为太大而不能放进任何一个分区中,另外,由于分区个数的固定,也限制了并发进程的数目;二是内存利用率低,比如,如果某个进程并没有占据整个分区,在分区内部产生了内部碎片,从而造成内存空间浪费。

2.动态分区分配

        动态分区分配是一种按需分配的可变分区分配方式,在这种方式中,分区的划分不是预先确定的,而是在进程装入 内存时,根据其大小寻找一个能满足要求的空闲分区,动态地为进程建立分区。 操作系统需要通过一个空闲表或者空闲链来记录目前系统中空间的分区。在内存分配时,通过查找空闲表或空闲链 找到一块大小合适的内存分区分配给当前进程,对于同一个进程的内存分配请求,不同的分配算法可能会选择不同的空闲分区。

你可能感兴趣的:(linux,数据结构)