leiyahui

纸上得来终觉浅,绝知此事要躬行
地址空间

把内存直接暴露给进程是十分危险的,用户进程直接访问内存可能会破坏操作系统,并且同时运行多个程序是十分困难的。

所以说就引入了地址空间的概念。

要保护多个程序运行在地址空间中需要解决两个问题,保护和重定位

一个非常好的办法是创造抽象内存,引入地址空间,每个进程都拥有不同的地址空间,每个地址空间都是相互隔离的。

基址寄存器和界限寄存器

这种简单的办法可以实现动态重定位,程序加载到内存中的连续空闲位置,基址寄存器存放该进程在内存中的起始物理地址,界限寄存器存放该进程在物理内存中的长度。

当访问该进程中的一个地址的时候,比如说起始寄存器中的地址是16384,则jmp 28,被硬件解释为jmp 16412。当访问的地址超出节点寄存器的长度的时候就会发成错误并终止访问。

使用基址寄存器和界限寄存器的缺点是每次进行重定位都要进行加法和比较运算,cpu浪费比较严重。

 

posted on 2015-12-09 12:42  雷大叔  阅读(252)  评论(0)    收藏  举报