免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
虛擬內(nèi)存,內(nèi)存頁面錯誤與頁面錯誤增量如何處理。(整理)
頁面錯誤
頁面錯誤指當軟件試圖讀取或?qū)懭霕擞洖椤安淮嬖凇钡奈恢脮r發(fā)生的中斷。頁面錯誤記錄了一個進程必須從硬盤上恢復(fù)的次數(shù)。
在“任務(wù)管理器”中,頁面錯誤是進程中當數(shù)據(jù)不在內(nèi)存而必須從檢索的次數(shù)。頁面從進程啟動的時間開始累計。
頁面錯誤增量
在“任務(wù)管理器”中,自上一次更新開始的頁面錯誤次數(shù)的變化。
具體參見: 幫助--任務(wù)管理器--使用進程--進程計數(shù)器列標題--頁面錯誤
頁面錯誤不表示程序存在錯誤。不管內(nèi)存多大,WINDOWS都離不開(利用磁盤),多少都會利用虛擬內(nèi)存來存入一些數(shù)據(jù),比如程序被最小化。
頁面錯誤 任務(wù)管理器 主要檢測內(nèi)存情況的。
轉(zhuǎn)載地址: http://blog.sina.com.cn/s/blog_51396f890100qjtb.html
內(nèi)存監(jiān)控
開發(fā)的一個項目中,遇到了內(nèi)存泄露的情況,發(fā)現(xiàn)此時頁面錯誤增量在300多,什么是頁面錯誤增量?
上網(wǎng)看了一下,這個就是當程序需要訪問內(nèi)存時,待訪問的地址不再物理內(nèi)存中,需要換頁將虛擬內(nèi)存頁換到物理內(nèi)存中。頁面錯誤增量大,會導(dǎo)致運行效率差,贓頁多。
但是為什么會出現(xiàn)這個情況?是OS的問題還是APP的問題?還不清楚,需要再查一下。
如果要查看程序使用情況,可以調(diào)用接口GetProcessMemoryInfo
BOOL GetProcessMemoryInfo(
HANDLE Process,
PPROCESS_MEMORY_COUNTERS ppsmemCounters,
DWORD cb
);
如果需要限制程序使用虛擬內(nèi)存的大小,可使用SetProcessWorkingSetSize,注意:這樣可能會降低運行效率.
BOOL SetProcessWorkingSetSize(
HANDLE hProcess,
SIZE_T dwMinimumWorkingSetSize,
SIZE_T dwMaximumWorkingSetSize
);
內(nèi)存管理和緩存管理的細節(jié),所以記錄詳細點,其他的東西(僅指基本組件)理解還可以。。以備忘的形式慢慢po上來~
頁面交換
使用技巧
對于虛擬如何設(shè)置的問題,已經(jīng)給我們提供了官方的解決辦法,對于一般情況下,我們推薦采用如下的設(shè)置方法:
,文件的大小由你對系統(tǒng)的設(shè)置決定。具體設(shè)置方法如下:打開"我的電腦"的"屬性"設(shè)置窗口,切換到"高級"選項卡,在"啟動和故障恢復(fù)"窗口的"寫入調(diào)試信息"欄,如果你采用的是試和了。所以折中的辦法是在設(shè)置較小的,只要夠用就行了。
,其最小值設(shè)置為的1.5倍,最大值設(shè)置為物理內(nèi)存的3倍,該分區(qū)專門用來存儲,不要再存放其它任何文件。之所以單獨劃分一個分區(qū)用來設(shè)置虛擬,主要是基于兩點考慮:其一,由于該分區(qū)上沒有其它文件,這樣分區(qū)不會產(chǎn)生,這樣能保證的數(shù)據(jù)讀寫不受磁盤碎片的干擾;其二,按照Windows對內(nèi)存的管理技術(shù),Windows會優(yōu)先使用不經(jīng)常訪問的分區(qū)上的頁面文件,這樣也減少了讀取里的頁面文件的機會,減輕了系統(tǒng)盤的壓力。
,則其它不設(shè)置任何頁面文件。因為過多的分區(qū)設(shè)置,這樣會導(dǎo)致,反復(fù)的在不同的分區(qū)來回讀取。這樣既耽誤了系統(tǒng)速率,也會減少硬盤的壽命。當然,如果你有多個硬盤,則可以為每個硬盤都創(chuàng)建一個。當信息分布在多個頁面文件上時,可以同時在多個硬盤上執(zhí)行讀取和寫入操作。這樣系統(tǒng)性能將得到提高。
換頁錯誤
換頁錯誤,即Page fault。
Page Fault 是在進程嘗試執(zhí)行代碼指導(dǎo),或者引用進程所映射中并不存在的數(shù)據(jù)頁時,操作系統(tǒng)記錄的事件。換句話說,進程需要的內(nèi)存頁實際上可能還處于中,但是由于它無法再分配到進程中,所以當進程將此頁讀取回到它的內(nèi)存頁時,就發(fā)生了Page Fault。
在開發(fā)上,我認為主要是優(yōu)化內(nèi)存讀取方式,如果存在大量的文件讀取,虛擬內(nèi)存也就多,換頁次數(shù)就多,自然也很多,不作為主要的評測指標。
現(xiàn)在內(nèi)存都是分頁的, 如果你要讀或者寫的頁還沒分在內(nèi)存里, 就出現(xiàn)缺頁錯了。 這種事情在程序啟動的時候可能非常頻繁, 但是也不用你自己處理, 一般系統(tǒng)會自己搞定這事的, 搞不定就直接死機。。
轉(zhuǎn)載:http://en.wikipedia.org/wiki/Page_fault
頁缺失 (計算機科學(xué))
維基百科,自由的百科全書
(重定向自)
頁缺失(:Page fault,又名硬錯誤、分頁錯誤、尋頁缺失、缺頁中斷、頁故障等)指的是當軟件試圖訪問已映射在中,但是目前并未被加載在中的一個時,由的所發(fā)出的。
通常情況下,用于處理此中斷的程序是的一部分。如果操作系統(tǒng)判斷此次訪問是有效的,那么操作系統(tǒng)會嘗試將相關(guān)的分頁從硬盤上的文件中調(diào)入內(nèi)存。而如果訪問是不被允許的,那么操作系統(tǒng)通常會結(jié)束相關(guān)的。
雖然其名為“頁缺失”錯誤,但實際上這并不一定是一種錯誤。而且這一機制對于利用來增加程序可用內(nèi)存空間的操作系統(tǒng)(比如和各種)中都是常見且有必要的。
微軟在較新版Windows(及以上)的資源監(jiān)視器中使用“硬錯誤”這一術(shù)語來指代“頁缺失”。
目錄
[]
[]分類
[]軟性
軟性頁缺失指頁缺失發(fā)生時,相關(guān)的頁已經(jīng)被加載進內(nèi)存,但是沒有向MMU注冊的情況。操作系統(tǒng)只需要在MMU中注冊相關(guān)頁對應(yīng)的物理地址即可。
發(fā)生這種情況的可能性之一,是一塊物理內(nèi)存被兩個或多個程序,操作系統(tǒng)已經(jīng)為其中的一個裝載并注冊了相應(yīng)的頁,但是沒有為另一個程序注冊。
可能性之二,是該頁已被從CPU的中移除,但是尚未被交換到上。比如這樣的使用次級頁緩存的系統(tǒng),就有可能會在工作集過大的情況下,將某頁從工作集中去除,但是不寫入硬盤也不擦除(比如說這一頁被讀出硬盤后沒被修改過),只是放入空閑頁表。除非有其他程序需要,導(dǎo)致這一頁被分配出去了,不然這一頁的內(nèi)容不會被修改。當原程序再次需要該頁內(nèi)的數(shù)據(jù)時,如果這一頁確實沒有被分配出去,那么系統(tǒng)只需要重新為該頁在MMU內(nèi)注冊映射即可。
[]硬性
與軟性頁缺失相反,硬性頁缺失是指相關(guān)的頁在頁缺失發(fā)生時未被加載進內(nèi)存的情況。這時操作系統(tǒng)需要:
尋找到一個空閑的頁?;蛘甙蚜硗庖粋€使用中的頁寫到磁盤上(如果其在最后一次寫入后發(fā)生了變化的話),并注銷在MMU內(nèi)的記錄
將數(shù)據(jù)讀入被選定的頁
向MMU注冊該頁
硬性頁缺失導(dǎo)致的性能損失是很大的。以一塊7200的主流為例,其平均尋道時間為8.5毫秒,讀入內(nèi)存需要0.05毫秒。相對的,的訪問延遲通常在數(shù)十到100納秒之間,性能差距可能會達到8萬到22萬倍。
另外,有些操作系統(tǒng)會將程序的一部分延遲到需要使用的時候再加載入內(nèi)存執(zhí)行,以此來提升性能。這一特性也是通過捕獲硬性頁缺失達到的。
當硬性頁缺失過于頻繁的發(fā)生時,稱發(fā)生。
[]無效
當程序訪問的虛擬地址是不存在于虛擬地址空間內(nèi)的時候,則發(fā)生無效頁缺失。一般來說這是個軟件問題,但是也不排除硬件可能,比如因為內(nèi)存故障而損壞了一個正確的。
具體動作與所使用的操作系統(tǒng)有關(guān),比如Windows會使用機制向程序報告,而則會使用機制。如果程序未處理相關(guān)問題,那么操作系統(tǒng)會執(zhí)行默認處理方式,通常是、終止相關(guān)的程序,然后向用戶報告。
[]參考與延伸閱讀
^   Red Hat Enterprise Linux 3: Introduction to System Administration, . RedHat [2013-02-11].
參見資源監(jiān)視器幫助
HP OpenVMS Systems Documentation, . HP [2013-02-11].
^   . OSR Online. 2003-05-07 [2013-02-11].
Red Hat Enterprise Linux 3: Introduction to System Administration, . RedHat [2013-02-11]. See note.
. Microsoft MSDN [2013-02-11].
John L. Hennessy, David A. Patterson, Computer Architecture, A Quantitative Approach ()
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)致程序崩潰,分割錯誤,總線錯誤或的操作系統(tǒng)環(huán)境。這些問題通常是由于軟件缺陷,但可能會損壞硬件內(nèi)存錯誤,如由所引起的,指針和正確的軟件故障。
如和操作系統(tǒng)(以及其他系統(tǒng))提供不同的頁故障引起的錯誤報告機制。Windows使用報告故障無效的存取異常,UNIX(UNIX-like)的系統(tǒng)通常使用,如,報告這些錯誤條件的方案。
如果收到錯誤的程序不處理,操作系統(tǒng)執(zhí)行的默認操作,一般涉及終止正在運行的導(dǎo)致錯誤的條件,并通知用戶,該計劃已發(fā)生了故障。最新版本的Windows中經(jīng)常報道這樣的問題,就類似“這個程序必須關(guān)閉”(有經(jīng)驗的用戶或提供一個仍然可以獲取詳細信息)。最新的Windows版本和操作系統(tǒng)報告這些條件的用戶提供的錯誤信息,如“分割違反”或“巴士,也可以編寫一個(類似的原則,以一個)描述的狀態(tài)崩潰的過程。錯誤“,也可能產(chǎn)生核心轉(zhuǎn)儲。
[  ]性能
頁故障,由于其本身的性質(zhì),一個或操作系統(tǒng)的性能降低和退化的情況可能會導(dǎo)致。程序和操作系統(tǒng)數(shù)量減少的頁面錯誤,提高程序性能,甚至整個系統(tǒng)。的兩個主要側(cè)重的優(yōu)化工作,降低整體內(nèi)存使用率和改善。為了減少頁面系統(tǒng)中的故障,程序員必須使用適當?shù)?,適合當前需求和最大限度地提高了頁面的點擊。許多人都被提出,如實施,以減少發(fā)病的頁面錯誤。一般情況下,提供更多的物理內(nèi)存,也減少了頁面錯誤。
主要頁錯誤的傳統(tǒng)(硬盤)計算機上可以有一個顯著的性能影響。平均的硬盤具有的平均為3ms,為5ms,和轉(zhuǎn)印時間為0.05毫秒/頁。因此,總的尋呼時間是8ms的(8 000我們)附近。如果內(nèi)存訪問時間為0.2,那么頁面故障,使操作約40,000倍的速度。
MMU
百科名片
MMU是Memory Management Unit的縮寫,中文名是單元,它是(CPU)中用來管理、物理存儲器的控制線路,同時也負責映射為,以及提供硬件機制的內(nèi)存訪問授權(quán)。
目錄
展開
展開
歷史
許多年以前,當人們還在使用DOS或是更古老的的時候,計算機的內(nèi)存還非常小,一般都是以K為單位進行計算,相應(yīng)的,當時的程序規(guī)模也不大,所以內(nèi)存容量雖然小,但還是可以容納當時的程序。但隨著圖形界面的興起還有用戶需求的不斷增大,的規(guī)模也隨之膨脹起來,終于一個難題出現(xiàn)在的面前,那就是應(yīng)用程序太大以至于內(nèi)存容納不下該程序,通常解決的辦法是把程序分割成許多稱為覆蓋塊(overlay)的片段。覆蓋塊0首先運行,結(jié)束時他將調(diào)用另一個覆蓋塊。雖然覆蓋塊的交換是由OS完成的,但是必須先由程序員把程序先進行分割,這是一個費時費力的工作,而且相當枯燥。人們必須找到更好的辦法從根本上解決這個問題。不久人們找到了一個辦法,這就是(virtual memory).虛擬存儲器的基本思想是程序,數(shù)據(jù),的總的大小可以超過物理存儲器的大小,把當前使用的部分保留在內(nèi)存中,而把其他未被使用的部分保存在上。比如對一個16MB的程序和一個內(nèi)存只有4MB的機器,通過選擇,可以決定各個時刻將哪4M的內(nèi)容保留在內(nèi)存中,并在需要時在內(nèi)存和磁盤間交換程序片段,這樣就可以把這個16M的程序運行在一個只具有4M內(nèi)存機器上了。而這個16M的程序在運行前不必由進行分割。
相關(guān)概念
——地址范圍、映射為 以及 機制
任何時候,計算機上都存在一個程序能夠產(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主機來說,它的虛擬地址空間范圍是0~0xFFFFFFFF(4G),而物理地址空間范圍是0x000000000~0x0FFFFFFF(256M)。
在沒有使用的機器上,被直接送到內(nèi)存總線上,使具有相同地址的物理存儲器被讀寫;而在使用了虛擬存儲器的情況下,虛擬地址不是被直接送到總線上,而是送到單元MMU,把虛擬地址映射為物理地址。
大多數(shù)使用的系統(tǒng)都使用一種稱為(paging)機制。虛擬地址空間劃分成稱為頁(page)的單位,而相應(yīng)的空間也被進行劃分,單位是頁幀(frame).頁和頁幀的大小必須相同。在這個例子中我們有一臺可以生成32位地址的機器,它的范圍從0~0xFFFFFFFF(4G),而這臺機器只有256M的,因此他可以運行4G的程序,但該程序不能一次性調(diào)入內(nèi)存運行。這臺機器必須有一個達到可以存放4G程序的外部(例如磁盤或是FLASH),以保證程序片段在需要時可以被調(diào)用。在這個例子中,頁的大小為4K,頁幀大小與頁相同——這點是必須保證的,因為內(nèi)存和外圍之間的傳輸總是以頁為單位的。對應(yīng)4G的和256M的物理存儲器,他們分別包含了1M個頁和64K個頁幀。
功能
1、將虛擬地址映射為物理地址
現(xiàn)代的多用戶,需要MMU,才能達到每個用戶進程都擁有自己獨立的的目標。使用MMU,劃分出一區(qū)域,在這塊地址區(qū)域中,每個進程看到的內(nèi)容都不一定一樣。例如MICROSOFT 將地址范圍4M-2G劃分為用戶,進程A在地址0X400000(4M)映射了,進程B同樣在地址0X400000(4M)映射了可執(zhí)行文件,如果A進程讀地址0X400000,讀到的是A的可執(zhí)行文件映射到RAM的內(nèi)容,而進程B讀取地址0X400000時,則讀到的是B的可執(zhí)行文件映射到RAM的內(nèi)容。
這就是MMU在當中進行所起的作用。
2、提供硬件機制的內(nèi)存訪問授權(quán)
多年以來,一直帶有片上單元(MMU),MMU能使單個線程工作于硬件保護。但是在許多商用中,即使系統(tǒng)中含有這些硬件也沒采用MMU。
當?shù)乃芯€程共享同一空間時,任何一個線程將有意或無意地破壞其它線程的代碼、數(shù)據(jù)或。異常線程甚至可能破壞內(nèi)核代碼或內(nèi)部。例如線程中的指針錯誤就能輕易使整個,或至少導(dǎo)致系統(tǒng)工作異常。
就安全性和可靠性而言,基于進程的(RTOS)的性能更為優(yōu)越。為生成具有單獨的進程,RTOS只需要生成一些基于RAM的并使MMU加強對這些數(shù)據(jù)結(jié)構(gòu)的保護?;舅悸肥窃诿總€關(guān)聯(lián)轉(zhuǎn)換中“接入”一組新的。MMU利用當前映射,將在指令調(diào)用或數(shù)據(jù)讀寫過程中使用的映射為。MMU還標記對非法進行的訪問,這些非法邏輯地址并沒有映射到任何。
這些進程雖然增加了利用查詢表訪問所固有的,但其實現(xiàn)的效益很高。在進程邊界處,疏忽或錯誤操作將不會出現(xiàn),線程中的缺陷并不會導(dǎo)致其它更關(guān)鍵線程的代碼或數(shù)據(jù)遭到破壞。目前在可靠性和安全性要求很高的復(fù)雜中,仍然存在采無保護的的情況,這實在有些不可思議。
采用MMU還有利于選擇性地將頁面映射或解映射到。物理存儲器頁面映射至邏輯空間,以保持當前進程的代碼,其余頁面則用于數(shù)據(jù)映射。類似地,物理存儲器頁面通過映射可保持進程的線程。RTOS可以在每個線程解映射之后,很容易地保留邏輯地址所對應(yīng)的頁面內(nèi)容。這樣,如果任何線程分配的發(fā)生溢出,將產(chǎn)生硬件保護故障,內(nèi)核將掛起該線程,而不使其破壞位于該地址空間中的其它重要存儲器區(qū),如另一線程堆棧。這不僅在之間,還在同一地址空間之間增加了保護。
保護(包括這類檢測)在中通常非常有效。采用了保護,將產(chǎn)生異常并能被立即檢測,它由進行跟蹤。如果沒有保護,將導(dǎo)致一些細微的難以跟蹤的故障。實際上,由于在扁平中,RAM通常位于的零頁面,因此甚至NULL指針引用的解除都無法檢測到
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
進程的虛擬地址空間 - so true - BlogJava
我和面試官之間關(guān)于操作系統(tǒng)的一場對弈 | 原力計劃
關(guān)于Windows頁面錯誤的一些基礎(chǔ)概念
翻譯后援存儲器(TLB)
計算機操作系統(tǒng)原理
操作系統(tǒng)第5章
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服