悬赏园豆:30
[已关闭问题]
<P>看Tanenbaum的《现代操作系统》,有一句话 不太明白:</P>
<P>原文:</P>
<P>Relocation during loading does not solve the protection problem. A malicious program can always construct a new instruction and jump to it. Because programs in this system use absolute memory addresses rather than addresses relative to a register, there is no way to stop a program from building an instruction that reads or writes any word in memory. In multiuser systems, it is highly undesirable to let processes read and write memory belonging to other users.</P>
<P>译文:</P>
<P>在程序装入时对程序进行重定位并没有解决保护问题。 一个恶意的程序总是能建立一条指令并跳转至该指令。 “因为这种系统中的程序使用绝对地址来访问内存,而不是使用相对某个寄存器的偏移地址,因此没有办法防止一个程序来建立一条读写任意存储位置的指令。” 在多用户系统中,这是非常不好的,因为我们不希望一个用户的进程可以访问其他用户的存储位置。</P>
<P>问题:</P>
<P>1 怎么理解双引号里的话? 为什么用了绝对地址来访问内存就不能阻止程序来访问任意存储位置?程序发出的地址请求不都是要经过MMC的么?难道不可以在MMC里进行安全控制? </P>
<P>2 如果绝对地址真的没法控制,为什么采用相对某个寄存器的偏移地址就可以实现安全控制了呢?</P>