文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在十万人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍。
首先要知道,物理地址=块号+页内地址
所以物理地址和逻辑地址后面部分是相同的,即都为页内地址。
下面以一个例子说明如何由逻辑地址求物理地址
首先是分页存储
(1)某虚拟存储器的用户编程空间共64个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
由“内存为16KB”,2^4=16得知块号占4位。
即则逻辑地址0A5C(H)所对应的物理地址是265C;
由“内存为16KB”,2^4=16得知块号占4位。
即则逻辑地址0A5C(H)所对应的物理地址是265C;
()(PCB)
TBL(Translation look-aside buffer, )+TBLTBLTBL
Hierarchical Paging()
分页存储有内部碎片。
接下来是分段存储segmentation
为什么要引入分段存储呢,简单地说分页管理方式是从计算机的角度考虑设计的,以提高内存利用率,提高计算机的性能,且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便编程,信息保护和共享,动态增长以及动态链接等多方面的要求。
段式管理方式按照用户进程的自然段划分逻辑空间。例如,用户进程由主进程,两个子进程,栈和一段数据段构成,于是便可以把这个用户进程分为五段,每段从0开始编址,并分配一段连续的地址空间(段内要求连续,段间可以不连续)。
s, d>)
段页式存储
页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序逻辑的结构并有利于段的共享,结合起来便形成了段页式存储管理。
在段页式系统中,作业的逻辑地址为三部分:段号,页号和页内偏移。