目录
1动态重定位
作用
把每个进程的地址空间映射到物理内存的不同部分
实现
每个CPU配置2个特殊的硬件寄存器,叫作基址寄存器和界限寄存器,当一个程序运行时,程序的起始物理地址装载到基址寄存器中,程序的长度装载到界限寄存器中,每次一个进程访问内存,取一条指令,读或写一个数据字,CPU硬件会在把地址发送到内存总线之前,自动把基址值加到进程发出的地址值上,同时,它检查程序提供的地址是否等于或大于界限寄存器里的值,如果地址超出界限,则产生错误并中止访问
缺点
每次访问内存都需要进行加法和比较运算,加法由于进位传递时间的问题,在没有使用特殊电路的情况下会显得很慢
2分段
把一个程序分成好几个段,每个段有各自的特点,各自的用途,分别放入内存
如何定位具体指令?<段号,段内偏移>,寻址的时候要地址要加上对应的段的基址,原来的PCB中只需要放整个程序的基址,分段后,PCB中要放每一个段的基址,这个称为进程段表(LDT)。操作系统的进程对应的段表就是GDT表