2009/9/5 Ji Cheng <memo...@gmail.com>:
--
Cheers,
Oliver Yang
Blog: http://blog.csdn.net/yayong
--------------------------------------------------------------------
An OpenSolaris Developer
On 9月6日, 下午3时53分, smzlkimi <smzlk...@gmail.com> wrote:
> 我印象中内核空间是不会被换出吧,linux线性地址3G~4G似乎常住内存。不过不确定,忘了。
> 你可以去linux zh-kernel邮件列表问下
>
> 2009/9/6 Ji Cheng <memol...@gmail.com>
On 9月6日, 下午3时53分, smzlkimi <smzlk...@gmail.com> wrote:
> 我印象中内核空间是不会被换出吧,linux线性地址3G~4G似乎常住内存。不过不确定,忘了。
> 你可以去linux zh-kernel邮件列表问下
>
> 2009/9/6 Ji Cheng <memol...@gmail.com>
hypervisor直接对IOAPIC和CPU的Local APIC
进行管理,所以不论是INTx/MSI/MSI-X都是hypervisor先截获到的,然后注入一个虚拟的中断到Guest OS.
--
即便是做hypervisor,保证中断和异常不会引起令一次page fault是非常必要的。不然就有很难解决的问题或者使得实现不够高效。
例如,page fault本身就是个异常,它引起另一个page fault不就死锁了吗?
--
Double Fault一般在各种OS上被用来处理真正的错误。发生Double Fault的通常结果是panic.
>
> 2009/9/6 Wenbo Yang <sol...@gmail.com>
>>
>> 去查 Intel 手册,Vol 3: System Programming Guide,Ch5.15 Exception and interrupt
>> reference,Int 8 and Int 14,我猜你需要的内容在 Int 8 的末尾 Program state change 那一段。
>>
>> 文博
>>
>> 2009/9/6 Ji Cheng <memo...@gmail.com>
>>>
>>> 如题。
>>> 如果第一次中断是INT n,我感觉应该是int n -> page fault-> page fault-> double fault ->
>>> triple fault -> shutdown mode。
>>> 但是找不到根据,写程序验证似乎有些困难。在CSDN上问过这个问题,不过没什么结果,故向各位请教。
>>
>> --
>> Wenbo YANG
>>
>> Homepage ---> http://solrex.cn
>> Blog | Solrex Shuffling ---> http://blog.solrex.cn
>>
>>
>
>
--
p.s.你好,能再问你一个问题吗?我第一次在Group里发言,不知道怎么回事为什么我点回复之后显示发帖成功,但在页面上却没有我的回复呢?上面几个人的回复我都回复了,可他们的回复我邮箱里没有,只能在网页上看到,只有你的回复到了我的邮箱里。我晕死了,弄得我跟提了问就消失了一样.....
谢谢,我看的就是这里。我感觉它说的#DF是一个中断处理函数中产生了另一个中断,而不是在这个中断周期中产生了中断。如果int n在寻找中断向量时发生了#PF,那这个处理这个#PF时CPU压栈的是int n的EIP呢还是IDT的地址?这相当于一条int n指令产生了两个中断,这有点诡异啊....
p.s.你好,能再问你一个问题吗?我第一次在Group里发言,不知道怎么回事为什么我点回复之后显示发帖成功,但在页面上却没有我的回复呢?上面几个人的回复我都回复了,可他们的回复我邮箱里没有,只能在网页上看到,只有你的回复到了我的邮箱里。我晕死了,弄得我跟提了问就消失了一样.....
2009/9/6 Wenbo Yang <sol...@gmail.com>
去查 Intel 手册,Vol 3: System Programming Guide,Ch5.15 Exception and interrupt reference,Int 8 and Int 14,我猜你需要的内容在 Int 8 的末尾 Program state change 那一段。
文博2009/9/6 Ji Cheng <memo...@gmail.com>如题。
如果第一次中断是INT n,我感觉应该是int n -> page fault-> page fault-> double fault ->
triple fault -> shutdown mode。
但是找不到根据,写程序验证似乎有些困难。在CSDN上问过这个问题,不过没什么结果,故向各位请教。
这个应该不是处理器保证的。IDT的内存分配时应该是在页表里设置成不能换出的内存。
我想不论是OS还是hypervisor都不希望中断处理还会引起#PF,正如我前面所说,设计上这样会简单。不然就出现你说的例子。
#DF是一般都是用来做错误处理,没有人用来处理多次#PF。
Hypervisor都在ring 0上工作, 很多hypervisor把内存映射到了虚拟地址空间的高段,应该是不会换出的。