首页 文章
  • 3 votes
     answers
     views

    英特尔x86-64 CPU可以访问多少页表来转换虚拟内存?

    在将虚拟地址转换为物理地址时,我试图了解查找表的数量 . 英特尔手册似乎列出了许多方案: http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf (第4条) 而U...
  • 0 votes
     answers
     views

    x86 - 保护模式下的分段有什么用途?

    我读到了x86内存分段,我认为我遗漏了一些东西,线性(虚拟)地址是通过从GDT条目(基地址)取32位,从偏移地址取32位而构建的 . 求它们得到一个32位的虚拟地址 . 现在我看到32个偏移位可以跨越所有VA空间,因此实际上不需要使用32位基址 . 所以我得出结论,基地址并没有真正在翻译过程中发挥作用,这让我发现使用分段(在x86保护模式下)的内存保护是无用的,因为我们可以获得具有ring 0权限...
  • 0 votes
     answers
     views

    硬件虚拟化 - 管理程序查询

    当客户操作系统的客户页面表发生更改时,虚拟机管理程序将如何反映更改 . 客户页面映射和阴影页面映射之间的通信如何保持? 一种方法是写保护存储器地址 . 每当有写入访客页面表时,都会有一个适当的处理程序,以确保相应的更改进入影子页面表 . 我可以在这方面有更多的投入吗?
  • 2 votes
     answers
     views

    (动态内存分配)为什么最大化峰值利用率?

    我正在读一本教科书说: 我完全迷失了,让我们说: n = 10 和 p (required payload) = 800 个字节, 这是否意味着在 n = 9 这是第9个分配请求,P9需要是792个字节(假设一个最小分配是8个字节)?我的理解是否正确?
  • 1 votes
     answers
     views

    TLB转换与缓存

    我对操作系统中的内存管理存有疑问 . 我知道缓存是用于加速内存访问的临时存储位置,而TLB用于加速从虚拟地址到物理地址的转换 . 现在,如果生成虚拟内存地址,采取的第一步是什么? 如果第一步是指TLB并生成物理地址,那么第二步是什么?(它是指缓存以查看该数据是否存储在缓存中)? 现代计算机使用TLB吗? cpu如何知道页表所在的位置?
  • 2 votes
     answers
     views

    Spark工作者要求荒谬的虚拟内存量

    我在2节点纱线集群上运行火花作业 . 我的数据集不是很大(<100MB),仅用于测试,工作人员因为要求过多的虚拟内存而被杀死 . 这里的金额是荒谬的 . 使用11GB物理内存2GB,使用300GB虚拟内存 . 16/02/12 05:49:43 WARN scheduler.TaskSetManager:阶段2.1中丢失的任务0.0(TID 22,ip-172-31-6-141.ec2.i...
  • 2 votes
     answers
     views

    JVM是否可以自动使用更多交换空间来防止内存不足错误

    如Understanding JVM Memory Allocation and Java Out of Memory: Heap Space所示,当分配堆空间时,JVM不区分物理和虚拟内存 . 当Java对象和计算的内存分配开始发生时,JVM开始区分虚拟和物理内存 . 给定足够的交换空间(在Linux机器上),为什么会发生内存不足错误? JVM不应该只使用交换空间来完成计算,尽管速度很慢 . 例...
  • 2 votes
     answers
     views

    Java特别大的虚拟内存,用于某些环境中的实际内存使用

    我正在尝试了解我的java应用程序的虚拟内存使用情况,这似乎取决于我正在运行我的jar的环境 . 我有两个环境: env 1 cat /proc/version Linux version 3.5.0-48-generic (buildd@roseapple) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #72~precise1-Ubun...
  • 148 votes
     answers
     views

    为什么这个记忆食者真的不吃记忆?

    我想创建一个程序来模拟Unix服务器上的内存不足(OOM)情况 . 我创造了这个超级简单的记忆食者: #include <stdio.h> #include <stdlib.h> unsigned long long memory_to_eat = 1024 * 50000; size_t eaten_memory = 0; void *memory = NULL; i...
  • 3 votes
     answers
     views

    objdump vs / proc / pid / maps的虚拟内存地址?

    我正在尝试了解程序的可执行程序集在程序加载/运行时的确切位置 . 我发现有两个资源在讨论这个问题,但它们有点难以阅读: Understanding ELF using readelf and objdump Linux article(代码格式搞砸了) Michael Guyver, Some Assembly Required*: Relocations, Relocations(很多我...
  • 1 votes
     answers
     views

    限制堆区域的虚拟地址范围

    我需要在进程VA空间中进行一些暴力搜索以进行我的研究,因此希望限制我的堆区域的虚拟地址范围 . OS课程告诉我堆在数据和堆栈页面之间的任何地方 . 所以我想通过执行以下操作来缩小我的过程VA范围: 有一个自定义链接描述文件,它在地址范围内的某个地方提供数据的开始和结束(0x7f45f88a6000) 调整fs / binfmt_elf.c使堆栈顶部为(0x8f45f88a6000)而不是...
  • 229 votes
     answers
     views

    Linux下的Java虚拟内存使用情况,使用的内存过多

    我在Linux下运行的Java应用程序有问题 . 当我使用默认的最大堆大小(64 MB)启动应用程序时,我看到使用tops应用程序为应用程序分配了240 MB的虚拟内存 . 这会在计算机上创建一些其他软件的问题,这些软件相对资源有限 . 据我所知,无论如何都不会使用保留的虚拟内存,因为一旦达到堆限制,就会抛出 OutOfMemoryError . 我在Windows下运行相同的应用程序,我发现虚...
  • 21 votes
     answers
     views

    何时做或不做INVLPG,MOV到CR3以最小化TLB刷新

    序幕 我是一个操作系统爱好者,我的内核运行在80486上,并且已经支持虚拟内存 . 从80386开始,英特尔的x86处理器系列及其各种克隆通过分页支持虚拟内存 . 众所周知,当 CR0 中的 PG 位置位时,处理器使用虚拟地址转换 . 然后, CR3 寄存器指向顶级页面目录,该目录是将虚拟地址映射到物理地址的2-4级页表结构的根 . 处理器不会为生成的每个虚拟地址查询这些表,而是将它们缓存在名为T...
  • 23 votes
     answers
     views

    处理器x86 / x86_64中使用物理或虚拟寻址在L1,L2和L3中进行缓存?

    处理器x86 / x86_64中使用哪种寻址在L1,L2和L3(LLC)中进行缓存 - 物理或虚拟(使用PT / PTE和TLB)以及某种方式对它有影响吗? 在这种情况下,驱动程序(内核空间)和应用程序(用户空间)之间是否存在差异? 简短回答 - 英特尔使用 virtually indexed, physically tagged (VIPT)L1缓存:What will be used for...
  • 4 votes
     answers
     views

    使用TLB设计虚拟内存

    我遇到了以下问题,我不确定如何处理它: 考虑具有以下属性的虚拟内存系统:·35位虚拟地址·16 KB页面·32位物理地址假设此虚拟内存系统使用八路组关联TLB实现 . TLB总共有256个TLB条目,每个TLB条目代表一个虚拟到物理页码转换 . 64 KB数据高速缓存是双向组关联高速缓存 . 数据高速缓存的块大小为128字节 . 显示虚拟到物理映射,其中的图形以类似于下图的方式绘制(但需要对...
  • 1 votes
     answers
     views

    根据高速缓冲存储器的虚拟地址到物理地址转换

    我确实理解如何将虚拟地址转换为物理地址以访问主存储器 . 我也理解缓存内存是如何工作的 . 但我的问题在于将两个概念放在一起并理解进程如何访问内存以及如果我们有缓存未命中将会发生什么 . 所以我有这个图,这将帮助我提出以下问题: click to see the image ( assume one-level cache) 1-进程是否使用表示主内存中字节位置的完全相同的物理地址访问缓存? 2-...
  • 1 votes
     answers
     views

    VMM是否在主机上使用虚拟内存?

    我试图了解过去使用影子页表如何执行虚拟化 . articles我已经阅读了有关从访客虚拟内存到主机物理内存的翻译的所有内容 . 我理解Shadow Page表如何消除了Guest虚拟访客物理翻译的需要 . 我的问题是,Host Virtual to Host Physical步骤发生了什么 . (HVA - > HPA) . 在引用的文章中做虚拟机管理器,而不是在主机中使用虚拟内存?他...
  • 27 votes
     answers
     views

    多级页表如何节省内存空间?

    我试图了解多级页表如何节省内存 . 根据我的理解,多级页表总共消耗比单级页表更多的内存 . 示例:考虑页面大小为64KB且32位处理器的内存系统 . 页表中的每个条目都是4个字节 . Single-level Page Table :表示页面偏移需要16(2 ^ 16 = 64KB)位 . 所以休息16位用于索引到页表 . 所以 Size of page table = 2^16(# of pag...
  • 1 votes
     answers
     views

    虚拟内存tlb未命中

    我有以下代码 #define N 1024 int A[N*N], B[N*N];int i,j; // Integers are 4 bytes for (i = 0; i < N; i++) for (j = 0; j < N; j++) B[j*N+i] = A[i*N+j]; 页面大小为4kb ant TLB直接映射1024...
  • 1 votes
     answers
     views

    根据其整体功能模拟旧机器?

    注意我重新调整了我的问题's main goal isn' t与编程有关;它的手段虽然是程序员最熟悉的(出于某种原因;))也就是说,如果您认为在这个复杂的领域中有更多知情人士会看到它,请随意建议其他地方 . 我们're getting close to deploy refurbished PCs with carefully optimized systems at the local #diy...

热门问题