热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OSReviewChapter10:VirtualMemory

Chapter10:VirtualMemoryVirtualmemorycanbeimplementedvia:Demandpaging请求分页更加简单,不需要考
Chapter 10: Virtual Memory

Virtual memory can be implemented via:

  • Demand paging 请求分页 更加简单,不需要考虑外部碎片
  • Demand segmentation 请求分段

在这里插入图片描述

Demand Paging

Bring a page into memory only when it is needed

invalid reference -->abort

not-in-memory -->bring to memory

  • Less I/O needed
  • Less memory needed
  • Faster response
  • More users

Pure demand paging–never bring a page into memory unless page will be needed

Valid-Invalid Bit

With each page table entry a valid–invalid bit is associated

(1 --> in-memory, 0–> not-in-memory)

Page Fault

trap to OS

OS looks at another table to decide:

  • Invalid reference -->abort. Just not in memory.
  • Just not in memory.

在这里插入图片描述

在这里插入图片描述

Performance of Demand Paging

Effective Access Time (EAT) =(1 –p) x memory access + p(page fault overhead + [swap page out ] + swap page in + restart overhead)

Copy-on-Write

Copy-on-Write (COW) allows both parent and child processes to initially share the same pages in memory.

If either process modifies (修改) a shared page, only then is the page copied

Page Replacement


  1. Find the location of the desired page on disk.
  2. Find a free frame: -If there is a free frame, use it. -If there is no free frame, use a page replacement algorithm to select a victim frame.
  3. Read the desired page into the (newly) free frame. Update the page and frame tables.
  4. Restart the instruction.

First-In-First-Out (FIFO) Algorithm

FIFO Replacement –Belady’s Anomaly :

more frames --> less page faults

在这里插入图片描述

Optimal Page Replacement 最优算法

Replace page that will not be used for longest period of time.

**Used for measuring how well your algorithm performs.**最优算法,主要是作为度量
在这里插入图片描述

Least Recently Used (LRU) Algorithm

Counter implementation :

Every page entry has a counter; every time page is referenced through this entry, copy the clock into the counter.

When a page needs to be changed, look at the counters to determine which are to change.

缺点:开销太大

LRU Algorithm

Stack implementation –keep a stack of page numbers in a double link form

LRU Approximation Algorithms LRU近似算法

Additional-Reference-Bits Algorithm

Second chance

Counting Algorithms

Keep a counter of the number of references that have been made to each page

LFU(least frequently used) Algorithm: replaces page with smallest count.

MFU(most frequent used) Algorithm: based on the argument that the page with the smallest count was probably just brought in and has yet to be used

Allocation of Frames

Two major allocation schemes.

  • fixed allocation
  • priority allocation

Global replacement –process selects a replacement frame from the set of all frames; one process can take a frame from another.

Local replacement –each process selects from only its own set of allocated frames.

两周置换各有利弊,分析应用场合

Thrashing

抖动 颠簸

If a process does not have “enough” pages, the page-fault rate is very high. This leads to:

  • low CPU utilization.
  • operating system thinks that it needs to increase the degree of multiprogramming
  • another process added to the system.

Thrashing=a process is busy swapping pages in and out

Locality model

Process migrates from one locality to another.

Localities may overlap

Why does thrashing occur? Σsize of locality > total memory size

Working-Set Model

在这里插入图片描述

Keeping Track of the Working Set


Allocating Kernel Memory


Buddy System

在这里插入图片描述

Slab Allocator

在这里插入图片描述

Other Considerations


Prepaging


  • To reduce the large number of page faults that occurs at process startup
  • Prepage all or some of the pages a process will need, before they are referenced
  • But if prepaged pages are unused, I/O and memory was wasted
  • Assume s pages are prepaged and αof the pages is used

Page Size


  • fragmentation 小了好,考虑内部碎片,平均大小是1/2 page size
  • table size 大了好
  • I/O overhead 大
  • locality

TLB Reach


Program Structure

在这里插入图片描述

I/O interlock

Pages must sometimes be locked into memory

在这里插入图片描述


推荐阅读
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • 在Kohana 3框架中,实现最优的即时消息显示方法是许多开发者关注的问题。本文将探讨如何高效、优雅地展示flash消息,包括最佳实践和技术细节,以提升用户体验和代码可维护性。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • ### 优化后的摘要本文对 HDU ACM 1073 题目进行了详细解析,该题属于基础字符串处理范畴。通过分析题目要求,我们可以发现这是一道较为简单的题目。代码实现中使用了 C++ 语言,并定义了一个常量 `N` 用于字符串长度的限制。主要操作包括字符串的输入、处理和输出,具体步骤涉及字符数组的初始化和字符串的逆序操作。通过对该题目的深入探讨,读者可以更好地理解字符串处理的基本方法和技巧。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
author-avatar
沈晓燕-东东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有