操作系統3-內存管理(頁面置換算法)

操作系統3-內存管理(頁面置換算法)

7. 頁面置換算法

在上一節講過, 換入換出頁面要根據特定的算法來執行, 這種算法就是頁面置換算法. 不合適的算法可能會使系統發生抖動,所謂抖動即指剛剛換出的頁面又要換回來,換回來不久又要換出去,這樣就導致系統的大部分工作時間都花在了頁面調度上,導致效率不高。

下面是幾種常見的頁面置換算法:

7.1 先入先出頁面置換算法

顧名思義,根據隊列的數據結構的思想,總是將內存存在最久的頁面先換出。

7.2 最近最久未使用頁面置換算法(Least Recently Used)

這種算法是一種比較好的算法,但是主要問題在於如何找到哪一頁是最近最久未被使用的頁面。為此需要兩類硬件的支持:

  1. 寄存器。用於記錄某進程在內存中各頁的使用情況。系統為內存中每個進程都設置一個移位寄存器,可表示為$ R = R_{n-1} R_{n-2} ...R_1 $。

    當進程訪問某物理塊時,要將相應寄存器的\(R_{n-1}\)位置變成1。此時,定時信號每隔一段時間將寄存器右移一位。如果把這個n位的寄存器看成是一個n位的二進制數,則最小數值的寄存器所對應的頁面就是最近最久未使用的頁面。

  2. 棧。利用一個特殊的棧來保存當前使用的各個頁面的頁號。每當進程訪問某頁面時,便將該頁面從棧中移出,壓入棧中。這樣,位於棧底的總是最近最久未被使用的頁面。(這個比較易於理解)

7.3 最佳置換算法(Optimal Page Replacement)

是Belady於1966年提出的一種理論上的理想算法,它所選擇的淘汰的頁面是最長時間不被使用的,可以保證最低的缺頁率。之所以說是理論算法是因為該算法需要知道該進程整體的頁面走向,即知道在哪一步需要用到哪一頁,但這是很難實現的。但是可以用來做算法題以及評價其他算法。

7.4 時鐘置換算法

這是一種LRU的近似算法,但不像LRU那樣需要很多的硬件支持。

時鐘置換算法為每一頁都設置一位訪問位,再將內存中所有頁面都通過鏈接指針連成一個隊列。當某頁被訪問時,則將該位置為1。由於將修改過的頁面換出時,頁面需要重新寫入外存,話費一定的時間。所以在選擇淘汰頁面時,要同時考慮到頁面的修改位和訪問位。根據訪問位和修改位可以組合成下列四種類型的頁面:

  1. (A = 0,M = 0)。最佳淘汰頁,既未被修改,又最近未被訪問。
  2. 最近未被訪問,但已修改,不是很好的淘汰頁。
  3. 最近訪問了,但未被修改。可能會再次訪問。
  4. 最近既被訪問了,又有修改。最後淘汰的頁面。

尋找過程:

  1. 第一輪:指針從當前位置開始掃描循環隊列,尋找A=0,M=0的頁面。第一次掃描期間不改變訪問位A。
  2. 第二輪:若第二輪未找到可以淘汰的頁面,則第二輪掃描A=0,M=1的頁面。第二輪掃描期間將掃描過的頁面的訪問位置為0。
  3. 如果第二輪扔失敗。則再回到開始位置重複第一輪,如果再失敗,則再重複第二輪,這是一定能找到目標淘汰頁。因為所有的訪問位都已置為0。

原文地址:https://www.cnblogs.com/lunar-ubuntu/p/12294613.html

时间: 2024-08-01 19:38:18

操作系統3-內存管理(頁面置換算法)的相关文章

操作系統3-內存管理(分區存儲和頁式存儲)

操作系統3-內存管理(分區存儲和頁式存儲) 2. 分區存儲管理方式 分區管理的基本思想是:將內存空間氛圍一個或若干個連續的區域,稱為分區.每個分區可以存放一個獨立的用戶程序.分區的特點是一個程序可以連續地加載內存. 分區可以分為:單一分區.固定分區.可變分區和重定位分區. 2.1 單道程序的連續分配 單道程序的連續分配方式將內存分為系統區和用戶區,只能用於單用戶.單任務的操作系統. 系統區 系統區僅供操作系統使用,一般駐留在內存的低地址區,其中包括中斷向量.中斷向量是操作系統的核心功能模塊加載內

操作系統3-處理機調度與死鎖(死鎖)

操作系統-處理機調度與死鎖3(死鎖) 7.死鎖問題 死鎖是指多個進程等待其它進程佔有的資源,因而無限期等待下去的局面. 系統發生死鎖時,一定具備以下四個條件: 互斥條件.對於一個排他性資源,某一時刻最多允許一個進程佔有. 佔有且申請條件.進程至少已佔有一個資源,又要申請新的資源.此時該進程阻塞,且在等待過程中不釋放已經佔有的資源. 不可搶佔條件.進程獲得的資源在未使用之前,其他進程不得搶佔該資源. 環路條件.若干個進程相互要佔有彼此的資源,形成一個環路. 8.死鎖的避免 要避免死鎖,分為靜態策略

操作系統-進程管理4(線程)

操作系统-进程管理(线程) 线程 线程的基本概念 线程是比进程更小的.能够独立运行的基本单位,线程比进程能更好地提高程序的并行执行速度,充分利用多处理机的优越性.引用线程主要是为了提高系统的处理效率,减少处理机的空转时间和进行调度时因保护CPU现场浪费的时间. 线程是进程中执行运算的最小单位,即执行处理机调度的基本单位.在引入线程的操作系统中,可以在一个进程内部进行线程的切换. 进程是资源分配的基本单位,同一进程的所有线程共享该进程的所有资源.线程是分配处理机的基本单位,真正在处理机上运行的是线

操作系統-進程管理2(進程的互斥與同步)

操作系统-进程管理2(进程的同步与互斥) 进程的同步与互斥 两个或两个以上的进程不能同时使用的资源称为临界资源.临界资源的存在带来了进程之间的互斥访问的问题. 进程互斥:逻辑上完全独立.毫无关系的两个进程因为竞争同一块资源而相互制约,称为进程互斥. 进程同步:有协作关系的进程不断调整它们之间的相对速度或执行过程,以保证临界资源的合理利用和进程的顺利执行.一般借由中间媒体实现:如信号量操作.加锁操作等.同步机制应遵循的规则: 空闲让进 忙则等待 有限等待:进程等待进入临界区的时间必须是有限的,避免

幾個步驟輕鬆在windows操作系統上搭建GO語言開發環境

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

設置Linux保留物理內存並使用 (1)

在Linux系統中可以通過memblock來設置系統保留物理內存,防止這些內存被內存管理系統分配出去. 作者: 彭東林 郵箱: [email protected] 平臺 硬件平臺: TQ2440 Linux版本:Linux 3.14.45 說明 1. 在tq2440上,物理內存的起始地址是0x30000000,一共有64MB的內存,所以物理內存地址範圍是: 0x30000000 -> 0x33ffffff 2. 可以在uboot傳給kernel的參數bootargs中添加一個"memblo

個人資料管理的網頁系統

需求: 第一階段. 動態生成網頁,此網頁中顯示當前目錄下的文件結構,並可以瀏覽文本文檔以及內建圖片. 第一階段. 建立新的文本文檔,並用富文本的方式,可標記某一段文字顏色以及添加圖片,可以加載其他更多的文件類型,如excel, word, rtf, pdf 操作流程: 用java程式執行dos語句,生成文件目錄資料.整理目錄資料成樹形結構(此檔案留做備份,比對新的目錄有無變化). 用java寫出網頁 ============================== 利用批處理生成網頁 @echo o

使用 NIO.2 操作檔案系統

Java 一直到 JDK 1.3 為止,都是使用 java.io 下的類別進行 I/O 的處理,對這有興趣的鄉民,可以參考「Java I/O」,那是我 13 年前整理的 ... XD.JDK 1.4 之後提供了 NIO,到了 JDK 1.7 又加上些新的功能,稱為 NIO.2,這些類別都被放在 java.nio 下,一般來說,使用 java.nio 類別操作檔案系統,會比使用 java.io 效率來的高且方便. 在進入主題前,各位不妨先看一下我之前整理的「Working with the Pat

Linux-PAM(Linux下的密碼認證和安全机制)系統管理員指南(中文版)

he Linux-PAM 系统管理员指南作者:Andrew G. Morgan, [email protected]翻译:孙国清(Thomas Sun),[email protected]DRAFT v0.71 1999/11/8 这个文档所涉的是系统管理员须知的关于Linux-PAM库的知识. 它涉及了设置PAM的正确语法并讨论维护一个可靠系统的正确的策略.1. 介绍 Linux-PAM (Linux下的可插入式认证模组) 是一套共享函数库,允许系统管理员来决定应用程式如何识别用户. 换句话说