Linux八股【1】-----虛擬內存

參考:小林coding

虛擬內存存在的目的?

為了能夠同時運行多個進程同時進程之間互不干擾
虛擬地址通過MMU找到物理地址

物理內存怎么映射的?

物理內存的映射方法主要有兩種,內存分段和內存分頁

內存分段

把程序的不同區,分段映射
在這里插入圖片描述

在這里插入圖片描述

會存在問題:內存碎片、內存交換效率低

內存碎片很好理解,解決辦法是:
先寫入硬盤,再讀回內存,位置都是緊貼在一起

內存交換效率低
每次內存交換都要交換一個程序的段,會導致交換效率低

內存分頁

Linux下一個頁大小是4KB
在這里插入圖片描述
頁表存儲在內存中,MMU將虛擬內存轉成物理內存地址

流程:

  • 進程訪問的虛擬地址在頁表內查不到,此時會出現缺頁異常
  • 進入系統內核空間分配物理內存,更新進程頁表

內存不夠的情況:

  • 會把最近沒有使用的頁內存釋放,寫入硬盤(換出)
  • 需要時再加載回來(換入)

內存分頁映射

如果只用一個頁表,那么在進程增多時,頁表的大小會特別大

多級頁表

在這里插入圖片描述
多級頁表的一級頁表可以覆蓋整個內存空間

如果某個一級頁表項沒有被用到,二級頁表就不會被創建

需要時才會創建。

64位操作系統的頁表分級:
全局頁目錄項PGD
上層頁目錄項PUD
中間頁目錄項PMD
頁表項PTE
在這里插入圖片描述

TLB

頁表cache
把最常訪問的頁表存儲到訪問速度更快的cache
稱為頁表緩存,快表

CPU 在尋址時,會先查 TLB,如果沒找到,才會繼續查常規的?表。

段頁式內存管理

先劃成段,再從段里劃成頁
在這里插入圖片描述

Linux內存管理

linux使用頁式內存管理
虛擬內存地址分為內核空間用戶空間
所有進程的虛擬地址中的內核空間地址指向同一物理內存空間

用戶空間

分為:

  • 程序文件段,.text
  • 已初始化數據段,.data
  • 未初始化數據段,.bss
  • 堆段
  • 文件映射段
  • 棧段
    在這里插入圖片描述

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

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

相關文章

驚艷呈現:探索數據可視化的藝術與科學

一張圖表真能勝過千言萬語?當超市銷售數據變成跳動的熱力圖,當城市交通擁堵狀況化作流動的光帶,數據可視化正以超乎想象的方式重塑我們認知世界的維度。但你是否想過,那些看似精美直觀的圖表背后,藏著怎樣精密的科學邏…

06-排序

排序 1. 排序的概念及其應用 1.1 排序的概念 排序:所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。 穩定性:假定在待排序的記錄序列中,存在多個具有相同的關鍵…

從失效文檔到知識資產:Gitee Wiki 引領研發知識管理變革

在關鍵領域軟件研發的復雜生態中,知識管理正成為制約行業發展的關鍵瓶頸。隨著軟件系統規模不斷擴大、技術棧日益復雜,傳統文檔管理模式已難以滿足現代軟件工廠對知識沉淀、共享和傳承的需求。Gitee Wiki作為新一代知識管理平臺,通過技術創新…

MySQL 性能調優入門 - 慢查詢分析與索引優化基礎

MySQL 性能調優入門 - 慢查詢分析與索引優化基礎 性能問題診斷的通用思路 當數據庫出現性能問題時,切忌盲目猜測或隨意調整參數。一個科學的診斷流程通常包括: 基于數據,而非猜測 (Data-Driven, Not Guesswork):利用我們在上一篇討論的性能監控指標和建立的基線。查看哪些…

8天Python從入門到精通【itheima】-73~74(數據容器“集合”+案例練習)

目錄 73節-集合的基礎定義和操作 1.學習目標 2.為什么要用集合 3.集合的定義 4.關于集合的常用操作 【1】添加新元素:add方法 【2】移除元素:remove方法 【3】隨機取出元素:pop方法 【4】清空集合:clear方法 【5】取出兩…

國芯思辰| AD7894的優質替代方案:SC1424模數轉換器在分布式控制系統中的應用優勢

分布式控制系統將控制任務分散至多個節點,各節點協同工作以實現復雜的控制目標。在這一架構下,系統ADC提出了嚴苛要求。高精度是精準采集各類模擬信號(如傳感器輸出的電壓、電流信號)的基礎,關乎控制決策的準確性&…

Unity基礎-數學向量

Unity基礎-數學向量 二、向量相關用法 概述 向量在Unity游戲開發中扮演著重要角色,用于表示位置、方向、速度等。Unity提供了Vector2、Vector3等結構體來處理向量運算。 1. 向量基礎操作 1.1 向量創建和訪問 // 創建向量 Vector3 position new Vector3(1, 2,…

Neo4j 數據建模:原理、技術與實踐指南

Neo4j 作為領先的圖數據庫,其核心優勢在于利用圖結構直觀地表達和高效地查詢復雜關系。其數據建模理念與傳統關系型數據庫截然不同,專注于實體(節點)及其連接(關系)。以下基于官方文檔,系統闡述其建模原理、關鍵技術、實用技巧及最佳實踐: 一、 核心原理:以關系為中心…

volka 25個短語動詞

以下是分句分段后的內容: 3,000. Thats 95% of spoken English. And I am teaching you all of these words. First, Ill teach you todays words. And then youll hear them in real conversations. With my brother. Stick around until the end, because witho…

服務器中日志分析的作用都有哪些

服務器日志是用來檢測和排查可疑行為的主要工具,運維團隊可以通過分析和解讀日志文件,發現服務器中潛在的網絡安全威脅或異常活動,下面,就讓小編和大家一起來了解一下服務器中日志分析的作用都有什么吧! 對于服務器中的…

嵌入式硬件篇---龍芯2k1000串口

針對串口錯誤 “device reports readiness to read but returned no data (Device disconnected or multiple access on port?)” 的排查和解決方法 硬件方面 檢查連接 確認串口設備(如串口線、連接的模塊等)與龍芯設備之間的物理連接是否牢固,沒有松動、脫落情況。嘗試重新…

基于langchain的簡單RAG的實現

閑來無事,想研究一下RAG的實現流程,看網上用langchain的比較多,我自己在下面也跑了跑,代碼很簡單,以次博客記錄一下,方便回顧 langchain LangChain 是一個基于大型語言模型(LLM)開發…

視頻監控平臺建設方案

第三方視頻監控平臺是整合視頻監控、門禁、報警等多業務的安防軟件系統,具備兼容性、開放性、多業務整合和多級聯網能力。其核心價值在于兼容友商編解碼設備(如 IPC、DVR)、整合第三方子系統(如報警聯動)、支持多級多域架構(適應平安城市等大規模場景)及提供集中存儲方案…

天機學堂(學習計劃和進度)

經過前面的努力,我們已經完成了《我的課程表》相關的功能的基礎部分,不過還有功能實現的并不完善。還記得昨天給大家的練習題嗎?《查詢我正在學習的課程》,在原型圖中有這樣的一個需求: 我們需要在查詢結果中返回已學習…

軟件項目管理(3) 軟件項目任務分解

一、相關概念 1.任務分解的方法和步驟 (1)方法 模板參照方法:參照有標準或半標準的任分解結構圖類比方法:任務分解結構圖經常被重復使用,具有相似性自頂向下方法:一般->特殊,演繹推理從大…

Vite 雙引擎架構 —— Esbuild 概念篇

Vite 底層采用 雙引擎架構,核心構建引擎是 Esbuild 和 Rollup,二者在開發和生產環境中分工協作,共同實現高性能構建。不可否認,作為 Vite 的雙引擎之一,Esbuild 在很多關鍵的構建階段(如依賴預編譯、TS 語法轉譯、代碼…

leetcode hot100 鏈表(二)

書接上回: leetcode hot100 鏈表(一)-CSDN博客 8.刪除鏈表的倒數第N個結點 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* currhead;int len0;while(curr){currcurr->next;len;}int poslen-n…

Compose Multiplatform 實現自定義的系統托盤,解決托盤亂碼問題

Compose Multiplatform是 JetBrains 開發的聲明式 UI 框架,可讓您為 Android、iOS、桌面和 Web 開發共享 UI。將 Compose Multiplatform 集成到您的 Kotlin Multiplatform 項目中,即可更快地交付您的應用和功能,而無需維護多個 UI 實現。 在…

C++11 Move Constructors and Move Assignment Operators 從入門到精通

文章目錄 一、引言二、基本概念2.1 右值引用(Rvalue References)2.2 移動語義(Move Semantics) 三、移動構造函數(Move Constructors)3.1 定義和語法3.2 示例代碼3.3 使用場景 四、移動賦值運算符&#xff…

Linux配置yum 時間同步服務 關閉防火墻 關閉ESlinux

1、配置yum 1.1、Could not resolve host: mirrorlist.centos.org; 未知的錯誤 https://blog.csdn.net/fansfi/article/details/146369946?fromshareblogdetail&sharetypeblogdetail&sharerId146369946&sharereferPC&sharesourceRockandrollman&sharefr…