【问题标题】:How to artificially cause a page fault in Linux kernel?如何在Linux内核中人为地导致页面错误?
【发布时间】:2015-04-28 02:28:53
【问题描述】:

我对 Linux 内核还很陌生。每次获取指定的页面“P”时,我都想让内核出错。一个简单的概念想法是清除表示页表条目 (PTE) 中存在页“P”的位。

谁能提供更多关于如何在 x86 中实现这一目标的详细信息?如果可能的话,还请指出需要在源代码中进行修改的位置。

背景

我必须调用我的自定义页面处理程序,该处理程序仅适用于处理用户应用程序中的一组页面。在给定应用程序中执行某些序言后,必须启用此自定义页面处理程序。出于测试目的,我需要在我的序言执行后引发故障。

目前内核在我的序言执行之前加载所有内容,所以我需要人为地导致错误来测试我的处理程序。

【问题讨论】:

标签: linux linux-kernel x86


【解决方案1】:

自从我从 Minix 迁移到 Linux 以来,我没有使用过交换代码,但是交换算法可以做两件事。当内存不足时,它将页面从内存移动到磁盘,当需要一个页面时,它会将其复制回来(可能在将另一个页面移动到磁盘之后)。

我将使用您正在编写的完整换出功能来清除页面存在标志。我可能还会使用字符设备将命令发送到测试代码以强制交换。

【讨论】:

    猜你喜欢
    • 2011-08-23
    • 2014-02-23
    • 2020-12-29
    • 1970-01-01
    • 2017-01-29
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多