根据虚拟内存的概念, 为了执行某些线程, 仅一部分线程需要存在于主存储器中, 这意味着在任何时候仅几页将仅存在于主存储器中。
但是, 很难确定哪些页面需要保留在主存储器中, 哪些页面需要保留在辅助存储器中, 因为我们无法提前说一个线程在特定时间需要特定页面。
因此, 为了克服这个问题, 引入了一种称为按需分页的概念。它建议将所有帧的页面保留在辅助存储器中, 直到需要它们为止。换句话说, 它表示直到需要时才在主存储器中加载任何页面。
每当主存储器中第一次引用任何页面时, 该页面就会在辅助存储器中找到。
【按需分页】之后, 它可能会或可能不会出现在主存储器中, 具体取决于页面替换算法, 这将在本教程的后面部分介绍。
什么是页面错误?
如果所引用的页面不存在于主存储器中, 则将出现未命中, 该概念称为页面未命中或页面错误。
CPU必须从辅助存储器访问丢失的页面。如果页面错误数非常高, 则系统的有效访问时间将非常长。
什么是掷粒?
如果页面错误的数量等于被引用页面的数量, 或者页面错误的数量如此之大, 以致于CPU仍然忙于仅从辅助存储器读取页面, 则有效访问时间将是指CPU从辅助内存中读取一个字, 它将非常高。这个概念称为颠簸。
如果页面错误率是PF%, 则从辅助存储器获取页面并再次重新启动所花费的时间为S(服务时间), 并且存储器访问时间为ma, 则有效访问时间可以指定为:
EAT = PF X S + (1 - PF) X (ma)
推荐阅读
- 磁盘调度解析
- 系统死锁简介
- 操作系统死锁检测和恢复
- 防止死锁解析
- 使用RAG进行死锁检测
- 记一次springboot项目,maven引发的悲剧(Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServ
- Android 开发中Service完全解析
- tensorflow API _ 2 (tf.app.flags.FLAGS)
- android -------- Eclipse下的NDK配置环境