由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 为什么virtual memory的0地址不能给用户程序访问
相关主题
纯虚函数问题问个C++中重复删除指针的问题
一个简单的小问题作为返回值得实参是用指针还是引用比较好?
C++ Q05: pointer to constant variable请教 C++的一个困惑 (operator delete)
一个C#使用C++.NET类库的问题再问一个弱问题:为什么程序地址0-0x08000000是不可用的 (转载)
随机数发生器问题请教一道面试题
delete this problemdereference a NULL pointer in C
C 多线程的一个问题C++小插曲
一个小问题[合集] what's the trick of passing pointers
相关话题的讨论汇总
话题: 地址话题: 用户程序话题: memory话题: interrupt话题: virtual
进入Programming版参与讨论
1 (共1页)
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
: 就这样面试官还不满意,我还要答什么?
:
: ,

1 (共1页)
进入Programming版参与讨论
相关主题
[合集] what's the trick of passing pointers随机数发生器问题请教
Pointer to iterator?delete this problem
问个程序问题C 多线程的一个问题
我有个很傻的问题,关于function call via pointer一个小问题
纯虚函数问题问个C++中重复删除指针的问题
一个简单的小问题作为返回值得实参是用指针还是引用比较好?
C++ Q05: pointer to constant variable请教 C++的一个困惑 (operator delete)
一个C#使用C++.NET类库的问题再问一个弱问题:为什么程序地址0-0x08000000是不可用的 (转载)
相关话题的讨论汇总
话题: 地址话题: 用户程序话题: memory话题: interrupt话题: virtual