l******d 发帖数: 530 | 1 前几天面试一个问题被问道这个问题,
我说0地址附近的地址用来放 interrupt vector等之类的系统数据,面试官说他问的是
virtual memory,不是physical memory的0地址;
然后我说vm的0地址一般用来实现null pointer,他说这是原因之一,还有呢?
我想不出来,他就说了page table之类的,我没听明白。最后挂了。后来想想,难道是
因为page table被map到vm的0地址?这个原因不是跟第一个原因差不多吗,反正就是用
来放系统数据。这种问题的答案基本都是design choice吧,没有绝对的原因,把系统
数据放在别的地方,比如0x2b2b2b2b开始的地址,一样可以让用户程序访问0地址呀 |
r*********r 发帖数: 3195 | 2 interrupt vector 和 page table 确实不是一个层面上的概念。
基本上所有的系统都会用 interrupt table, 但是只有用 virtual memory
的才有 page table. |
l******d 发帖数: 530 | 3 确实不是一个层面的概念,但都它们都是不能让用户直接访问的数据,这点是一样的吧
打个比方,你问别人为什么不经过张三同意就不能拿属于张三的东西,人家答出来了,
你还要问别人问什么不经过李四同意就不能拿属于李四的东西,难道还要别人重复答一遍
【在 r*********r 的大作中提到】 : interrupt vector 和 page table 确实不是一个层面上的概念。 : 基本上所有的系统都会用 interrupt table, 但是只有用 virtual memory : 的才有 page table.
|
t****t 发帖数: 6806 | 4 这个主要原因是为了catch null pointer. 至于是放page table还是别的, 都不重要,
不放也可以的. 你一开始答interrupt vector就错了. x86 real mode才把interrupt
vector放在0.
【在 l******d 的大作中提到】 : 前几天面试一个问题被问道这个问题, : 我说0地址附近的地址用来放 interrupt vector等之类的系统数据,面试官说他问的是 : virtual memory,不是physical memory的0地址; : 然后我说vm的0地址一般用来实现null pointer,他说这是原因之一,还有呢? : 我想不出来,他就说了page table之类的,我没听明白。最后挂了。后来想想,难道是 : 因为page table被map到vm的0地址?这个原因不是跟第一个原因差不多吗,反正就是用 : 来放系统数据。这种问题的答案基本都是design choice吧,没有绝对的原因,把系统 : 数据放在别的地方,比如0x2b2b2b2b开始的地址,一样可以让用户程序访问0地址呀
|
l******d 发帖数: 530 | 5 我说了catch null pointer这个原因,那面试官说这是原因之一,还要我回答另一个原
因。我的答案总结成两条
1. 防止用户访问一些重要数据
2. catch null pointer
就这样面试官还不满意,我还要答什么?
,
【在 t****t 的大作中提到】 : 这个主要原因是为了catch null pointer. 至于是放page table还是别的, 都不重要, : 不放也可以的. 你一开始答interrupt vector就错了. x86 real mode才把interrupt : vector放在0.
|
m*****e 发帖数: 4193 | 6 It's probably not what you said but how you said it.
【在 l******d 的大作中提到】 : 我说了catch null pointer这个原因,那面试官说这是原因之一,还要我回答另一个原 : 因。我的答案总结成两条 : 1. 防止用户访问一些重要数据 : 2. catch null pointer : 就这样面试官还不满意,我还要答什么? : : ,
|