问题标签 [tlb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
493 浏览

linux - 将页面插入大型 mmap() 文件而不复制数据

我想知道是否有一种方法可以在我用 mmap() 打开的大型(多 GB)文件的开头附近插入空白页。显然,可以在末尾添加一两页,然后使用 memcpy() 将所有内容向前移动,但这会弄脏每一页,并且在最终刷新到磁盘时需要很长时间。

我猜测解决方案需要在自定义文件系统和页表的手动操作之间进行一些复杂的协调:向 inode 添加一个块,以某种方式更新 VMM 中的缓存页以反映这一点,然后以某种方式将页表调整为匹配。这听起来很重要,这让我想知道是否有更好的方法。

这是一个关于 Linux 上的内存和文件操作的有点深奥的问题,尽管我很高兴听到如何在其他系统中做到这一点。我对涉及使复制更有效的解决方法不是特别感兴趣,尽管需要重新映射但避免磁盘 IO 的技术将是一个好的开始。

0 投票
1 回答
1507 浏览

com - 如何从 OCX 或 TLB 文件中获取导入的类型库?

我确信没有办法找到 ActiveX 的 COM 依赖项,但令我惊讶的是 OLEVIEW 显示了一些评论,例如:

// TLib : // TLib : OLE 自动化 : {00020430-0000-0000-C000-000000000046} importlib("stdole2.tlb"); // TLib:Visual Basic 运行时对象和过程:{EA544A21-C82D-11D1-A3E4-00A0C90AEA82} importlib("3");

我尝试使用 TypeLibInfoFromFile 提取相同的信息,但根据我在 MSDN 中找到的信息,没有提供此信息的 Api。您是否知道从 OCX 或其 Tlb 文件中提取此信息的方法?知道我所有的 ocxes 都是用 vb6 编译的,我可以相信 Imported(Explicitly not in code) 接口的这个信息吗?

0 投票
1 回答
2171 浏览

architecture - 如何使用用户进程导致 TLB 抖动?

我目前的工作需要在英特尔酷睿系列的 CPU 上生成指定数量的 TLB 未命中,但进展并不顺利。我尝试了很多方法,但它们的 TLB 命中率都很高。有谁知道一些关于 x86 TLB 如何工作的有用信息,或者一些在用户进程中生成大量 TLB 未命中的方法?

0 投票
2 回答
204 浏览

c - 为什么我从 C 中的以下代码中收到段错误错误?

我的操作系统类中有一个项目到期,我应该在其中模拟翻译后备缓冲区。

我正在编写一个将在 TLB 未命中后调用的方法。它应该在 TLB 中找到下一个为空或一段时间未命中的条目,删除该条目,并将其替换为上次调用的页表中的条目。调用该方法时会给出页表条目中的数据。

我从以下几行中得到一个段错误:

VBIT_MASK 是一个先前定义的变量,用于屏蔽我现在要插入的位。我不确定我是否误解了如何使用位掩码,或者我的代码是否存在更严重的问题。我意识到要求任何人详细了解整个事情太过分了,但是如果有人对我应该考虑的解决这个问题的方向有任何建议,我将不胜感激!

0 投票
3 回答
14026 浏览

memory-management - TLB 命中会导致内存页面错误吗?

在网络上可用的 John Kubiatowicz(Kuby 教授)的 UC Berkley 视频讲座中,他提到 TLB 命中并不意味着相应的页面在主内存中。页面错误仍然可能发生。
从技术上讲,TLB 是页表条目的缓存,因为所有页表条目在主内存中都没有相应的可用页面。TLB 也是如此。TLB 命中可能会导致页面错误。

但是根据教科书中给出的算法,我找不到这样的案例。在 TLB 未命中时,内核参考页表并更新 TLB 缓存以进行适当的地址转换。下一次 TLB 命中不会导致页面错误。当内核换出页面时,它会更新该页表条目的相应位并使相应的 TLB 无效,因此下一次不会有 TLB 命中,直到页面加载到主内存中。

那么有人可以代表 kuby 教授的主张的正确性并指出一个情况,而不是 TLB 命中(在 TLB 中找到相应虚拟地址的翻译物理地址),可能会发生页面错误?

0 投票
1 回答
1901 浏览

c - 错误的编译器选项使用会导致 TLB(加载字)异常吗?

我在 VxWorks 中遇到 TLB(加载字或取指令)异常。当我进一步分析时,我了解到所引用的内存地址并未指向有效的内存位置。

据我了解,这个问题可能是由于一些内存损坏(可能的内存覆盖)而发生的。但是,在 purify 下在 Windows 中分析代码和执行同一段代码不会显示任何内存错误。

所以,我想知道是否有任何编译器选项可能导致这种情况?可能吗?

另外,有关如何调试此类问题的任何指示?

0 投票
2 回答
2449 浏览

memory-management - 转储 x86 CPU 的 TLB 缓冲区的内容

是否可以从 TLB(翻译后备缓冲区,这是 CPU 中的特殊缓存)获取翻译列表(从虚拟页面到物理页面)。我的意思是现代 x86 或 x86_64;我想以编程方式完成,而不是使用 JTAG 并将所有 TLB 条目移出。

0 投票
1 回答
419 浏览

tlb - 英特尔处理器可以延迟 TLB 失效吗?

这参考了 InteI 的软件开发人员手册(订单号:325384-039US 2011 年 5 月),第 4.10.4.4 节“延迟无效”描述了 TLB 条目无效的潜在延迟,这可能在访问其分页结构条目的内存时导致不可预测的结果已经变了。

手册说……“在某些情况下,所需的失效可能会延迟。软件开发人员应该明白,在修改分页结构条目和执行第 4.10.4.2 节中推荐的失效指令之间,处理器可以使用转换基于分页结构条目的旧值或新值。以下项目描述了延迟失效的一些潜在后果: 如果修改分页结构条目以将 R/W 标志从 0 更改为 1,对由该条目控制其翻译的线性地址的写访问可能会也可能不会导致页面错误异常。

让我们假设一个简单的情况,其中针对线性地址修改了页面结构条目(r/w 标志从 0 翻转到 1),然后立即调用相应的 TBL 无效指令。我的问题是——作为 TLB 延迟失效的结果,即使在调用 TLB 失效后,对相关线性地址的写访问也不会出错(页面错误)?

还是说“延迟失效”只能在页面结构发生变化的线性地址的“失效”指令没有发出时才会导致不可预知的结果?

0 投票
2 回答
1317 浏览

caching - 如何强制页面出错,即使它已经在 tlb 中?

我正在尝试通过跟踪一段时间内的页面错误来编写一个玩具工作集估计器。每当页面出现故障时,我想记录它被触摸过。当我试图跟踪对已经存在的页面的访问时,该方案就崩溃了。如果在没有触发故障的情况下读取或写入页面,我将无法跟踪访问。

那么,我希望能够在页面访问时导致“轻量级”错误。我在某个时候听说过一些方法,但我不明白为什么它会起作用,所以它并没有留在我的脑海里。可能有点脏?

0 投票
3 回答
2446 浏览

c - 处理 TLB 未命中

我想查看我的程序正在访问哪些页面。现在一种方法是使用mprotectwith SIGSEGVhandler 来记下正在访问的页面。但是,这涉及为我感兴趣的所有内存页面设置保护位的开销。

想到的第二种方法是在开始时使翻译后备缓冲区 (TLB) 无效,然后记下未命中的内容。在每次未命中时,我都会记下寻址的内存页,因此记下它。现在的问题是如何处理 linux 程序在用户空间中的 TLB 未命中。

如果您知道比 TLB 未命中或mprotect更快的方法来记下脏内存页,请告诉我。另外,我想要一个仅适用于 x86 的解决方案。