日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

虛擬內存 和 page fault 的解釋

 

linux 內核給每個進程都提供了一個獨立的虛擬地址空間,并且這個地址空間是連續的。這樣進程就可以很方便地訪問內存,更確切地說是訪問虛擬內存。

1、什么是虛擬內存

假設某個進程需要100MB的空間,而內存假設是16MB的,如果進程直接使用物理地址,就會因為內存不足而無法運行。

既然進程不是直接訪問物理內存,那么進程中涉及的內存地址當然也不是物理內存地址。而是虛擬的內存地址,虛擬的內存地址和物理的內存地址之間保持一種映射關系,這種關系由內存管理單元(MMU)進行管理。

虛擬內存 和 page fault 的解釋

 

內存管理單元(Memory Management Unit,MMU),將物理內存分割成多個pages,MMU管理進程的虛擬地址空間中的page和物理內存中的page之間的映射關系。、

因為是映射,所以隨時都可能發生變化,例如某個進程虛擬內存空間中的page1,在不同的時間點,可能出現在物理內存中的不同位置(當發生了頁交換時)。

虛擬內存 和 page fault 的解釋

 

2、什么是 page fault

虛擬地址空間的內部又被分為內核空間和用戶空間兩部分。并不是所有的虛擬內存都會分配物理內存,只有那些實際使用的虛擬內存才分配物理內存,并且分配后的物理內存,是通過內存映射來管理的。

當進程訪問它的虛擬地址空間中的page時,如果這個page目前還不在物理內存中,此時CPU是不能工作的,Linux會產生一個hard page fault中斷。系統需要從慢速設備(如磁盤)將對應的數據page讀入物理內存,并建立物理內存地址與虛擬地址空間page的映射關系。然后進程才能訪問這部分虛擬地址空間的內存。

page fault 又分為三種:minor page faultmajor page faultinvalid(segment fault)

2.1、minor page fault

也稱為 soft page fault,指需要訪問的內存不在虛擬地址空間,但是在物理內存中,需要MMU建立物理內存和虛擬地址空間的映射關系。

當一個進程在調用 malloc 獲取虛擬空間地址后,首次訪問該地址會發生一次soft page fault。

通常是多個進程訪問同一個共享內存中的數據,當某些進程還沒有建立起映射關系,訪問時也會出現soft page fault。

虛擬內存 和 page fault 的解釋

 

2.2、major page fault

也稱為 hard page fault,指需要訪問的內存不在虛擬地址空間,也不在物理內存中,需要從慢速設備載入。

從磁盤 swap in 回到物理內存就是 hard page fault。

  • swap out:當物理內存不夠時,把一些物理內存 page 中的內容寫入到磁盤,以騰出一些空閑的 page;
  • swap in:當CPU要執行的指令被發現已經 swap out 到了磁盤中, 這時就需要從磁盤把這些指令再 swap in 到物理內存中。

注意:swap in 和 swap out 的操作都是比較耗時的。

2.3、invalid(segment fault)

也稱為 segment fault,指進程需要訪問的內存地址不在它的虛擬地址空間范圍內,屬于越界訪問,內核就會報 segment fault 錯誤。

造成 segment fault 的原因可能有以下幾種:

  • 堆棧溢出;
  • 內存訪問越界,如數組下表錯誤訪問越界;使用strcpy/strcat/sprintf/strcmp 等字符串操作函數導致的讀寫越界,應盡量使用strncpy/strncat/snprintf/strncmp 等函數;
  • 非法指針:野指針,錯誤的指針轉換等;
  • 多線程讀寫的數據未加鎖保護,或使用了線程不安全的函數。

分享到:
標簽:虛擬內存
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定