page-tables相关内容

寻呼到底是什么?OSDEV

我正在尝试编写自己的操作系统,到了需要设置分页的时候。我编写了一些代码,这些代码似乎可以工作,但我意识到我不理解分页是如何工作的。现在我会试着解释我是如何理解事情的,我会有几个问题! 据我所知,分页是一种将地址映射到其他地址的方式,以便每个应用程序都可以看到完整的地址空间(?)。有一种叫做页目录的东西,它存储了1024个4字节的条目,每个条目都包含指向页表的指针,页表也有1024个条目。页表的每 ..
发布时间:2022-09-06 15:37:18 其他开发

为什么QEMU在填写PML4的上半部分时返回错误的地址?

我正在编写一个使用UEFI引导的小型x86-64操作系统。我试图通过将内核的可执行文件移到0x800000000000来使内核成为更高的半内核。此地址应该在PML4的中间。基本上,我应该填写PML4的第256项来处理这较高的一半。我试图这样做,但我的代码出现了三重错误。由于我在QEMU上测试内核并使用gdb进行调试,因此我在gdb中使用monitor info mem来查看虚拟地址到物理地址的映射 ..
发布时间:2022-08-02 23:14:07 其他开发

Arm64 Linux 页表遍历

目前我正在开发一些与研究相关的程序,我需要找到一些特定地址的pte.我的开发环境是 Juno r1 板(CPU 是 A53 和 A57),它运行 arm64 Linux 内核. 我使用了一些典型的页表遍历代码,如下所示: int find_physical_pte(void *addr){pgd_t *pgd;pud_t *pud;pmd_t *pmd;pte_t *ptep;无符号长长地 ..
发布时间:2021-11-17 22:45:06 服务器开发

为什么 ARM 有 64KB 大页面?

ARM720T 用户手册提到了小页面和大页面.既然 ARM 720T 需要一个 64KB 的页表条目在页表中复制 16 次,为什么不放置 16 个小页 (4KB) 条目来模拟 64KB 的页条目,而不是首先使用大页? 解决方案 来自 ARM720 TRM, 大页面由 64KB 内存块组成.大页面是支持允许映射大范围的内存中只使用一个条目TLB).扩展了额外的访问控制机制到 16KB ..
发布时间:2021-11-17 22:28:30 其他开发

Arm64 Linux 页表遍历

目前我正在开发一些与研究相关的程序,我需要找到一些特定地址的pte.我的开发环境是 Juno r1 板(CPU 是 A53 和 A57),它运行 arm64 Linux 内核. 我使用了一些典型的页表遍历代码,如下所示: int find_physical_pte(void *addr){pgd_t *pgd;pud_t *pud;pmd_t *pmd;pte_t *ptep;无符号长长地 ..
发布时间:2021-11-17 22:11:17 服务器开发

进程的页表是否映射到内核地址空间?

我在做 Windows 系统编程,想知道是否可以在源代码级别访问进程的页表. 这是我所知道的与虚拟内存相关的页表. 假设用户只是在 Windows 操作系统(32 位)上运行一个名为“A"的进程. 首先,操作系统为 A 进程创建并维护了 4GB 的虚拟地址空间. (其中2GB是内核地址空间,另外2GB是用户地址空间. 用户地址空间中的任何代码都不能直接访问内核地址空间 ..

AMD64 页条目基地址字段如何以 40 位编码 52 位地址?

我正在尝试手动遍历分页结构,以便将虚拟地址转换为其物理地址.我有一个关于存储在 PML4E、PDPE、PDE 和 PTE 中的物理基地址字段的问题.我系统上的页面大小是 4KB.我在内核模式下在 Windows 上执行此操作. 正如 amd64 手册所说,cr3 的第 51-12 位包含 PML4 的物理基址.然而,它说第 11-0 位应该被假定为 0.我想知道是否同样的事情适用于其他分页结 ..
发布时间:2021-09-25 20:32:22 其他开发

页表寄存器和缓存

我刚刚了解了内存管理,目前正在尝试弄清楚页表是什么.根据我的理解,页表是一种类似于哈希表的数据结构,用于映射和连接操作系统中的逻辑和物理内存地址. 我们需要一个寄存器来确定进程页表的位置.但是我们需要多少个寄存器来确定一个多级页表的位置,例如一个二级和三级页表?你是如何确定的? 此外,处理器中的缓存(L1-L3)将如何影响对页表的内存引用访问?大多数人会错过还是命中?为什么会这样? ..
发布时间:2021-06-12 20:38:09 其他开发

页表和缓存命中率

我发表了一篇关于页表和多级页表所需寄存器数量的帖子,并指出每个页表,无论级别如何,只需要一个寄存器来访问页表的顶部.但是我的第二个问题没有得到解答. 处理器中的缓存(L1-L3)将如何影响对页表的内存引用访问?大多数人会错过还是命中?为什么会发生?有人告诉我,根据所使用的架构,这个主题可能有不同的答案,所以也许通用的答案就可以了. 我试图为此找到参考资料,但找不到.可能会说我真的是操作 ..
发布时间:2021-06-12 20:37:57 其他开发

对页面使用直写式高速缓存策略时

我正在阅读MDS攻击文件 RIDL:流氓机上数据加载.将页面设置为回写,直写,写合并或不可缓存,并通过不同的实验确定行填充缓冲区是微体系结构泄漏的原因. 切线:我知道内存是不可缓存的,但是我假设可缓存数据始终缓存在回写缓存中,即,我假设L1,L2和LLC始终是回写缓存. 我在《计算机体系结构》书中阅读了回写式缓存与直写式缓存之间的差异.它说: 直写式缓存更易于实现,并且可以使用写 ..
发布时间:2020-07-02 05:19:44 其他开发

分页浏览会利用共享表吗?

假定两个地址空间共享大量的非连续内存. 系统可能希望在它们之间共享物理页表. 这些表将不使用 Global 位(即使受支持),并且会将它们绑定到 asid (如果受支持). 有直接的好处,因为与复制,固定的ram等相比,数据缓存的污染更少. 在任何已知的体系结构中,分页浏览是否具有显式的优势? 如果是这样,是否暗示 mmu 已显式缓存& ;?共享基于物理标签的内部页面树节点? ..

为什么ARM有64KB大页面?

ARM720T用户手册中提到了大小页面.由于ARM 720T要求将64KB页表项在页表中重复16次,为什么不放置16个小页(4KB)项来模仿64KB页项,而不是首先使用大页? 解决方案 来自ARM720 TRM, 大页面 由64KB的内存块组成.大页面是 支持允许映射大范围的 记忆体,而只使用 TLB). 扩展了其他访问控制机制 到16KB子页面. 主要好处是64k条目将仅消耗 ..
发布时间:2020-06-30 23:04:46 其他开发

访问内存时,是否在缓存命中的情况下设置页表访问/脏位?

据我所知,CPU的内存访问涉及CPU缓存和MMU. CPU将尝试在高速缓存中查找其目标,如果发生高速缓存未命中,CPU将转向MMU.在通过MMU访问期间,对应页表项的被访问/脏位将由硬件设置. 据我所知,除非存在缓存未命中,否则大多数CPU设计都不会触发MMU,而我的问题是,是否仍会在缓存命中时设置页表项的已访问/脏位?还是与架构有关? 解决方案 我认为您可以假设这些位缓存在TLB中 ..
发布时间:2020-06-30 23:03:37 其他开发

操作系统驱逐受害者页面时,操作系统如何更新适当的页面表?

在使用虚拟内存的OS中,每个进程都有一个页表.每个页表将一个进程的虚拟内存页映射到系统的物理内存页,并指示给定的页当前是否有效(加载到内存中). 假设内存快用完了,操作系统需要选择一个页面从物理内存中逐出.为此有不同的算法.例如,FIFO,LRU.一旦操作系统选择了要退出的页面,它将如何使对该页面的任何现有引用无效? 如果活动进程当前正在使用受害者页面,则OS必须使当前进程的页面表中的 ..
发布时间:2020-05-21 19:12:11 其他开发

确定虚拟内存的页面表大小

请考虑一个具有38位虚拟字节地址,1KB页面和512 MB物理内存的虚拟内存系统.假设有效,保护,脏和使用位总共需要4位,并且所有虚拟页都在使用中,则该计算机上每个进程的页表的总大小是多少? (假定磁盘地址未存储在页表中.) 解决方案 好吧,如果问题只是“页面表的大小是多少?"不管它是否适合物理内存,都可以这样计算出答案: 第一个物理内存.有512K页的物理内存(512M/1K).这 ..
发布时间:2020-05-08 19:20:46 其他开发

Arm64 Linux页面表遍历

当前,我正在开发一些与研究相关的程序,我需要找到某些特定地址的pte.我的开发环境是Juno r1板(CPU分别是A53和A57),并且正在运行arm64 Linux内核. 我使用一些典型的页表遍历代码,如下所示: int find_physical_pte(void *addr) { pgd_t *pgd; pud_t *pud; pmd_t *pmd; ..
发布时间:2020-04-23 11:05:17 服务器开发

查找不再与写时复制共享的页面

说我在Linux中有一个进程,从中我fork()是另一个相同的进程. fork之后,由于原始进程将开始写入内存,因此Linux的 copy-on-write 机制将为该进程提供唯一的物理内存页面,该页面与分叉进程所使用的页面不同. 在执行的某个时候,我如何知道原始过程的哪些页面已在写时复制? 我不想使用SIGSEGV信号处理程序,并且对开头的所有页面都具有只读访问权限,因为这会导致我不 ..
发布时间:2020-04-23 10:38:48 服务器开发