操作系統之內存管理(王道)

本篇博客依據王道、與我的筆記而寫,講解了內存的基礎知識、內存管理的概念、進程的映像、連續分配管理方式、動態分區分配算法、基本分頁存儲管理、基本地址變換機構、TLB快表、兩級頁表、基本分段存儲管理方式、段頁式存儲管理方式、虛擬內存、請求分頁管理方式、頁面置換算法、頁面分配策略、內存映射文件

在博客末尾,附有學習日記

知識大綱(內存的基礎知識)

簡單的介紹了內存相關的基本知識(作用、指令、邏輯/物理地址、程序咋運行-鏈接+裝入...

什么是內存,有啥用?

外存與cpu的中介,加快交換數據的速度

從而引出。邏輯地址,如何轉化為內存里的物理地址

補充知識:常用數量單位

換算單位:1GB=10^10MB=10^20KB=10^30B

指令的工作原理

可以把指令看成任務說明書!這樣也挺棒

因為指令存在外存中

從而引出。外存視為邏輯地址,如何在裝入時,轉換為內存中的物理地址

抽象版:

解釋版

裝入的三種方式
絕對裝入

最簡單暴力的裝入方式,在裝入前強改邏輯地址,方便裝入。

可重定位裝入

在裝入的過程中,動態的更改。

動態重定位

物理地址=邏輯地址,額外設計重定位寄存器。

只用在用到時,才會用邏輯地址+寄存器內的值

從寫程序到程序運行

編譯、鏈接、裝入

鏈接的三種方式

1、靜態鏈接(直接封裝好)

2、動態鏈接(裝入時,在封裝)

3、運行時動態鏈接(運行到那塊,裝入那塊)

知識回顧與重要考點

知識大綱(內存管理的概念)

都是基礎

內存空間的分配與回收

內存空間的拓展

地址轉換

內存保護

通過 重地位寄存器 與 界地址寄存器 進行保護。

知識回顧與重要考點

知識大綱(進程的內存映像)

可能考法

知識大綱(連續分配管理方式)

單一連續分配

固定分區分配

動態分區分配

1、第一個問題:空閑分區表與空閑分區鏈

2、四種分配算法

3、分配與回收,就需要改動表了

數據結構
四種情況

知識回顧

知識大綱(動態分區分配算法)

首次適應算法

算法思想: 每次都從低地址開始查找,找到第一個能滿足大小的空閑分區。

如何實現: 空閑分區以地址遞增的次序排列。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。

最佳適應算法

算法思想: 由于動態分區分配是一種連續分配方式,為各進程分配的空間必須是連續的一整片區域。因此為了保證當“大進程”到來時能有連續的大片空間,可以盡可能多地留下大片的空閑區即,優先使用更小的空閑區。

如何實現: 空閑分區按容量遞增次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。

缺點: 每次都選最小的分區進行分配,會留下越來越多的、很小的、難以利用的內存塊。因此這種方法會產生很多的外部碎片。

最壞適應算法

又稱 最大適應算法(Largest Fit)算法思想:為了解決最佳適應算法的問題--即留下太多難以利用的小碎片,可以在每次分配時優先使用最大的連續空閑區,這樣分配后剩余的空閑區就不會太小,更方便使用。

如何實現:空閑分區按容量遞減次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。

缺點:每次都選最大的分區進行分配,雖然可以讓分配后留下的空閑區更大,更可用,但是這種方式會導致較大的連續空閑區被迅速用完。如果之后有“大進程”到達,就沒有內存分區可用了。

鄰近適應算法

算法思想: 首次適應算法每次都從鏈頭開始查找的。這可能會導致低地址部分出現很多小的空閑分區,而每次分配查找時,都要經過這些分區,因此也增加了查找的開銷。如果每次都從上次查找結束的位置開始檢索,就能解決上述問題。

如何實現: 空閑分區以地址遞增的順序排列(可排成一個循環鏈表)。每次分配內存時從上次查找結束的位置開始查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。

知識回顧

綜合來看首次適應算法挺不錯

知識大綱(基本分頁存儲管理的概念)

什么是分頁儲存

(邏輯地址)頁、頁面 vs (物理地址)頁框、頁幀、物理頁頁號、頁面號vs 頁框號、頁幀號、物理頁號

重要的數據結構
頁表(頁號、塊號)

每個頁表項占多少字節?

頁表項(塊號)占多少字節?

頁號呢?

如何實現地址的轉換

要知道頁號+偏移量

邏輯圖:

實現圖:

如何確定一個邏輯地址對應的頁號與頁內偏移量

頁號:邏輯地址/頁面長度

頁內偏移量:邏輯地址%頁面長度

物理地址 = 頁號在物理地址中的起始位置+頁內偏移量

衍生問題:

可以看下方的那個 邏輯地址結構

邏輯地址結構

就是底層分析:

通過位數,可以確定頁號與頁內偏移量

知識回顧與重要考點

知識大綱(基本地址變換機構)

基本地址變換機構:

其實也就差不多,就這4步。

詳細步驟,示意圖:

邏輯地址到物理地址的轉換。

具體計算

對頁表項的考慮

知識回顧

知識大綱(具有快表的地址變換機構)

什么是快表(TLB)

快表就是高速緩存TLB,不是內存。里面儲存的是最近訪問內存的副本。

應用快表查找方式

1、是否越界

2、查快表 / 失敗后在查內存

3、得到并訪問物理地址

引入快表后的耗時

查詢快表有兩種方式

1、先查快表,再查慢表(111us

2、同時查詢(1+100)*0.9+(100+100)*0.1 = 110.9us

詳細圖解

局部性原理

主要是講解:為啥需要TLB

知識回顧與重要考點

知識大綱(兩級頁表)

單級頁表存在的問題

1、占用連續內存過大

2、不是所有頁面都需要常駐內存

如何解決單級頁表的問題(連續存放問題)?
開啟多級頁表

兩級頁表的原理、地址結構

(邏輯:頁目錄表+2級頁表+偏移量)

具體:

如何實現地址變換

如何解決單級頁表問題(虛擬存儲)

通過添加缺頁中斷(添加了一個標志位)

計算:

知識回顧:

1、單級頁表的問題

2、兩級頁表

3、如何實現地址變換

4、訪問次數+各個多級頁表大小

知識大綱(基本分段存儲管理方式)

分段
1、

2、

段表

地址轉換

分段、分頁管理的對比

分頁(物理)、分段(邏輯)

其中,分頁是,直接將內存切成小方格。你只要各個頁面就能直接查(一維)

分段是,根據需求,得出段號與段內地址(二維)

優點

解釋:

對比總結:

知識總結:

知識大綱(段頁式管理方式)

本章就學倆東西:

1、分頁、分段的優缺點:是否會產生外部碎片,邏輯分塊與內存保護做的怎么樣

2、段頁式計算物理地址的方法

分頁、分段的優缺點分析

分段+分頁 = 段頁式管理

段頁式管理的邏輯地址結構

段表、頁表

邏輯:

知識回顧與重要考點

通過添加缺頁中斷(添加了一個標志位)

計算:

知識回顧:

1、單級頁表的問題

2、兩級頁表

3、如何實現地址變換

4、訪問次數+各個多級頁表大小

知識大綱(基本分段存儲管理方式)

分段
1、

2、

段表

地址轉換

分段、分頁管理的對比

分頁(物理)、分段(邏輯)

其中,分頁是,直接將內存切成小方格。你只要各個頁面就能直接查(一維)

分段是,根據需求,得出段號與段內地址(二維)

優點
解釋:

對比總結:

知識總結:

知識大綱(段頁式管理方式)

本章就學倆東西:

1、分頁、分段的優缺點:是否會產生外部碎片,邏輯分塊與內存保護做的怎么樣

2、段頁式計算物理地址的方法

分頁、分段的優缺點分析

分段+分頁 = 段頁式管理

段頁式管理的邏輯地址結構

段表、頁表

邏輯:

知識回顧與重要考點


借鑒:

1、王道

2、【有道云筆記】第三章內存管理 -- 我的筆記


學習日記:?

6.17(周二)上午雜事,已經處理完畢
死鎖的檢測 和 解除,
運用了資源分配圖與死鎖檢測算法
解除共有三種方式:強行剝奪、回退、撤銷
下午學習內存基礎、了解了指令。學習裝入(靜態裝入、動態裝入、重定位裝入)
與鏈接(與裝入類似)的三種方法。
并在內存管理中學習了內存分配(下方三種)、地址轉換、內存保護
并且還了解,地址分配是由第一地址分配、固定地址分配、動態分配)三種分配
其中動態分配可由四個算法實現:
首次適應算法(綜合性最好)、最佳適應算法(從小到大、需排序)、最壞適應算法(從大到小、需排序)、鄰近適用算法(鏈表)
其中在學習,分頁式儲存管理時,學習到了:
頁、頁框、頁框號....
晚上....
6.18(周三)上午學習了基本分頁式儲存管理,從而引出基本地址變換機構(簡而言之,將邏輯地址轉換成頁號與頁面偏移量,從而在內存中查找頁表,最終計算出物理地址)。
為了加快速度,又引出了高速緩存(TLB)。
基本分頁儲存太浪費大塊內存。所以又發明了兩級頁表。即可增加內存利用率,也增加了靈活性。
多級頁表頁也就此被發明。
下午學習了段式存儲(是按照邏輯設計分段、提供內存保護)結合頁式儲存又演進成了段頁式存儲(=段表+頁表)。而虛擬內存技術拓充了內存。通過請求分頁管理與頁面置換算法實現。
期中,請求分頁管理包含:頁表機制(段號、狀態號、訪問字段、修改位、外存地址),缺頁中斷、地址轉換-計算題
而頁面置換算法又分為(OPT-最佳、FIFO-最次但簡單、LRU-最接近最優但實現代價大、CLOCK+改良版-這倆挺不錯)
之后又講了,頁面分配策略(像什么工作集、駐留集、抖動現象....)其中最精彩的,還是局部分配與全局分配。一個是用自己進程的內存塊,一個是全局進程調用。
晚上... ...
6.19(周四)上午操作系統共主打四大管理(處理機、存儲、文件、設備..管理)而,今天初識文件管理(認識了FCB、操作系統向上提供的功能、磁盤塊、文件的各個屬性...)粗廣學習后,(細入)又引入了文件結構(無結構-流式、有結構-又稱記錄型文件)。其中結構文件分為,順序文件、索引文件、索引順序文件(拓展)--多級索引順序文件。跳出框架后,又學得將各個文件組織起來的方式-TCB。也就是,單級目錄、兩級目錄、多級目錄。無環圖目錄--方便共享文件、并方便查詢、不同目錄可重命名。
下午學習了連續分配,鏈接分配,索引分配。其中索引分配又細化為鏈接索引,多層索引,混合索引。而這些是為了解決文件存儲在硬件問題
晚上......
6.20(周五)上午這個回顧一下,這幾天學習了邏輯結構與物理結構。其中邏輯機構(由用戶決定--與內存息息相關,且操作系統并不關心)-專門用來管理內存中的文件。其次就是物理結構(由操作系統決定,將文件采用什么樣的方式存儲在外存上。并負責邏輯塊與物理塊的轉化)
其中,他們都包含順序、鏈式、索引分配。
下午學習了文件存儲管理(空閑表法、空閑鏈表法、位視圖法、 成組鏈表法)
學習完儲存,然后學習了文件的基礎操作(從創建刪除,到打開關閉,又組合出讀寫功能)有了存儲、操作,之后又學習了軟硬鏈接的操作--為共享文件而生,軟連接為Link法。口令/加密/訪問保護,其中我認為訪問保護的發放權限功能最絕。
晚上.....

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86139.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++11 std::thread 多線程編程詳解

C++11 標準首次將多線程支持引入語言標準庫,其中最核心的部分就是 <thread> 頭文件中的 std::thread 類。 ?? 一、基本概念 什么是線程? 線程是操作系統調度 CPU 時間的基本單位。一個進程中可以有多個線程,它們共享進程的資源(如內存、堆棧),但擁有各自獨立的…

設置vscode使用eslint

在 Visual Studio Code (VSCode) 中設置 ESLint 是一個很好的方式來確保代碼質量和一致性。以下是詳細的步驟&#xff1a; 1. 安裝 ESLint 擴展 打開 VSCode。點擊左側的擴展圖標&#xff08;四邊形圖標&#xff09;。在搜索框中輸入 ESLint。找到由 dbaeumer 提供的 ESLint …

.NET 生態中主流的前后端生產級框架

文章目錄 **1. 后端框架&#xff08;Backend Frameworks&#xff09;****(1) ASP.NET Core**&#xff08;微軟官方&#xff0c;主流選擇&#xff09;**(2) ABP Framework**&#xff08;企業級應用開發框架&#xff09; **2. 前端框架&#xff08;Frontend Frameworks&#xff0…

Spring Cloud Alibaba整合Sentinel指南

目錄 一、Sentinel核心功能概述 1. 控制臺安裝 2. 項目依賴配置 三、詳細整合步驟 1. 基礎配置 2. 資源定義與保護 3. 與OpenFeign整合 四、常見問題解決方案 五、最佳實踐案例 1. 流量控制場景 2. 熔斷降級場景 3. 熱點參數限流 六、高級功能 Spring Cloud Aliba…

Win10+PHPStudy 8.1完美運行CRMEB開源商城(附性能優化配置)

環境配置 下載phpstudy https://www.xp.cn/ 安裝完成之后打開&#xff0c;在軟件管理中安裝 nginx mysql 5.7 php 7.4 創建站點 填寫域名&#xff0c;根目錄選擇到public文件夾下 創建完成之后&#xff0c;點擊右側管理&#xff0c;選擇偽靜態 location / { if (!-e $request…

康謀方案 | ARXML 規則下 ECU 總線通訊與 ADTF 測試方案

目錄 一、引言 二、汽車電子控制系統 三、ECU開發流程中總線通訊&#xff1a;ARXML 規則下的標準化協作 四、ADTF&#xff1a;汽車數據與時間觸發框架&#xff08;Automotive Data and Time-Triggered Framework&#xff09; 五、應用案例 六、結語 一、引言 隨著汽車新…

常見JavaScript 代理模式應用場景解析

常見JavaScript 代理模式應用場景解析 在 JavaScript 開發中&#xff0c;代理模式&#xff08;Proxy Pattern&#xff09; 是一種強大的設計模式&#xff0c;它允許我們通過創建一個“代理”來控制對目標對象的訪問。通過代理&#xff0c;我們可以攔截并增強對象的行為&#x…

暴雨信創電腦代理商成功中標長沙市中醫康復醫院

6月25日&#xff0c;國內科技產業領軍企業暴雨信息傳來喜訊&#xff0c;其信創電腦成功中標長沙市中醫康復醫院信息化設備采購項目。此次中標&#xff0c;不僅彰顯了暴雨信息在信創領域的技術實力和產品優勢&#xff0c;也為長沙市中醫康復醫院的信息化建設注入了新的活力。 長…

ZYNQ PL高速采集AD7606數據與QT動態顯示全解析

從硬件設計到軟件優化,打造工業級數據采集系統 在工業自動化、醫療儀器等領域,高速多通道數據采集系統至關重要。本文手把手教你基于Xilinx ZYNQ平臺,實現8通道200kSPS高速采集**,并通過QT實現60fps動態波形顯示。突破性采用五級流水采集架構和GPU加速渲染,解決傳統方案的…

還是工作日志

今天感覺效率有點低&#xff0c;可能是太熱了 【100】 開始不懂了 https://www.bilibili.com/video/BV1rL411E7uz?t1193.7&p100 什么新增&#xff0c;什么新增和變化 【101】退單 開頭就說不適合做事務型 https://www.bilibili.com/video/BV1rL411E7uz?t26.6&…

青少年編程與數學 01-012 通用應用軟件簡介 10 云存儲軟件

青少年編程與數學 01-012 通用應用軟件簡介 10 云存儲軟件 一、什么是云存儲軟件&#xff08;一&#xff09;云存儲軟件的基本定義&#xff08;二&#xff09;云存儲軟件的工作原理&#xff08;三&#xff09;云存儲軟件的類型 二、云存儲軟件的重要意義&#xff08;一&#xf…

華為云Flexus+DeepSeek征文 | 掌握高效開發:利用華為云ModelArts Studio在VS Code中配置Cline AI編程助手

華為云FlexusDeepSeek征文 | 掌握高效開發&#xff1a;利用華為云ModelArts Studio在VS Code中配置Cline AI編程助手 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、Cline介紹Cline介紹Cline主要特點 三、開通DeepSeek-R1-0528商用…

Python核心可視化庫:Matplotlib與Seaborn深度解析

文章目錄 前言一、Matplotlib&#xff1a;科學可視化的基石1.1 核心架構層級后端層&#xff08;Backend Layer&#xff09;藝術家層&#xff08;Artist Layer&#xff09;腳本層&#xff08;Scripting Layer&#xff09; 1.2 核心模塊詳解matplotlib.figure 模塊matplotlib.axe…

EJB知識

EJB&#xff08;Enterprise JavaBeans&#xff09;是 Java EE&#xff08;現稱 Jakarta EE&#xff09;平臺的核心技術之一&#xff0c;用于開發分布式、可擴展、事務性的企業級應用。以下從基礎到高級全面解析 EJB&#xff1a; 一、EJB 基礎概念 1. 定義與角色 EJB 是服務器…

【項目管理】項目管理資料文檔模板(ZIP,PPT,WORD)

項目交付文檔 01項目詳細調研計劃編寫規范V1.0.doc 03項目詳細調研報告編寫規范V1.0.doc 07軟件需求規格說明書評審規范V1.0.doc 10.軟件需求規格說明.doc 產品檢查單,xls 工程評審.zip 軟件標準過程集.zip 系統測試管理規程.docx 四)項目管理計劃.doc 項目管理系統實施項目管理…

CentOS 6 Linux 系統添加永久靜態路由的方法詳解!

全文目錄&#xff1a; 開篇語 **【詳解】**1. **靜態路由的概念與應用場景**1.1 **靜態路由簡介**1.2 **靜態路由的應用場景** 2. **臨時添加靜態路由**2.1 **使用 route 命令臨時添加靜態路由**示例&#xff1a;添加一個臨時路由 2.2 **查看當前路由表**2.3 **臨時路由的局限性…

(mysql、oracle、pgsql、mongodb、redis、es)主流數據庫的核心差異

以下是主流數據庫的核心差異及適用場景的全面對比&#xff0c;結合技術特性和實際應用需求整理&#xff1a; &#x1f4ca; 一、數據庫分類與核心差異 1. 關系型數據庫&#xff08;RDBMS&#xff09; 數據庫核心特點適用場景MySQL開源、讀寫性能均衡&#xff0c;易用性高&…

第8章:智能菜譜生成器——語言模型如何解析烹飪秘方

第8章:智能菜譜生成器——語言模型如何解析烹飪秘方 從語義理解到操作執行的完整技術解密 工業案例背景: 法國里昂的Bocuse d’Or國際烹飪大賽選手手冊中記載這樣一道經典指令:“將醬汁熬煮至Napp狀態(即勺子劃過痕跡緩慢回填)”。當傳統NLP系統將其簡單譯為"煮濃&q…

零基礎學前端-傳統前端開發(第四期-JS基礎)

經過前面學過的HTML,CSS的學習&#xff0c;相信大家已經可以使用進行常用的頁面開發&#xff0c;接下來我們就要學習JavaScript&#xff0c;鑒于內容過多&#xff0c;需要長期練習 流程為&#xff1a;數據類型>>運算>>語法&#xff0c;語句>>對象>>數組…

機器學習-- 數據、數據集、評價模型

處理數據 相比于構建模型&#xff0c;機器學習從業者需要花更多的時間來評估、清理和轉換數據。 數值數據表示整數或浮點值 其行為方式與數字類似的函數。也就是說&#xff0c;它們是可累加的、可數的、有序的&#xff0c; 依此類推。 盡管有些數據是是以數字方式存在&#…