Questions tagged «virtual-memory»

1
TLB和数据缓存如何工作?
我正在尝试考试,但我意识到我对TLB和数据缓存的工作方式感到困惑。 我知道TLB本质上是最近使用的物理地址的缓存。但是,我正在看教科书中的一个图表(如下所示),但我不知道其中发生了什么。我猜它突然分裂了物理地址,并用它来索引缓存。但是为什么它分别显示缓存和数据?为什么字节偏移量只是浮动?我很确定缓存也应该存储数据。我认为它的唯一目的不是确定其内部是否有命中或失误。 我为我的无知事先表示歉意,但是这本书几乎没有涵盖TLB的内容(只不过是一页纸),并且在解释TLB和缓存之间的关系方面做得不好。

1
如果虚拟地址空间可以大于物理地址空间,那么地址映射如何存储在内存中?
假设我们正在使用具有40个物理地址位的系统。物理地址总空间(假定字节可寻址内存)为字节,即1 TiB。而且,如果虚拟地址的长度为48位,则意味着虚拟内存可用的地址比物理内存中的地址要多。2402402^{40} 这对我来说很有意义,因为“多余”地址也可能指向硬盘位置。但是,我不了解虚拟地址和物理地址之间的转换是如何发生的。我假设有一个映射存储在某处,该映射将VAS位置链接到物理位置。如果虚拟地址位置多于物理地址,那么如何将所有这些映射存储在内存中?至少需要48位来存储每个虚拟地址,然后再需要40位来存储其映射到的物理位置。因此,显然,您不能仅存储每个虚拟地址与其物理对应物的1:1映射,因为映射每个位置将比物理内存本身占用更多的内存。 我在这里到底想念什么?

1
操作系统中的内存膨胀
一些虚拟机管理程序使用一种称为“膨胀”的方法(至少是KVM所谓的“膨胀”)来优化内存使用,该方法对VM之间的内存进行重复数据删除,并将普通页面设置为只读,并在写入时进行复制。 这与fork调用相反。 在操作系统级别上实现流程是否可行(我主要想到的是在同一站点上使用带有多个选项卡的Chromium浏览时重复存储),是否已经实现?

1
在纯需求分页期间交换空间管理
以下是我在进行OS家庭作业时遇到的一个疑问-但是,它似乎比基于概念的问题要多于简单的编码问题,因此恕我直言,我认为作业标签不适合这样做。 在给定固定数量的RAM和交换内存的情况下,针对同时运行的多个进程的纯需求分页方案中,在以下两种情况下,交换空间会发生什么情况: 进程遇到页面错误,RAM中没有可用的空闲帧,因此需要将进程的内核帧块中的一个页面写出以进行交换(为简单起见,我不考虑复制-on-write case)。明确地说,将在交换空间中的哪个位置写入此帧,并且为此需要更新哪些数据结构? 当某个进程需要进入特定页面时,它在交换内存中的位置如何?如何知道该特定页面是否全部存在于交换中? 如您所料,我很难理解在纯需求管理方案中以何种方式管理交换空间,以及什么数据结构必不可少。如果您可以在答案中引用任何链接,那就太好了(我在“操作系统概念-Silberschatz的第8版,我找不到我的问题的明确答案”中进行了搜索)。

2
时钟页面替换算法-现有页面
在模拟时钟页面替换算法时,当内存中已存在一个引用时,时钟指针是否仍会增加? 这是一个例子: 4个插槽,使用时钟页面替换算法 参考列表:1 2 3 4 1 2 5 1 3 2 4 5 初始列表如下所示: -> [1][1] [2][1] [3][1] [4][1] 下一个要插入的引用将是1,然后是2。指针在1之后,2之后是否仍指向1?换句话说,插入5后,时钟将如下所示: -> [5][1] [2][0] [3][0] [4][0] ?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.