存儲器管理

来源:https://www.cnblogs.com/ygjzs/archive/2020/02/22/12345790.html
-Advertisement-
Play Games

存儲器管理了 存儲器管理的主要模式 邏輯地址:又稱相對地址,即用戶編程所使用的地址空間,邏輯地址從0開始編號,有兩種形式:一維邏輯地址(地址),二維邏輯地址(段號:段內地址) 段式程式設計:把一個程式設計成多個段,代碼段、數據段、堆棧段、等等,用戶可以自己應用段覆蓋技術擴充記憶體空間使用量這一技術是程 ...


存儲器管理了

存儲器管理的主要模式

邏輯地址:又稱相對地址,即用戶編程所使用的地址空間,邏輯地址從0開始編號,有兩種形式:一維邏輯地址(地址),二維邏輯地址(段號:段內地址)

段式程式設計:把一個程式設計成多個段,代碼段、數據段、堆棧段、等等,用戶可以自己應用段覆蓋技術擴充記憶體空間使用量這一技術是程式設計技術,不是OS存儲管理的功能

物理地址:又稱絕對地址,即程式執行所使用的地址空間,處理器執行指令時按照物理地址進行

主存儲器的復用

多道程式設計需要復用主存

按照分區復用:

  • 主存劃分為多個固定/可變尺寸的分區
  • 一個程式/程式段占用一個分區

按照頁架復用

  • 主存劃分成多個固定大小的頁架
  • 一個程式/程式段占用多個頁架

存儲管理的基本模式

  • 單連續存儲管理:一維邏輯地址空間的程式占用一個主存固定分區或可變分區
  • 段式存儲管理:段式二維邏輯地址空間的程式占用多個主存可變分區
  • 頁式存儲管理:一維邏輯地址空間的程式占用多個主存頁架區
  • 段頁式存儲管理:段式二維邏輯地址空間的程式占用多個主存頁架區

存儲管理的功能

地址轉換

地址轉換:又稱重定位,即把邏輯地址轉換成絕對地址

靜態重定位:在程式裝入記憶體時進行地址轉換,由裝入程式執行,早期小型OS使用

動態重地位:在CPU執行程式時進行地址轉換•從效率出發,依賴硬體地址轉換機構

主存儲器空間的分配與去配

分配:進程裝入主存時,存儲管理軟體進行具體的主存分配操作,並設置一個表格記錄主存空間的分配情況

去配:當某個進程撤離或主動歸還主存資源時,存儲管理軟體要收回它所占用的全部或者部分存儲空間,調整主存分配表信息

主存儲器空間的共用

多個進程共用主存儲器資源:多道程式設計技術使若幹個程式同時進入主存儲器,各自占用一定數量的存儲空間,共同使用一個主存儲器

多個進程共用主存儲器的某些區域:若幹個協作進程有共同的主存程式塊或者主存數據塊

存儲保護

為避免主存中的多個進程相互干擾,必須對主存中的程式和數據進行保護,私有主存區中的信息:可讀可寫,公共區中的共用信息:根據授權,非本進程信息:不可讀寫,這一功能需要軟硬體協同完成,CPU檢查是否允許訪問,不允許則產生地址保護異常,由OS進行相應處理

主存儲器空間的擴充

存儲擴充:把磁碟作為主存擴充,只把部分進程或進程的部分內容裝入記憶體,1.對換技術:把部分不運行的進程調出,2.虛擬技術:只調入進程的部分內容

這一工作需要軟硬體協作完成,1.對換進程決定對換,硬體機構調入,2.CPU處理到不在主存的地址,發出虛擬地址異常,OS將其調入,重執指令

虛擬存儲器

虛擬存儲器思想的提出

主存容量限制帶來諸多不便,用戶編寫程式必須考慮主存容量限制,多道程式設計的道數受到限制

用戶編程行為分析:

  • 全面考慮各種情況,執行時有互斥性
  • 順序性和迴圈性等空間局部性行為
  • 某一階段執行的時間局部性行為

因此可以考慮部分調入進程內容

虛擬存儲器的基本思想

存儲管理把進程全部信息放在輔存中,執行時先將其中一部分裝入主存,以後根據執行行為隨用隨調入,如主存中沒有足夠的空閑空間,存儲管理需要根據執行行為把主存中暫時不用的信息調出到輔存上去

虛擬存儲器的實現思路

需要建立與自動管理兩個地址空間:(輔存)虛擬地址空間:容納進程裝入,(主存)實際地址空間:承載進程執行;對於用戶,電腦系統具有一個容量大得多的主存空間,即虛擬存儲器,虛擬存儲器是一種地址空間擴展技術,通常意義上對用戶編程是透明的,除非用戶需要進行高性能的程式設計

存儲管理的硬體支撐

存儲器的組織層次

存儲管理涉及的存儲對象

存儲管理是OS管理主存儲器的軟體部分,為獲得更好的處理性能,部分主存程式與數據(特別是關鍵性能數據)被調入Cache,存儲管理需要對其進行管理,甚至包括對聯想存儲器的管理,為獲得更大的虛擬地址空間,存儲管理需要對存放在硬碟、固態硬碟、甚至網路硬碟上的虛擬存儲器文件進行管理

高速緩存存儲器(Cache)

Cache是介於CPU和主存儲器間的高速小容量存儲器,由靜態存儲晶元SRAM組成,容量較小但比主存DRAM技術更加昂貴而快速,接近於CPU的速度,CPU往往需要重覆讀取同樣的數據塊,Cache的引入與緩存容量的增大,可以大幅提升CPU內部讀取數據的命中率,從而提高系統性能

高速緩存存儲器的構成

高速緩衝存儲器通常由高速存儲器、聯想存儲器、地址轉換部件、替換邏輯等組成

  • 聯想存儲器:根據內容進行定址的存儲器
  • 地址轉換部件:通過聯想存儲器建立目錄表以實現快速地址轉換。命中時直接訪問Cache;未命中時從記憶體讀取放入Cache
  • 替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件

高速緩存存儲器的分級

  • L1Cache:分為數據緩存和指令緩存;內置;其成本最高,對CPU的性能影響最大;通常在32KB-256KB之間
  • L2Cache:分內置和外置兩種,後者性能低一些;通常在512KB-8MB之間
  • L3Cache:多為外置,在游戲和伺服器領域有效;但對很多應用來說,匯流排改善比設置L3更加有利於提升系統性能

地址轉換/存儲保護的硬體支撐

存儲管理與硬體支撐

  • 鑒於程式執行與數據訪問的局部性原理,存儲管理軟體使用cache可以大幅提高程式執行效率
  • 動態重定位,存儲保護等,若無硬體的支撐在效率上是為無意義的,即無實現價值
  • 無虛擬地址中斷,虛擬存儲器無法實現
  • 無頁面替換的硬體支撐機制,虛擬存儲其在效率上無意義

單連續分區

  • 每個進程占用一個物理上完全連續的存儲空間(區域)
  • 單用戶連續存儲管理
  • 固定分區存儲管理
  • 可變分區存儲管理

單用戶連續分區存儲管理

主存區域劃分為系統區與用戶區,設置一個柵欄寄存器界分兩個區域,硬體用它在執行時進行存儲保護,一般採用靜態重定位進行地址轉換,硬體實現代價低,適用於單用戶單任務操作系統,如DOS

靜態重定位:在裝入一個作業時,把該作業中程式的指令地址和數據地址全部轉換成絕對地址

固定分區存儲管理的基本思想

  • 支持多個分區
  • 分區數量固定
  • 分區大小固定
  • 可用靜態重定位
  • 硬體實現代價低
  • 早期OS採用


可變分區存儲管理概述

固定分區存儲管理不夠靈活,既不適應大尺寸程式,又存在記憶體內零頭,有浪費,能否按照進程實際記憶體需求動態劃分分區,並允許分區個數可變,這就是可變分區存儲管理

可變分區存儲管理

按進程的記憶體需求來動態劃分分區,創建一個進程時,根據進程所需主存量查看主存中是否有足夠的空閑空間,若有,則按需要量分割一個分區,若無,則令該進程等待主存資源,由於分區大小按照進程實際需要量來確定,因此分區個數是隨機變化的


可變分區方式的記憶體分配

  • 最先適應分配演算法
  • 鄰近適應分配演算法
  • 最優適應分配演算法
  • 最壞適應分配演算法

可變分區方式的記憶體零頭

固定分區方式會產生記憶體內零頭,可變分區方式也會隨著進程的記憶體分配產生一些小的不可用的記憶體分區,稱為記憶體外零頭,最優適配演算法最容易產生外零頭,任何適配演算法都不能避免產生外零頭

移動技術(程式浮動技術)

移動分區以解決記憶體外零頭,需要動態重定位支撐



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

-Advertisement-
Play Games
更多相關文章
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8109100.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第八個模式--職責鏈模式。讓我們看看現實生活中某公司採購流程的例子吧,理解起來可能更容易。某公司的規章制度 規定,採 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8057654.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第七個模式--策略模式。在現實生活中,策略模式的例子也非常常見,例如:在一個公司中,會有各種工作人員:有普 通員工、 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8032683.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第六個模式--狀態模式。無論是現實世界,還是面向對象的OO世界,裡面都有一個東西,那就是對象。有對象當然就有 狀態了 ...
  • 抗疫時期,想到弄個微信程式用於社區出入和復工復產人員流動登記,老早就買的盛派的書和視頻,一直沒時間看,趁這個需求,下載盛派weixinDSK開始學習,先是打開盛派的網站陸續無法打開, 幫助文檔也沒能搶救性下載,估計是盛派在遷移啥東西。項目生成工具也不能用了 試著把GitHub上下載的sample部署 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7966240.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第五個模式--中介者模式,先從名字上來看。中介者模式可以理解為在兩個或多個對象中間增加一個“中間對象”,由增加 的“ ...
  • SecureCRT的下載、安裝( 過程非常詳細!!值得查看) 簡單介紹下SecureCRT 一、SecureCRT的下載 二、SecureCRT的安裝 簡單介紹下SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的終端模擬程式,簡單地說是Windows下登錄UNIX或Lin ...
  • grub:GRand Unified Bootloader grub 0.x:grub legacy(centos5,6) grub 1.x:grub2(centos7) grub legacy(grub 0.x) stage1:mbr stage1_5:mbr之後的扇區,讓stage1中的boot ...
  • 今天首先學習Vim編輯器的使用,通過它可以對Linux系統的文件進行編寫和修改。在Linux系統中一切都是文件,所以熟練掌握Vim編輯器的使用十分重要。最後通過配置主機網卡的實驗,來加深Vim編輯器中諸多命令、快捷鍵、模式切換方法的理解。 一、Vim文本編輯器 Vim編輯器設置了三種模式,每種模式分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...