国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么要有虛擬內存?

這篇具有很好參考價值的文章主要介紹了為什么要有虛擬內存?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是虛擬內存?

多個進程如果同時操作真實的地址內存的話,會產(chǎn)生沖突。 于是操作系統(tǒng)就提供了一種機制,讓每個進程都仿佛擁有全部的內存地址,這些內存地址是虛擬的,由操作系統(tǒng)提供統(tǒng)一的方式映射到真實的物理地址。

虛擬內存的作用:

  • 進程隔離,進程層面不用考慮內存的問題,操作系統(tǒng)會統(tǒng)一包辦
  • 靈活的內存管理,操作系統(tǒng)能夠更加靈活的管理和分配資源
  • 地址空間擴展
  • 內存保護,防止進程訪問未分配給它的內存空間,通過在虛擬地址空間中標記頁的訪問權限,操作系統(tǒng)可以捕捉到地址越界

操作系統(tǒng)是通過內存分段和內存分頁的方式管理虛擬內存地址和物理內存地址之間的關系

內存分段

程序是由若干個邏輯分段組成的,代碼分段、數(shù)據(jù)分段、棧段、堆段組成,不同的段有不同的屬性,所以就用分段的形式分離開。

分段機制下的虛擬內存由兩部分組成,段選擇因子段內偏移量。段選擇因子里面有段號,段號是段表的索引,段表是一個表,里面保存的有該段的基地址、段的界限和特權等級。段內偏移量應該位于 0 和段界限之間,如果段內偏移量是合法的,就將段基地址加上段內偏移量得到物理內存地址。

分段機制會把程序的虛擬地址分為4個段,每個段在段表中有一個項,在這一個項找到段的基地址,然后加上偏移量,就能找到在物理內存中的地址。

每個段的長度是不一樣的,而且每個段內部都是從0開始編制的。 每個段內部是連續(xù)分配內存,但是段和段之間是離散分配的。

為什么要有虛擬內存?,操作系統(tǒng),數(shù)據(jù)庫

?分段的方式解決了程序員不需要關心具體的物理地址內存的問題,但是有一些不足之處:

  • 存在內存碎片(外部碎片),可以通過內存交換的方式解決
  • 內存交換的效率低,把內存寫到硬盤上面太慢了

分段的好處是:

  • 能產(chǎn)生連續(xù)的內存空間

?內存分頁

內存分頁是為了減少內存碎片、加快內存交換的方式。

分頁是把整個虛擬和物理內存空間切成一段段固定尺寸的大小。每個頁的大小是4k。 虛擬地址與物理地址之間通過頁表來映射。

為什么要有虛擬內存?,操作系統(tǒng),數(shù)據(jù)庫

MMU是內存管理單元?,當進程訪問虛擬內存地址在頁表中查不到時,系統(tǒng)會產(chǎn)生一個缺頁異常,進入系統(tǒng)內核分配物理內存,更新進程頁表,然后再返回用戶空間,恢復進程的運行。

分頁是怎么解決分段的「外部內存碎片和內存交換效率低」的問題?

分頁的話,頁與頁之間是緊密排列的,所以不會存在外部碎片。內存分頁機制分配內存的最小單位是一頁,即使程序不足一頁大小,最少只能分配一個頁,所以頁內會出現(xiàn)內存浪費,所以針對內存分頁機制會存在內部內存碎片的現(xiàn)象。

如果內存分頁不夠,操作系統(tǒng)會把其他正在運行的進程中的最近沒有被使用的內存頁給換出到硬盤上面。 一旦需要的話,再從磁盤上面換入到內存里面。由于一次性換入或者換出的只有少數(shù)幾個頁,所以不用花費太多的時間。

更進一步,分頁的方式使得我們在加載程序的時候,不再需要一次性把全部的程序加載到物理內存中。我們可以在進行虛擬內存和物理內存的頁之間映射之后,并不把真正的頁加載到物理內存里面,而是只有在程序運行中,需要用到對應的虛擬內存頁里面的指令和數(shù)據(jù)的時候,在加載到物理內存中去。

分頁機制下,虛擬地址和物理地址是如何映射的?

虛擬地址分為兩部分,頁號和頁內偏移,頁號是頁表的索引,頁表中存儲的是虛擬頁號和物理頁號,物理頁號可以查找物理內存的基地址,基地址劃傷頁內偏移量就能找到真實的物理地址。

簡單的分頁有什么問題??

32位的環(huán)境下,每個進程的虛擬地址空間都有4GB,一個頁的大小是4kb,那么就會存在4GB / 4KB = 100萬個頁,每個頁中有的頁表項 需要4個字節(jié)大小來存儲,那么整個4GB的映射需要4MB的內存來存儲頁表。 如果有100個進程的話,需要400M來存儲,耗費比較大。

多級頁表是什么?

每個進程的100萬個頁共用的一個頁表 ,該頁表占用的4MB空間。 4M空間來說有些大了,我們把這100萬個頁表項的單級頁再分頁,將一級頁表再分為1024個二級頁表,每個二級頁表中包含1024個頁表項。

分了二級表,映射 4GB 地址空間就需要 4KB(一級頁表)+ 4MB(二級頁表)的內存,這樣占用空間不是更大了嗎?

如果把4GB的虛擬地址全部都映射到了物理內存上的話,確實二級分頁占用的空間更大了,但是,我們不會為一個進程分配太多的內存。

對于每個進程來說,其使用的空間沒有達到4GB,因為會存在部分對應的頁表項都是空的,對于已經(jīng)分配的頁表項,如果最近一段時間沒有被使用,在物理內存緊張的情況下,也是會被換出的。

那么為什么不分級的頁表就做不到這樣節(jié)約內存呢?

保存在內存中的頁承擔的職責是將虛擬內存翻譯成物理地址,假如虛擬地址在頁表中找不到對應的頁表項,計算機系統(tǒng)就不能工作了。

頁表一定要覆蓋全部的虛擬地址空間,不分級的頁表需要100萬個頁表項來映射,而分級的頁表只需要1024個頁表項。

分段和分頁有什么區(qū)別?

  • 分段對程序員來說是透明的,但是分段需要程序員顯式的劃分每個段
  • 分頁的地址空間是一維的,分段是二維的
  • 頁的大小不可變,段的大小可以動態(tài)改變
  • 分頁主要用于實現(xiàn)虛擬內存,可以獲得更大的地址空間;分段主要是為了使程序和數(shù)據(jù)可以被劃分為邏輯上獨立的地址空間并且有助于共享和保護

什么是空間交換(內存交換) ?

當內存資源不足的時候,操作系統(tǒng)吧某些頁或者某些段的內容轉移到硬盤的一塊空間上面,從而達到釋放內存空間的效果。

缺頁中斷異常

在了解頁面置換算法之前,我們需要了解一下缺頁中斷異常

當CPU訪問的頁面不在物理內存時,便會產(chǎn)生一個缺頁中斷,請求操作系統(tǒng)將缺頁調入到物理內存。它與一般的中斷不一樣:

  • 缺頁中斷在指令執(zhí)行期間產(chǎn)生和處理中斷信號,而在一般的中斷在一條指令執(zhí)行完成之后檢查和處理中斷信息
  • 缺頁中斷返回到該指令的開始重新執(zhí)行該指令,一般中斷是返回到該指令的下一個指令執(zhí)行

頁面替換算法有哪些?

最佳頁面置換算法

先進先出頁面置換算法
LRU緩存淘汰算法

時鐘頁面置換算法

最不常用淘汰算法文章來源地址http://www.zghlxwxcb.cn/news/detail-614667.html

到了這里,關于為什么要有虛擬內存?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 什么是分布式操作系統(tǒng)?我們?yōu)槭裁葱枰植际讲僮飨到y(tǒng)?

    什么是分布式操作系統(tǒng)?我們?yōu)槭裁葱枰植际讲僮飨到y(tǒng)?

    分布式操作系統(tǒng)是一種特殊的操作系統(tǒng),本質上屬于多機操作系統(tǒng),是傳統(tǒng)單機操作系統(tǒng)的發(fā)展和延伸。它是將一個計算機系統(tǒng)劃分為多個獨立的計算單元(或者也可稱為節(jié)點),這些節(jié)點被部署到每臺計算機上,然后被網(wǎng)絡連接起來,并保持著持續(xù)的通信狀態(tài)。在分布式操作

    2024年02月16日
    瀏覽(37)
  • 為什么不用Go開發(fā)操作系統(tǒng)?

    為什么不用Go開發(fā)操作系統(tǒng)?

    ? 操作系統(tǒng) (OS) 是計算機系統(tǒng)的心臟和靈魂,它管理著計算機的硬件和軟件資源,并為用戶提供與計算機交互的方式。傳統(tǒng)上,C 和 Assembly 等語言因其低開銷和 “接近機器碼” 的特性而被用于開發(fā)操作系統(tǒng)。 但諸如 Go 等高級語言的興起引入了一些特性,這些特性或許可以使

    2024年02月06日
    瀏覽(38)
  • 97-TCP為什么要有一個“TIME_WAIT“的狀態(tài)

    97-TCP為什么要有一個“TIME_WAIT“的狀態(tài)

    \\\"TIME_WAIT\\\"狀態(tài)存在的原因主要有兩點: 假設上圖中用于確認服務器結束報文段6的TCP報文段7丟失,那么服務器將重發(fā)結束報文段,因此客戶端需要停留在某個狀態(tài)以處理重復收到的結束報文段.否則客戶端將以復位報文段來回應服務器,服務器則認為這是一個錯誤,因為他期望的是一

    2024年02月01日
    瀏覽(32)
  • 為什么MCS-51 單片機總線和端口要有匹配的驅動電路?

    ? ? ? ? MCS-51系列單片機是一種廣泛使用的8位微控制器,它通常用在嵌入式系統(tǒng)中。單片機的總線和端口可能需要額外的驅動電路,這取決于外部設備的電氣特性和所需的電流能力。下面將從以下幾個方面分析為什么驅動電路這么重要: ? ? ? ? ?電流驅動能力: MCS-51單片機

    2024年02月20日
    瀏覽(23)
  • 【Linux(0)】為什么要學習Linux,為什么互聯(lián)網(wǎng)公司在招聘時,會提出要有Linux經(jīng)驗,及其使用;一些Linux常見指令

    【Linux(0)】為什么要學習Linux,為什么互聯(lián)網(wǎng)公司在招聘時,會提出要有Linux經(jīng)驗,及其使用;一些Linux常見指令

    ??作者簡介: 加油,旭杏,目前大二,正在學習 C++ , 數(shù)據(jù)結構 等?? ??作者主頁:加油,旭杏的主頁?? ?本文收錄在:再識C進階的專欄?? ??代碼倉庫:旭日東升 1?? ??歡迎大家點贊 ?? 收藏 ? 加關注哦!?? ???????在學習完C語言后,緊接著,我們要來 學習Li

    2024年02月05日
    瀏覽(23)
  • 【C/C++】詳解程序環(huán)境和預處理(什么是程序環(huán)境?為什么要有程序環(huán)境?如何理解程序環(huán)境?)

    【C/C++】詳解程序環(huán)境和預處理(什么是程序環(huán)境?為什么要有程序環(huán)境?如何理解程序環(huán)境?)

    目錄 一、前言 二、 什么是程序環(huán)境? 三、 為什么要有程序環(huán)境? 四、如何理解程序環(huán)境? ???ANSI?C 標準? ???翻譯環(huán)境和執(zhí)行環(huán)境 ?五、詳解翻譯環(huán)境和執(zhí)行環(huán)境 ???翻譯環(huán)境(重點!?。????編譯環(huán)境(預處理---編譯---匯編) ???鏈接環(huán)境(鏈接) ???執(zhí)行環(huán)境

    2024年02月21日
    瀏覽(25)
  • 【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    在使用GCC編譯器進行程序開發(fā)時,我們經(jīng)常會遇到一些編譯過程中的問題, 比如為什么要加上\\\"-c\\\"選項,以及為什么生成的可執(zhí)行文件無法執(zhí)行等問題。 本篇博客將詳細介紹這些問題,并給出相應的代碼和解釋,幫助讀者更好地理解GCC編譯過程中的\\\"-c\\\"選項和main函數(shù)的參數(shù)a

    2024年02月12日
    瀏覽(31)
  • ThreadLocal-為什么會導致內存泄漏

    一個Thread中存在字段為ThreadLocalMap ThreadLocal.ThreadLocalMap threadLocals = null; 也就是說我們使用threadLocal進行set操作和get操作,其實就是操作該Thread的threadLocalMap。 這個map是一個基于數(shù)組的key和value的格式,在進行get的時候,會將調用對象this作為key進行查詢。 hashMap是通過鏈表法,

    2024年02月03日
    瀏覽(34)
  • 為什么要用虛擬 DOM?

    虛擬DOM(Virtual DOM)是一種將應用程序的狀態(tài)(state)與DOM分離的技術。它是一個JavaScript對象,它的結構類似于實際DOM元素的結構。使用虛擬DOM的目的是在減少DOM操作的數(shù)量的同時,提高應用程序的性能和響應速度。 當應用程序的狀態(tài)發(fā)生變化時,使用虛擬DOM可以計算出需要

    2024年02月01日
    瀏覽(23)
  • 為什么你的手機需要更大的內存

    為什么你的手機需要更大的內存

    可以確定的是,手機已經(jīng)先于電腦開啟了AI計算時代,新發(fā)布的手機幾乎都集成了AI處理器,那為什么你還需要更大的內存呢,下面我們來探討下這個問題。 雖然目前新發(fā)布的手機并不都集成了AI處理器,但AI處理器已經(jīng)成為了一種趨勢和特色,越來越多的手機廠商開始開發(fā)和

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包