cost 243 ms
劫持页面错误处理程序 - Hijacking page fault handler

我有一个进程 PID 访问不允许访问的 memory 区域,CPU 在 kernel 中创建了一个陷阱,它调用 do_page_fault() 将 SIGSEGV 发送到用户进程。 用户进程有一个自定义信号处理程序,它有一些逻辑并且故障指令被恢复。 我想做的是将这个信号处理逻辑移动到kernel空间 ...

在 MSVC 中,操作员 new 在调试模式下的行为与在发布模式下的行为不同 - Operator new behaves differently in Debug mode than in Release mode in MSVC

在测试有关页面错误的一些事情时,我发现new在 MSVC 中的调试模式和发布模式下的运行方式之间存在奇怪的差异。 考虑以下代码1 :#include <array> constexpr size_t PAGE_SIZE = 4096; int main() { const s ...

使用 fork 后 mmap 是否会导致页面错误? - Does mmap causes a page fault after we use fork?

由于 COW,linux 将仅在已写入页面后将其分配给子进程。 它还只会在更改后为堆栈分配一个新页面。 因此,例如,如果在fork()系统调用之后,我们在子进程中调用 printf,由于堆栈已更改,我们将出现页面错误。 但是我不确定以下代码: 由于父子都运行 mmap,我假设第二行会发生页面错 ...

为什么 malloc() 会导致轻微的页面错误? - Why does malloc() cause minor page fault?

我正在尝试了解 memory 和页面错误,所以我写了下面的代码来检查我的理解。 我不明白为什么调用 malloc 会导致 MINFL 增加,因为 malloc() 不应该影响物理 memory (据我了解)。 这是我的代码: 这些是 ps 命令的最终结果。 malloc之前 malloc后有两点 ...

是什么导致内核在 page_fault 上吃 CPU? - What cause kernel to eat CPU on page_fault?

硬件/操作系统:linux 4.9,64G 内存。 16 个守护进程正在运行。 每次读取随机短(100 字节)5GiB 文件,在守护程序启动时将其作为通过 mmap() 映射的内存进行访问。 每个守护进程读取自己的文件,所以总共有 16 个 5GiB 文件。 每个守护进程每秒可能进行 10 次 ...

x86-64 返回指令会导致 linux 中的页面错误吗? 当前进程堆栈总是在主 memory 中吗? - Can x86-64 return instruction cause a page fault in linux? Is the current process stack always in main memory?

我知道返回指令会将“程序控制权转移到位于堆栈顶部的返回地址” (第 1205 页) 。 当前进程的堆栈是否总是在 memory 中? 假设我在自己的程序中返回到 function(接近返回?),那么我能保证没有页面错误吗? 如果返回将控制权传递回不在 memory 中的另一个段中的代码(可能类似于 ...

如何确定 memory 组织是否遵循行主顺序或列主顺序? - how to determine if a memory organization follows row major order or column major order?

如何确定 memory 组织遵循行优先顺序还是列优先顺序? 我学习了这个新概念,并且知道如果我们知道 memory 组织遵循行优先顺序或列优先顺序,我们可以使我们的数组以这样一种方式运行,即通过减少代码的数量来提高代码性能页面错误。 但我无法找到“如何确定 memory 组织是否遵循行优先顺序或列 ...

在 vm_fault()、Linux 驱动程序中预取 - Prefetching in vm_fault(), Linux drivers

我正在实现一个简单的设备驱动程序。 使用此驱动程序的程序从用户那里获取 arguments 是使用请求分页还是预取(仅获取下一页)。 但是当用户请求预取时,应该将此信息发送给驱动程序。 问题是 vm_fault 的标准结构如下: 那么如何将这些预取的附加信息合并到这些中,以便我可以使用它来编写不同的 ...

在 linux 上的 C++ 程序中分析常驻 memory 使用情况和许多页面错误 - Profiling resident memory usage and many page faults in C++ program on linux

我试图弄清楚为什么我的一个程序版本(“新”)的常驻 memory 比同一程序的另一个版本(“基线”)高得多(5x)。 该程序在具有 E5-2698 v3 CPU 并用 C++ 编写的 Linux 集群上运行。 基线是多进程程序,新的是多线程程序; 它们基本上都在执行相同的算法、计算和操作相同的输入数 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM