分享

中断上下文为何不可访问用户空间地址

 Liucw2012 2012-03-23


在保护模式下,中断是通过IDT来创造中断上下文的执行空间。至于说中断上下文不能访问用户空间地址,并不是因为权限不够(考虑到IDT中中断描述符项中的segment selector的RPL),而是因为中断上下文并不是一个完整的进程空间,所以就虚拟地址空间而言,中断上下文不具备完整的虚拟地址空间的页表项,所以理所当然地,不具有用户空间的虚拟地址页表目录。

但是从理论上讲,让中断上下文环境中做到访问用户空间是完全可行的。在中断发生时,将被中断进程的CR3加入到为中断上下文创立的堆栈中,这样中断上下文将具备完整的进程上下文中完备的虚拟地址空间页表。

但是似乎目前的操作系统并没有这样实现(至少Linux是这样),原因是这样做有意义吗?!中断的发生是完全随机的,在它发生的那一刻被中断的进程很可能是完全无辜的,也即和目前发生的中断毫无关系。如果将这种被无辜打扰的进程的某些上下文信息传递给中断,比脱了裤子放屁还恶心。所以这种想法想想是可以的,甚至无聊的时候,试着去改改内核相关的代码把这种进程某些信息传递给中断上下文,让它去试着访问下你的用户空间...

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多