一、重定位
如图所示,操作系统将程序载入到内存中,需要找到一段连续的地址,并修改相对地址(起始偏移量)
二、交换(swap)
由此可见,载入时重定位也有问题,因为当发生交互的时候,进程再次换到了内存中,此时base地址可能变了,仍然按照第一次载入时的地址是有问题的,所以重定位应该是在运行时发生
三、运行时重定位
四、分段
PCB里面需要放每一个段的基址(LDT表,即段表):
cpu上线文切换:zhuanlan.zhihu.com/p/52845869
如图所示,操作系统将程序载入到内存中,需要找到一段连续的地址,并修改相对地址(起始偏移量)
由此可见,载入时重定位也有问题,因为当发生交互的时候,进程再次换到了内存中,此时base地址可能变了,仍然按照第一次载入时的地址是有问题的,所以重定位应该是在运行时发生
PCB里面需要放每一个段的基址(LDT表,即段表):
cpu上线文切换:zhuanlan.zhihu.com/p/52845869