久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

虛擬內(nèi)存,內(nèi)存頁面錯誤與頁面錯誤增量如何處理,。(整理)

 刀叢里覓詩 2017-04-10

頁面錯誤

頁面錯誤指當(dāng)軟件試圖讀取或?qū)懭霕?biāo)記為“不存在”的虛擬內(nèi)存位置時發(fā)生的中斷,。頁面錯誤記錄了一個進(jìn)程必須從硬盤上恢復(fù)的次數(shù),。

在“任務(wù)管理器”中,頁面錯誤是進(jìn)程中當(dāng)數(shù)據(jù)不在內(nèi)存而必須從磁盤檢索的次數(shù),。頁面錯誤值從進(jìn)程啟動的時間開始累計(jì),。

頁面錯誤增量

在“任務(wù)管理器”中,自上一次更新開始的頁面錯誤次數(shù)的變化,。

具體參見: 幫助--任務(wù)管理器--使用進(jìn)程--進(jìn)程計(jì)數(shù)器列標(biāo)題--頁面錯誤

頁面錯誤不表示程序存在錯誤,。不管內(nèi)存多大,WINDOWS都離不開虛擬內(nèi)存(利用磁盤),,多少都會利用虛擬內(nèi)存來存入一些數(shù)據(jù),,比如程序被最小化。

頁面錯誤 任務(wù)管理器 主要檢測內(nèi)存情況的,。

轉(zhuǎn)載地址: http://blog.sina.com.cn/s/blog_51396f890100qjtb.html

內(nèi)存監(jiān)控

    開發(fā)的一個項(xiàng)目中,,遇到了內(nèi)存泄露的情況,發(fā)現(xiàn)此時頁面錯誤增量在300多,,什么是頁面錯誤增量,?

    上網(wǎng)看了一下,這個就是當(dāng)程序需要訪問內(nèi)存時,,待訪問的地址不再物理內(nèi)存中,,需要換頁將虛擬內(nèi)存頁換到物理內(nèi)存中。頁面錯誤增量大,,會導(dǎo)致運(yùn)行效率差,,贓頁多。

    但是為什么會出現(xiàn)這個情況,?是OS的問題還是APP的問題,?還不清楚,需要再查一下,。

    如果要查看程序使用情況,,可以調(diào)用接口GetProcessMemoryInfo

  1. BOOL GetProcessMemoryInfo(  
  2.   HANDLE Process,  
  3.   PPROCESS_MEMORY_COUNTERS ppsmemCounters,  
  4.   DWORD cb  
  5. );  

    如果需要限制程序使用虛擬內(nèi)存的大小,可使用SetProcessWorkingSetSize,,注意:這樣可能會降低運(yùn)行效率.

  1. BOOL SetProcessWorkingSetSize 
  2.   HANDLE hProcess,  
  3.   SIZE_T dwMinimumWorkingSetSize,  
  4.   SIZE_T dwMaximumWorkingSetSize  
  5. );  
內(nèi)存管理和緩存管理的細(xì)節(jié),,所以記錄詳細(xì)點(diǎn),其他的東西(僅指基本組件)理解還可以,。,。以備忘的形式慢慢po上來~

頁面交換


使用技巧

對于虛擬內(nèi)存如何設(shè)置的問題,微軟已經(jīng)給我們提供了官方的解決辦法,,對于一般情況下,,我們推薦采用如下的設(shè)置方法:
  • 頁面文件,文件的大小由你對系統(tǒng)的設(shè)置決定,。具體設(shè)置方法如下:打開"我的電腦"的"屬性"設(shè)置窗口,,切換到"高級"選項(xiàng)卡,在"啟動和故障恢復(fù)"窗口的"寫入調(diào)試信息"欄,,如果你采用的是試和錯誤報(bào)告了,。所以折中的辦法是在系統(tǒng)盤設(shè)置較小的頁面文件,只要夠用就行了,。
  • 內(nèi)存,,其最小值設(shè)置為物理內(nèi)存的1.5倍,最大值設(shè)置為物理內(nèi)存的3倍,,該分區(qū)專門用來存儲頁面文件,,不要再存放其它任何文件。之所以單獨(dú)劃分一個分區(qū)用來設(shè)置虛擬內(nèi)存,,主要是基于兩點(diǎn)考慮:其一,,由于該分區(qū)上沒有其它文件,這樣分區(qū)不會產(chǎn)生磁盤碎片,,這樣能保證頁面文件的數(shù)據(jù)讀寫不受磁盤碎片的干擾,;其二,按照Windows對內(nèi)存的管理技術(shù),,Windows會優(yōu)先使用不經(jīng)常訪問的分區(qū)上的頁面文件,,這樣也減少了讀取系統(tǒng)盤里的頁面文件的機(jī)會,減輕了系統(tǒng)盤的壓力,。
  • 頁面文件,,則其它硬盤分區(qū)不設(shè)置任何頁面文件。因?yàn)檫^多的分區(qū)設(shè)置頁面文件,,這樣會導(dǎo)致,,硬盤磁頭反復(fù)的在不同的分區(qū)來回讀取。這樣既耽誤了系統(tǒng)速率,,也會減少硬盤的壽命,。當(dāng)然,如果你有多個硬盤,,則可以為每個硬盤都創(chuàng)建一個頁面文件,。當(dāng)信息分布在多個頁面文件上時,硬盤控制器可以同時在多個硬盤上執(zhí)行讀取和寫入操作,。這樣系統(tǒng)性能將得到提高,。

換頁錯誤

換頁錯誤,即Page fault,。
Page Fault 是在進(jìn)程嘗試執(zhí)行代碼指導(dǎo),,或者引用進(jìn)程所映射物理內(nèi)存中并不存在的數(shù)據(jù)頁時,操作系統(tǒng)記錄的事件,。換句話說,,進(jìn)程需要的內(nèi)存頁實(shí)際上可能還處于物理內(nèi)存中,,但是由于它無法再分配到進(jìn)程中,所以當(dāng)進(jìn)程將此頁讀取回到它的內(nèi)存頁時,,就發(fā)生了Page Fault,。

在開發(fā)上,我認(rèn)為主要是優(yōu)化內(nèi)存讀取方式,,如果存在大量的文件讀取,,虛擬內(nèi)存也就多,換頁次數(shù)就多,,自然也很多,,不作為主要的評測指標(biāo)。













現(xiàn)在內(nèi)存都是分頁的,, 如果你要讀或者寫的頁還沒分在內(nèi)存里,, 就出現(xiàn)缺頁錯了。 這種事情在程序啟動的時候可能非常頻繁,, 但是也不用你自己處理,, 一般系統(tǒng)會自己搞定這事的, 搞不定就直接死機(jī),。,。

轉(zhuǎn)載:http://en./wiki/Page_fault


頁缺失 (計(jì)算機(jī)科學(xué))

維基百科,自由的百科全書
(重定向自Page fault

頁缺失英語Page fault,,又名硬錯誤,、分頁錯誤尋頁缺失,、缺頁中斷,、頁故障等)指的是當(dāng)軟件試圖訪問已映射在虛擬地址空間中,但是目前并未被加載在物理內(nèi)存中的一個分頁時,,由中央處理器內(nèi)存管理單元所發(fā)出的中斷,。

通常情況下,用于處理此中斷的程序是操作系統(tǒng)的一部分,。如果操作系統(tǒng)判斷此次訪問是有效的,,那么操作系統(tǒng)會嘗試將相關(guān)的分頁從硬盤上的虛擬內(nèi)存文件中調(diào)入內(nèi)存。而如果訪問是不被允許的,,那么操作系統(tǒng)通常會結(jié)束相關(guān)的進(jìn)程,。[1]

雖然其名為“頁缺失”錯誤,但實(shí)際上這并不一定是一種錯誤,。而且這一機(jī)制對于利用虛擬內(nèi)存來增加程序可用內(nèi)存空間的操作系統(tǒng)(比如Microsoft Windows和各種類Unix系統(tǒng))中都是常見且有必要的,。

微軟在較新版Windows(Windows Vista及以上)的資源監(jiān)視器中使用“硬錯誤”這一術(shù)語來指代“頁缺失”。[2]

目錄

   [隱藏

[編輯]分類

[編輯]軟性

軟性頁缺失指頁缺失發(fā)生時,相關(guān)的頁已經(jīng)被加載進(jìn)內(nèi)存,,但是沒有向MMU注冊的情況,。操作系統(tǒng)只需要在MMU中注冊相關(guān)頁對應(yīng)的物理地址即可。[1]

發(fā)生這種情況的可能性之一,,是一塊物理內(nèi)存被兩個或多個程序共享,,操作系統(tǒng)已經(jīng)為其中的一個裝載并注冊了相應(yīng)的頁,,但是沒有為另一個程序注冊,。

可能性之二,是該頁已被從CPU的工作集中移除,,但是尚未被交換到磁盤上,。比如OpenVMS這樣的使用次級頁緩存的系統(tǒng),就有可能會在工作集過大的情況下,,將某頁從工作集中去除,,但是不寫入硬盤也不擦除(比如說這一頁被讀出硬盤后沒被修改過),只是放入空閑頁表,。除非有其他程序需要,,導(dǎo)致這一頁被分配出去了,不然這一頁的內(nèi)容不會被修改,。當(dāng)原程序再次需要該頁內(nèi)的數(shù)據(jù)時,,如果這一頁確實(shí)沒有被分配出去,那么系統(tǒng)只需要重新為該頁在MMU內(nèi)注冊映射即可,。[3]

[編輯]硬性

與軟性頁缺失相反,,硬性頁缺失是指相關(guān)的頁在頁缺失發(fā)生時未被加載進(jìn)內(nèi)存的情況,。這時操作系統(tǒng)需要:[4]

  1. 尋找到一個空閑的頁。或者把另外一個使用中的頁寫到磁盤上(如果其在最后一次寫入后發(fā)生了變化的話),,并注銷在MMU內(nèi)的記錄
  2. 將數(shù)據(jù)讀入被選定的頁
  3. 向MMU注冊該頁

硬性頁缺失導(dǎo)致的性能損失是很大的。以一塊7200rpm的主流機(jī)械硬盤為例,,其平均尋道時間為8.5毫秒,,讀入內(nèi)存需要0.05毫秒。相對的,,DDR3內(nèi)存的訪問延遲通常在數(shù)十到100納秒之間,,性能差距可能會達(dá)到8萬到22萬倍。

另外,,有些操作系統(tǒng)會將程序的一部分延遲到需要使用的時候再加載入內(nèi)存執(zhí)行,,以此來提升性能。這一特性也是通過捕獲硬性頁缺失達(dá)到的,。[5]

當(dāng)硬性頁缺失過于頻繁的發(fā)生時,,稱發(fā)生系統(tǒng)顛簸

[編輯]無效

當(dāng)程序訪問的虛擬地址是不存在于虛擬地址空間內(nèi)的時候,則發(fā)生無效頁缺失,。一般來說這是個軟件問題,,但是也不排除硬件可能,比如因?yàn)閮?nèi)存故障而損壞了一個正確的指針,。

具體動作與所使用的操作系統(tǒng)有關(guān),,比如Windows會使用異常機(jī)制向程序報(bào)告,而類Unix系統(tǒng)則會使用信號機(jī)制,。如果程序未處理相關(guān)問題,,那么操作系統(tǒng)會執(zhí)行默認(rèn)處理方式,通常是轉(zhuǎn)儲內(nèi)存,、終止相關(guān)的程序,,然后向用戶報(bào)告。[4][6]

[編輯]參考與延伸閱讀

  1. 1.0 1.1 Red Hat Enterprise Linux 3: Introduction to System Administration, 4.4. Virtual Memory: The Details. RedHat [2013-02-11].
  2. ^ 參見資源監(jiān)視器幫助
  3. ^ HP OpenVMS Systems Documentation, Chapter 7 Evaluating the Memory Resource. HP [2013-02-11].
  4. 4.0 4.1 So What Is A Page Fault?. OSR Online. 2003-05-07 [2013-02-11].
  5. ^ Red Hat Enterprise Linux 3: Introduction to System Administration, 4.5. Virtual Memory Performance Implications. RedHat [2013-02-11]. See note.
  6. ^ UnhandledExceptionFilter function. Microsoft MSDN [2013-02-11].
  • John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach (ISBN 1-55860-724-2)
  • Tanenbaum, Andrew S. Operating Systems: Design and Implementation (Second Edition). New Jersey: Prentice-Hall 1997.
  • Intel Architecture Software Developer's Manual–Volume 3: System Programming

非法訪問和無效頁錯誤處理

非法訪問和無效頁錯誤可能會導(dǎo)致程序崩潰,,分割錯誤,,總線錯誤或核心轉(zhuǎn)儲的操作系統(tǒng)環(huán)境。這些問題通常是由于軟件缺陷,,但可能會損壞硬件內(nèi)存錯誤,,如由超頻所引起的,,指針和正確的軟件故障,。

WindowsUNIX的操作系統(tǒng)(以及其他類UNIX系統(tǒng))提供不同的頁故障引起的錯誤報(bào)告機(jī)制。Windows使用結(jié)構(gòu)化異常處理報(bào)告故障無效的存取訪問沖突異常,,UNIX(UNIX-like)的系統(tǒng)通常使用信號,,如SIGSEGV,報(bào)告這些錯誤條件的方案,。

如果收到錯誤的程序不處理,,操作系統(tǒng)執(zhí)行的默認(rèn)操作,一般涉及終止正在運(yùn)行的過程中導(dǎo)致錯誤的條件,,并通知用戶,,該計(jì)劃已發(fā)生了故障。最新版本的Windows中經(jīng)常報(bào)道這樣的問題,,就類似“這個程序必須關(guān)閉”(有經(jīng)驗(yàn)的用戶或程序員提供一個調(diào)試器仍然可以獲取詳細(xì)信息),。最新的Windows版本UNIX類UNIX操作系統(tǒng)報(bào)告這些條件的用戶提供的錯誤信息,如“分割違反”或“巴士,,也可以編寫一個小型轉(zhuǎn)儲(類似的原則,,以一個核心轉(zhuǎn)儲)描述的狀態(tài)崩潰的過程。錯誤“,,也可能產(chǎn)生核心轉(zhuǎn)儲,。

編輯 ]性能

頁故障,,由于其本身的性質(zhì),一個程序或操作系統(tǒng)的性能降低和退化的情況可能會導(dǎo)致顛簸,。優(yōu)化程序和操作系統(tǒng)數(shù)量減少的頁面錯誤,,提高程序性能,甚至整個系統(tǒng),。的兩個主要側(cè)重的優(yōu)化工作,,降低整體內(nèi)存使用率和改善記憶的地方。為了減少頁面系統(tǒng)中的故障,,程序員必須使用適當(dāng)?shù)?a title="頁面替換算法" style="text-decoration:none; color:rgb(11,0,128)" needtodo="http://en./wiki/Page_replacement_algorithm">頁面置換算法,,適合當(dāng)前需求和最大限度地提高了頁面的點(diǎn)擊。許多人都被提出,,如實(shí)施啟發(fā)式算法,,以減少發(fā)病的頁面錯誤,。一般情況下,,提供更多的物理內(nèi)存,也減少了頁面錯誤,。

主要頁錯誤的傳統(tǒng)(硬盤)計(jì)算機(jī)上可以有一個顯著的性能影響,。平均的硬盤具有的平均旋轉(zhuǎn)等待時間為3ms,尋道時間為5ms,,和轉(zhuǎn)印時間為0.05毫秒/頁,。因此,總的尋呼時間是8ms的(8 000我們)附近,。如果內(nèi)存訪問時間為0.2,,那么頁面故障,使操作約40,000倍的速度,。

MMU

求助編輯百科名片

MMU是Memory Management Unit的縮寫,,中文名是內(nèi)存管理單元,它是中央處理器(CPU)中用來管理虛擬存儲器,、物理存儲器的控制線路,,同時也負(fù)責(zé)虛擬地址映射為物理地址,以及提供硬件機(jī)制的內(nèi)存訪問授權(quán),。

編輯本段鏈接地址鏈接地址歷史

許多年以前,,當(dāng)人們還在使用DOS或是更古老的操作系統(tǒng)的時候,計(jì)算機(jī)的內(nèi)存還非常小,,一般都是以K為單位進(jìn)行計(jì)算,,相應(yīng)的,當(dāng)時的程序規(guī)模也不大,,所以內(nèi)存容量雖然小,,但還是可以容納當(dāng)時的程序。但隨著圖形界面的興起還有用戶需求的不斷增大,應(yīng)用程序的規(guī)模也隨之膨脹起來,,終于一個難題出現(xiàn)在程序員的面前,,那就是應(yīng)用程序太大以至于內(nèi)存容納不下該程序,通常解決的辦法是把程序分割成許多稱為覆蓋塊(overlay)的片段,。覆蓋塊0首先運(yùn)行,,結(jié)束時他將調(diào)用另一個覆蓋塊。雖然覆蓋塊的交換是由OS完成的,,但是必須先由程序員把程序先進(jìn)行分割,,這是一個費(fèi)時費(fèi)力的工作,而且相當(dāng)枯燥,。人們必須找到更好的辦法從根本上解決這個問題,。不久人們找到了一個辦法,這就是虛擬存儲器(virtual memory).虛擬存儲器的基本思想是程序,,數(shù)據(jù),,堆棧的總的大小可以超過物理存儲器的大小,操作系統(tǒng)把當(dāng)前使用的部分保留在內(nèi)存中,,而把其他未被使用的部分保存在磁盤上,。比如對一個16MB的程序和一個內(nèi)存只有4MB的機(jī)器,操作系統(tǒng)通過選擇,,可以決定各個時刻將哪4M的內(nèi)容保留在內(nèi)存中,,并在需要時在內(nèi)存和磁盤間交換程序片段,這樣就可以把這個16M的程序運(yùn)行在一個只具有4M內(nèi)存機(jī)器上了,。而這個16M的程序在運(yùn)行前不必由程序員進(jìn)行分割,。

編輯本段鏈接地址鏈接地址相關(guān)概念

——地址范圍、虛擬地址映射為物理地址 以及 分頁機(jī)制
任何時候,,計(jì)算機(jī)上都存在一個程序能夠產(chǎn)生的地址集合,,我們稱之為地址范圍。這個范圍的大小由CPU的位數(shù)決定,,例如一個32位的CPU,,它的地址范圍是0~0xFFFFFFFF (4G),而對于一個64位的CPU,,它的地址范圍為0~0xFFFFFFFFFFFFFFFF (16E).這個范圍就是我們的程序能夠產(chǎn)生的地址范圍,,我們把這個地址范圍稱為虛擬地址空間,該空間中的某一個地址我們稱之為虛擬地址,。與虛擬地址空間和虛擬地址相對應(yīng)的則是物理地址空間和物理地址,,大多數(shù)時候我們的系統(tǒng)所具備的物理地址空間只是虛擬地址空間的一個子集。這里舉一個最簡單的例子直觀地說明這兩者,,對于一臺內(nèi)存為256M的32bit x86主機(jī)來說,,它的虛擬地址空間范圍是0~0xFFFFFFFF(4G),,而物理地址空間范圍是0x000000000~0x0FFFFFFF(256M)。
在沒有使用虛擬存儲器的機(jī)器上,,虛擬地址被直接送到內(nèi)存總線上,,使具有相同地址的物理存儲器被讀寫;而在使用了虛擬存儲器的情況下,,虛擬地址不是被直接送到內(nèi)存地址總線上,,而是送到存儲器管理單元MMU,把虛擬地址映射為物理地址,。
大多數(shù)使用虛擬存儲器的系統(tǒng)都使用一種稱為分頁(paging)機(jī)制,。虛擬地址空間劃分成稱為頁(page)的單位,而相應(yīng)的物理地址空間也被進(jìn)行劃分,,單位是頁幀(frame).頁和頁幀的大小必須相同,。在這個例子中我們有一臺可以生成32位地址的機(jī)器,它的虛擬地址范圍從0~0xFFFFFFFF(4G),,而這臺機(jī)器只有256M的物理地址,,因此他可以運(yùn)行4G的程序,但該程序不能一次性調(diào)入內(nèi)存運(yùn)行,。這臺機(jī)器必須有一個達(dá)到可以存放4G程序的外部存儲器(例如磁盤或是FLASH),,以保證程序片段在需要時可以被調(diào)用。在這個例子中,,頁的大小為4K,頁幀大小與頁相同——這點(diǎn)是必須保證的,,因?yàn)閮?nèi)存和外圍存儲器之間的傳輸總是以頁為單位的,。對應(yīng)4G的虛擬地址和256M的物理存儲器,他們分別包含了1M個頁和64K個頁幀,。

編輯本段鏈接地址鏈接地址功能

鏈接地址鏈接地址1,、將虛擬地址映射為物理地址

現(xiàn)代的多用戶多進(jìn)程操作系統(tǒng),需要MMU,,才能達(dá)到每個用戶進(jìn)程都擁有自己獨(dú)立的地址空間的目標(biāo),。使用MMU,操作系統(tǒng)劃分出一段地址區(qū)域,在這塊地址區(qū)域中,,每個進(jìn)程看到的內(nèi)容都不一定一樣,。例如MICROSOFT WINDOWS操作系統(tǒng)將地址范圍4M-2G劃分為用戶地址空間,進(jìn)程A在地址0X400000(4M)映射了可執(zhí)行文件,,進(jìn)程B同樣在地址0X400000(4M)映射了可執(zhí)行文件,,如果A進(jìn)程讀地址0X400000,讀到的是A的可執(zhí)行文件映射到RAM的內(nèi)容,,而進(jìn)程B讀取地址0X400000時,,則讀到的是B的可執(zhí)行文件映射到RAM的內(nèi)容,。
這就是MMU在當(dāng)中進(jìn)行地址轉(zhuǎn)換所起的作用。

鏈接地址鏈接地址2,、提供硬件機(jī)制的內(nèi)存訪問授權(quán)

多年以來,,微處理器一直帶有片上存儲器管理單元(MMU),MMU能使單個軟件線程工作于硬件保護(hù)地址空間,。但是在許多商用實(shí)時操作系統(tǒng)中,,即使系統(tǒng)中含有這些硬件也沒采用MMU。
當(dāng)應(yīng)用程序的所有線程共享同一存儲器空間時,,任何一個線程將有意或無意地破壞其它線程的代碼,、數(shù)據(jù)或堆棧。異常線程甚至可能破壞內(nèi)核代碼或內(nèi)部數(shù)據(jù)結(jié)構(gòu),。例如線程中的指針錯誤就能輕易使整個系統(tǒng)崩潰,,或至少導(dǎo)致系統(tǒng)工作異常。
就安全性和可靠性而言,,基于進(jìn)程的實(shí)時操作系統(tǒng)(RTOS)的性能更為優(yōu)越,。為生成具有單獨(dú)地址空間的進(jìn)程,RTOS只需要生成一些基于RAM的數(shù)據(jù)結(jié)構(gòu)并使MMU加強(qiáng)對這些數(shù)據(jù)結(jié)構(gòu)的保護(hù),?;舅悸肥窃诿總€關(guān)聯(lián)轉(zhuǎn)換中“接入”一組新的邏輯地址。MMU利用當(dāng)前映射,,將在指令調(diào)用或數(shù)據(jù)讀寫過程中使用的邏輯地址映射為存儲器物理地址,。MMU還標(biāo)記對非法邏輯地址進(jìn)行的訪問,這些非法邏輯地址并沒有映射到任何物理地址,。
這些進(jìn)程雖然增加了利用查詢表訪問存儲器所固有的系統(tǒng)開銷,,但其實(shí)現(xiàn)的效益很高。在進(jìn)程邊界處,,疏忽或錯誤操作將不會出現(xiàn),,用戶接口線程中的缺陷并不會導(dǎo)致其它更關(guān)鍵線程的代碼或數(shù)據(jù)遭到破壞。目前在可靠性和安全性要求很高的復(fù)雜嵌入式系統(tǒng)中,,仍然存在采無存儲器保護(hù)的操作系統(tǒng)的情況,,這實(shí)在有些不可思議。
采用MMU還有利于選擇性地將頁面映射或解映射到邏輯地址空間,。物理存儲器頁面映射至邏輯空間,,以保持當(dāng)前進(jìn)程的代碼,其余頁面則用于數(shù)據(jù)映射,。類似地,,物理存儲器頁面通過映射可保持進(jìn)程的線程堆棧。RTOS可以在每個線程堆棧解映射之后,,很容易地保留邏輯地址所對應(yīng)的頁面內(nèi)容,。這樣,,如果任何線程分配的堆棧發(fā)生溢出,將產(chǎn)生硬件存儲器保護(hù)故障,,內(nèi)核將掛起該線程,,而不使其破壞位于該地址空間中的其它重要存儲器區(qū),如另一線程堆棧,。這不僅在線程之間,,還在同一地址空間之間增加了存儲器保護(hù)。
存儲器保護(hù)(包括這類堆棧溢出檢測)在應(yīng)用程序開發(fā)中通常非常有效,。采用了存儲器保護(hù),,程序錯誤將產(chǎn)生異常并能被立即檢測,它由源代碼進(jìn)行跟蹤,。如果沒有存儲器保護(hù),,程序錯誤將導(dǎo)致一些細(xì)微的難以跟蹤的故障。實(shí)際上,,由于在扁平存儲器模型中,,RAM通常位于物理地址的零頁面,因此甚至NULL指針引用的解除都無法檢測到

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多