一 存储器层次模型:
(一)存储层至少有三级:CPU寄存器、主存和辅存(磁盘等)。
(二)传统分为六层(由上向下,速度由快到慢,容量由大到下):
1.寄存器:访问速度最快,完全能与CPU协调工作,但价格十分昂贵,所有容量不大。
2.高速缓存(cache):将主存中经常访问的信息存放在高速缓存中,减少主存储器的访问次数,可大幅提高程序执行速度。依据程序局部性原理。
3.主存:保存进程运行时的程序和数据,由于主存速度远低于CPU,所以引入了寄存器和高速缓存。
4.磁盘缓存:利用主存中的存储空间来暂存从磁盘读出(或写入)的信息。
5.磁盘
6.可移动存储介质。
二 内存的分配方式:
(一)连续分配方式:
1.固定分区(连续分区):将内存用户空间划分为多个固定大小的静态分区,进程被装入大于或等于自身大小的分区。
*分区的大小可以是长度都相等;或者不等,分为多个较小分区、适量中等分区,少量较大分区。
*优点:实现简单,开销小。
*缺点:有内部碎片,内存使用不充分;活动进程的最大数目是固定的。
2.动态分区(连续分区):分区是动态创建的,每个进程可以被装入与自身大小相等的分区中。
*优点:没有内部碎片;可以充分使用内存。
*缺点:有外部碎片,由于需要压缩外部碎片,处理器利用率低。
(二)离散分配方式:
3.简单分页:内存被划分为许多大小相等的页框;每个进程被划分成许多大小与页框大小相等的页;要装入进程,需要把进程的所有页都装入内存中不一定连续的某些页框中。
*优点:没有外部碎片。
*缺点:有少量内部碎片。
4.简单分段(段的大小不固定):每个进程被划分成许多段;要装入进程需要把进程包含的所有段都装入内存中不一定连续的某些动态分区中。
*优点:没有内部碎片,相对于动态分区,提高了内存利用率,减少了开销。
*缺点:存在外部碎片。
5.虚拟内存分页:除了不需要把进程的所有页都装入内存之外,与简单分页一样;非驻留页在以后需要时调入内存。
*优点:没有外部碎片;巨大的虚拟地址空间。
*缺点:复杂的内存管理开销。
6.虚拟内存分段:除了不需要把进程的所有段都装入内存之外,与简单分段一样;非驻留段在以后需要时调入内存。
*优点:没有外部碎片;巨大的虚拟地址空间;支持共享和保护。
*缺点:复杂的内存管理开销。
三 虚拟内存的实现(来自维基百科):
(1)window下实现:
在Windows NT系列中,例如Windows XP,用于实现虚拟内存的文件则以系统分区根目录下的页面文件 pagefile.sys(具有隐藏、系统属性)形式来保存。这些文件的大小——即pagefile.sys文件大小的默认值是物理内存的1.5倍。
(2)linux下实现:
在Linux操作系统支持两种形式的交换空间:交换分区和交换文件。 交换分区:在磁盘中专门分出一个磁盘分区用于交换 交换文件:创建一个文件用于交换 交换空间大小没有规定特定的值,如果物理内存较小(小于512M字节)时,一般设置为物理内存的1.5倍到2倍。