虚拟内存
虚拟内存是进程和内存的物理地址之间的桥梁,进程操作的地址是虚拟地址,这样就可以避免直接操作物理地址可能引起的冲突,操作系统将虚拟地址和物理地址映射起来。映射的方式是内存分段和内存分页
内存分段
当一段程序写好之后,程序中的各个部分主函数、变量、动态数组等等会被分配到不同的段中。如下图所示:
查找位置的时候通过段基址+偏移地址的方式来寻找实际的物理地址。
段基址则固定在PCB里面的进程段表,CPU每执行一条涉及地址的指令都会查下这个PCB表。
内存碎片
内存分段中,程序在内存里面是连续的,内存在分配给一个个程序空间之后,会剩下许多的空闲分区。此时,如果需要一个40K大小的内存,会将第一个满足要求的内存分配出去。但是如果此时有一个160K的内存需求程序,而剩下的空闲列表只有150K的和50K的,都不够,这个就是内存碎片。