操作系統筆記(十一)虛擬記憶體

来源:https://www.cnblogs.com/niuxu18/archive/2018/03/14/note_os_11.html
-Advertisement-
Play Games

虛擬記憶體 demand paging 如何判斷是否在記憶體里:valid(legal + in memory)invalid(illegal or legal + not in memory)。 如何處理illegal的情況:page fault 到內核 ; 查看internal table(PCB) ...


  • 虛擬記憶體
  1. 概念:區別邏輯記憶體和物理記憶體,對於進程而言,邏輯記憶體式無限大的連續空間。
  2. 理論依據:對於一個進程而言,實際執行的存儲空間很小。
  3. 實現:demand paging 和 demand segmentation。
  • demand paging
  1. 本質:按需載入頁。lazzy swapper。
  2. 優勢:更少的I/O,更少的記憶體需求,更快的響應,更多進程。
  3. 實現
    • 如何判斷是否在記憶體里:valid(legal + in memory)invalid(illegal or legal + not in memory)。
    • 如何處理illegal的情況:page fault 到內核 ; 查看internal table(PCB)得到page fault serivice routine判斷(illegal:終止程式,legal + not in:載入到內核)。
  4. 如何處理物理記憶體滿的情況:page replacement,使得小的物理記憶體可以實現大的虛擬記憶體。註意swap out之後和swap in之後都修改了PTE 。 
      (一種優化:設置臟位,按需swap out)
  5. 頁面置換演算法
    • FIFO 先進先出
    • 最優置換:未來最少使用的頁。很難實現。
    • LRU:最近最少使用。上述的近似,需要硬體記錄頁的最近使用時間。
    • second-chance:硬體提供R(A) 位標記是否最近被使用。0則置換,否則清0給second-chance
  • 虛擬記憶體的原理
  1. 局部性原理:進程從一個局部轉移到另一個局部。緩存的原理。
  2. 抖動:系統頻繁的置換page。 -》 cpu利用率低 -》長期調度提高併發性 -》更多進程載入 -》更嚴重的page fault。原因sum( sizeof(locality) ) > sizeof(physical memory)
  3. working set model: 近似地衡量locality。統計working set window期間的應用頁(working set),作為locality。根據working set 決定進程占用的frame數目。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於實驗室擬態存儲的項目需要通過NAT模式來映射NFS伺服器已實現負載均衡的目的,通過調研了多種負載均衡機制,筆者最終選擇了 LVS的NAT模式 來實現需求,接下來通過博客來記錄一下LVS NAT模式的配置流程。 1.LVS服務的簡介: LVS 是 Linux Virtual Server 的簡寫, ...
  • 驅動的完成步驟: ~~~~ 1. 分配一個 gendisk 結構體 2. 註冊塊設備 3. 分配一個 request_queue 隊列 4. 配置 gendisk 5. 完成上一篇框架中提到的 "處理函數" 6. 添加磁碟 add_disk ~~~~ 初始化程式如下 ~~~~ static int ...
  • 系統的輸入與輸出: 方式 | 描述符 | 含義 | | stdin | 0 | 標準輸入 stdout | 1 | 標準輸出 stderr | 2 | 標準錯誤輸出 把 make 輸出的全部信息重定向到某個文件中: ~~~~ make build_output ~~~~ 把錯誤信息都輸出到一個文件中 ...
  • 監控原理: ActiveMQ作為依賴java環境的中間件,同樣可以像tomcat一樣用JMX(java擴展程式)監控。並且與tomcat不同的是,ActiveMQ自帶了JMX,只需在配置文件中開啟即可,在配置好JMX之後,可以通過Jconsole(監控java環境的工具)監控ActiveMQ 環境: ...
  • Redis是我們當下比較流行使用的非關係資料庫,可支持多樣化的數據類型,多線程高併發支持,redis運行在記憶體擁有更快的讀寫。因為redis的表現如此出色,如何能保障redis在運行中能夠應對宕機故障, 所以今天總結了下redis主從高可用的搭建,參考了網上一些大神的博客文章,發現很多都是有坑的,所 ...
  • 伺服器需要換python環境,手賤重裝了,今天湊巧需要測試資料庫,花了一個小時搞了一下MySQL安裝。 1.刪除原有Mariadb 說明:目前centos預設的MySQL是Mariadb,由於習慣了MySQL(Oracle)加上一堆亂七八糟的原因,還是需要MySQL作資料庫。 Linux終端輸入命令 ...
  • 安裝前要關閉防火牆,防止外網不能訪問,這一點很重要,要不然外網訪問不了; ①關閉防火牆:service iptables stop ②永久關閉防火牆:chkconfig iptables off ③查看防火牆狀態:service iptables status 1.安裝Apache [root@lo ...
  • keepalived使用腳本進行健康檢查時的相關配置項。例如keepalived+haproxy實現haproxy的高可用。 keepalived分為vrrp實例的心跳檢查和後端服務的健康檢查。如果要配置後端服務,則後端服務只能是LVS。但vrrp能獨立與lvs存在,例如keepalive結合hap ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...