當前位置:首頁 » 文件傳輸 » 進程訪問的頁面不在主存中
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

進程訪問的頁面不在主存中

發布時間: 2022-06-10 03:11:48

㈠ 幾種頁面置換演算法的基本原理及實現方法

收藏推薦 在多道程序的正常運行過程中,屬於不同進程的頁面被分散存放在主存頁框中,當正在運行的進程所訪問的頁面不在內存時,系統會發生缺頁中斷,在缺頁中斷服務程序中會將所缺的頁面調入內存,如內存已無空閑頁框,缺頁中斷服務程序就會調用頁面置換演算法,頁面置換演算法的目的就是選出一個被淘汰的頁面.把內存和外存統一管理的真正目的是把那些被訪問概率非常高的頁存放在內存中.因此,置換演算法應該置換那些被訪問概率最低的頁,將它們移出內存.1最佳置換演算法基本原理:淘汰以後不再需要的或最遠的將來才會用到的頁面.這是1966年Belady提出的理想演算法,但無法實現,主要用於評價其他置換演算法.例:分配給某進程的內存頁面數是3頁,頁面地址流如下:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,其內存動態分配過程如下:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 17 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 20 0 0 0 0 0 4 4 4 0 0 0 0 0 0 01 1 1 3 3 3 3 3 3 3 3 1 1 1 12先進先出置換......(本文共計2頁) 如何獲取本文>>

㈡ 進程內存管理方法

Linux系統提供了復雜的存儲管理系統,使得進程所能訪問的內存達到4GB。在Linux系統中,進程的4GB內存空間被分為兩個部分——用戶空間與內核空間。用戶空間的地址一般分布為0~3GB(即PAGE_OFFSET,在Ox86中它等於OxC0000000),這樣,剩下的3~4GB為內核空間,用戶進程通常只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。用戶進程只有通過系統調用(代表用戶進程在內核態執行)等方式才可以訪問到內核空間。每個進程的用戶空間都是完全獨立、互不相乾的,用戶進程各自有不同的頁表。而內核空間是由內核負責映射,它並不會跟著進程改變,是固定的。內核空間的虛擬地址到物理地址映射是被所有進程共享的,內核的虛擬空間獨立於其他程序。Linux中1GB的內核地址空間又被劃分為物理內存映射區、虛擬內存分配區、高端頁面映射區、專用頁面映射區和系統保留映射區這幾個區域。
對於x86系統而言,一般情況下,物理內存映射區最大長度為896MB,系統的物理內存被順序映射在內核空間的這個區域中。當系統物理內存大於896MB時,超過物理內存映射區的那部分內存稱為高端內存(而未超過物理內存映射區的內存通常被稱為常規內存),內核在存取高端內存時必須將它們映射到高端頁面映射區。Linux保留內核空間最頂部FIXADDR_TOP~4GB的區域作為保留區。當系統物理內存超過4GB時,必須使用CPU的擴展分頁(PAE)模式所提供的64位頁目錄項才能存取到4GB以上的物理內存,這需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以後的CPU允許內存最大可配置到64GB,它們具備36位物理地址空間定址能力。由此可見,對於32位的x86而言,在3~4GB之間的內核空間中,從低地址到高地址依次為:物理內存映射區隔離帶vmalloc虛擬內存分配器區隔離帶高端內存映射區專用頁面映射區保留區。

㈢ 操作系統 進程頁表

答:對於一級頁表,進行地址變換的步驟如下:
(1)虛地址計算出頁號和頁內偏移量。
(2)根據頁號和進程的頁表首址,找到對應的頁表項,取出幀號. (3)(幀號*頁面大小)+頁內偏移 形成物理地址。
B答:p=INT(A/L) d=[A]mod L (A為虛地址,L為頁面大小,p為頁號,d為頁內偏移)
(i) p=INT(1052/1024)=1 d=28
根據頁號查頁表得楨號為4,則該頁幀的物理起始地址為: 4*1024=4096,再加頁內偏移量28得物理地址為:4096+28=4124
(ii) p=INT(2221/1024)=2 d=173 該頁不在內存中,將產生缺頁中斷。 (iii) p=INT(5499/1024)=5 d=379
根據頁號查頁表得楨號為0,則該頁幀的物理起始地址為: 0*1024=0,再加頁內偏移量379得物理地址為:0+379=379

㈣ 有一個虛擬存儲系統,分配給某個進程3 頁內存(假設開始時內存為空),頁面訪問序列是2, 3, 2, 1, 5, 2, 4, 5,

根據LRU演算法,需要替換上次使用距現在最遠的頁面。
首先2,3,2這三頁進入內存(進程只分配到3個頁面,切順序為由內到外,第二個2進入時不缺頁,所以共缺頁2次),1進入時,內存不滿且內存中沒有1這個頁面即第1個進入內存,所以順序是2,3,1(缺頁1次);下一個進入的是5,替換3(缺頁1次),得到2,1,5;下一個進入的是2,內存中有2號頁面,進行下一個頁面;下一個進入4,4替換1,得到2,5,4(缺頁1次);下一個進入5,內存中有5號頁面,進行下一個頁面;下一個進入3,3替換2,得到3,5,4(缺頁1次);下一次進入2,2替換4,得到3,5,2(缺頁1次);後面2號和5號內存中均存在,則不需要替換。所以一共發生了7次缺頁.

㈤ 關於虛擬內存中頁目錄與頁表在物理內存中載入的問題

我對Linux操作系統的具體情況不是很熟,回答僅供參考。

首先,物理內存無所謂內核區用戶區,所有地址都一樣。虛擬的地址空間才分內核區用戶區。
處理器通過查看頁目錄和頁表,把虛擬地址換算成物理地址。用戶區與內核區的兩個不同的虛擬地址對應同一個物理地址也不要緊。
內核區與用戶區的真正區別在於普通進程能不能訪問該區域中的地址。
在正常情況下,操作系統肯定會把頁目錄和頁表保護起來,可以把它們看作存放在內核區的東西。

編寫操作系統時,頁目錄確實可以放在物理內存中的任何地方(當然偏移必須是1000h的倍數),只要把偏移量填進CR3的高20位就可以了。
Linux內核的頁目錄放在物理地址0h處,頁表緊隨其後。0.11版Linux中,所有用戶進程和內核用的都是這張頁目錄。切換進程時,改改頁目錄項就行了。新版的Linux內核我不太了解,抱歉……
每個頁目錄項有4位元組,高20位儲存頁表的物理地址,低12位儲存頁表的屬性。

一張頁表4KB,這4KB必須是連續的。但是各張頁表之間不必連續。Linux創建新進程時,僅僅調用了get_free_page找到一頁空內存,把進程頁表塞進去而已。
頁表不能被普通進程直接訪問。訪問用戶區虛擬地址是看不到進程頁表的。
內核的頁表前面提到過。它就在內核頁目錄的後面,物理地址為1000h,虛擬地址為C0001000h。訪問用戶區的虛擬地址不會看到它。

個人不大擅長表述,恐怕解釋得不是很清楚。歡迎追問。

㈥ WINDOWS進程里的"頁面錯誤"這一項是什麼作用啊

這和windows系統管理內存的機制有關.頁面是操作系統管理內存的單位,通常是4KB,或者更高,整個物理內存被分為頁面進行管理。現代計算機普遍支持稱為"虛擬內存"的內存管理技術,用以給進程提供超過物理內存限制的存儲空間。這種技術允許操作系統把不常用的內存頁面上的數據換出到硬碟上,等需要時再讀近來,或者說是把磁碟當內存用。假如某程序長期不用某個頁面上的數據,操作系統就可能把它換出到磁碟上,而把物理內存分配給別的更需要它的進程。當那個進程再次需要讀取該頁面的數據時,因為該頁面並不在物理內存中,而是在磁碟上,所以讀取內存的操作就會出錯,也就是頁面錯誤。操作系統在捕獲頁面錯誤時,就從磁碟中把上次換出的數據重新讀入內存,並重新執行出錯的那條指令。因為這時數據已經在內存中,程序就得以繼續正常運行。Windows進程的頁面錯誤項就是用來記錄頁面錯誤的次數。如果物理內存越少,進程所需的內存越多,那麼頁面錯誤也就越多。值得注意的是系統創建進程的時候,甚至不需要把程序從硬碟上讀入內存,而只是建立起內存地址和磁碟數據間的映射。這樣CPU讀取第一條指令的時候就會出一個頁面錯誤。這樣的好處就是系統能根據程序實際執行的情況來讀取數據,用多少讀多少。

㈦ 如何監控Java應用程序的Windows內存使用情況

應用程序很高興對所有這些活動一無所知。它只知道自己的虛擬地址空間。但是,如果當前在主存中的頁面集(稱為 駐留集)少於實際要使用的頁面集(稱為 工作集),應用程序的性能很快就會顯著降低。(不幸的是,本文中您將看到,我們要討論的工具常常交換使用這兩個術語,盡管它們指的是完全不同的事物。)
Task Manager 和 PerfMon
我們首先考察兩種最常見的工具:Task Manager 和 PerfMon。這兩個工具都隨 Windows 一起提供,因此由此起步比較容易。
Task Manager
Task Manager 是一種非常見的 Windows 進程監控程序。您可以通過熟悉的 Ctrl-Alt-Delete 組合鍵來啟動它,或者右擊任務欄。Processes 選項卡顯示了最詳細的信息,如圖 2 所示。
圖 2. Task Manager 進程選項卡
圖 2 中顯示的列已經通過選擇 View --> Select Columns 作了調整。有些列標題非常含糊,但可以在 Task Manager 幫助中找到各列的定義。和進程內存使用情況關系最密切的計數器包括:
Mem Usage(內存使用):在線幫助將其稱為進程的工作集(盡管很多人稱之為駐留集)——當前在主存中的頁面集。但是這個數值包含能夠和其他進程共享的頁面,因此要注意避免重復計算。比方說,如果要計算共享同一個 DLL 的兩個進程的總內存佔用情況,不能簡單地把「內存使用」值相加。
Peak Mem Usage(內存使用高峰值):進程啟動以來 Mem Usage(內存使用)欄位的最大值。
Page Faults(頁面錯誤):進程啟動以來要訪問的頁面不在主存中的總次數。
VM Size(虛擬內存大小):聯機幫助將其稱為「分配給進程私有虛擬內存總數。」更確切地說,這是進程所 提交的內存。如果進程保留內存而沒有提交,那麼該值就與總地址空間的大小有很大的差別。
雖然 Windows 文檔將 Mem Usage(內存使用)稱為工作集,但在該上下文中,它實際上指的是很多人所說的駐留集(resident set),明白這一點很重要。您可以在 Memory Management Reference 術語表(請參閱 參考資料)中找到這些術語的定義。 工作集 更通常的含義指的是一個邏輯概念,即在某一點上為了避免分頁操作,進程需要駐留在內存中的那些頁面。
PerfMon
隨 Windows 一起提供的另一種 Microsoft 工具是 PerfMon,它監控各種各樣的計數器,從列印隊列到電話。PerfMon 通常在系統路徑中,因此可以在命令行中輸入 perfmon 來啟動它。這個工具的優點是以圖形化的方式顯示計數器,很容易看到計數器隨時間的變化情況。
請在 PerfMon 窗口上方的工具欄中單擊 + 按鈕,這樣會打開一個對話框讓您選擇要監控的計數器,如圖 3a 所示。計數器按照 性能對象分成不同的類別。與內存使用關系最密切的兩個類是 Memory 和 Process。選中計數器然後單擊 Explain 按鈕,就可以看到計數器的定義。說明出現在主對話框下方彈出的單獨的窗口中。

㈧ 請問任務管理器中每一列的含義是什麼

用戶名運行該進程的用戶帳戶。會話標識標識進程所有者的編號。當多個用戶登錄時,每個用戶都有一個唯一的會話標識。CPU 的使用自上次更新以來,進程使用 CPU 的時間百分比(列標題中列為「CPU」)。CPU 時間進程自其啟動以來使用的總處理時間(以秒為單位)。內存- 工作集私人工作集中的內存數量與進程正在使用且可以由其他進程共享的內存數量的總和。內存- 峰值工作集進程所使用的工作集內存的最大數量。內存- 工作集增量進程所使用的工作集內存中的更改量。內存- 私人工作集工作集的子集,它專門描述了某個進程正在使用且無法與其他進程共享的內存數量。內存- 提交大小為某進程使用而保留的虛擬內存的數量。內存- 頁面緩沖池由內核或驅動程序代表進程分配的可分頁內核內存的數量。可分頁內存是可寫入其他存儲媒體(例如硬碟)的內存。內存- 非頁面緩沖池由內核或驅動程序代表進程分配的不可分頁的內核內存的數量。不可分頁的內存是不能寫入其他存儲媒體的內存。頁面錯誤自某進程啟動後該進程生成的頁面錯誤數。進程訪問當前不在工作集的內存頁面時會出現頁面錯誤。某些頁面錯誤要求從磁碟中檢索頁面內容;其他的頁面錯誤可在不訪問磁碟的情況下解決。頁面錯誤增量自上次更新以來頁面錯誤數量的變化。基本優先順序優先排名,它確定了所計劃進程的線程順序。句柄進程的對象表中的對象句柄數。線程數進程中運行的線程數。USER 對象當前由進程使用的 USER 對象數。USER 對象是來自 Window 管理器的對象,它包含窗口、菜單、游標、圖標、掛接、加速器、監視器、鍵盤布局及其他內部對象。GDI 對象圖形輸出設備應用程序編程介面 (API) 的圖形設備介面 (GDI) 庫中的對象數量。I/O 讀取由進程(包括文件、網路和設備 I/O)生成的讀取輸入/輸出操作的數量。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 讀取數量。I/O 寫入由進程(包括文件、網路和設備 I/O)生成的寫入輸入/輸出操作的數量。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 寫入數量。I/O 其他由既非讀取又非寫入的進程(包括文件、網路和設備 I/O)生成的輸入/輸出操作的數量。此類操作的示例是控制功能。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 其他操作數量。I/O 讀取位元組數由進程(包括文件、網路和設備 I/O)生成的輸入/輸出操作所讀取的位元組數。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 讀取位元組數。I/O 寫入位元組數由進程(包括文件、網路和設備 I/O)生成的輸入/輸出操作所寫入的位元組數。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 寫入位元組數。I/O 其他位元組數由既非讀取又非寫入的進程(包括文件、網路和設備 I/O)生成的輸入/輸出操作所傳輸的位元組數。此類操作的示例是控制功能。無法計算定向到 CONSOLE(控制台輸入對象)句柄的 I/O 其他位元組數。映像路徑名稱硬碟上的進程位置。命令行指定為創建進程的完整命令行。用戶帳戶控制(UAC)虛擬化確定為此進程啟用、禁用還是不允許使用用戶帳戶控制 (UAC) 虛擬化。UAC 虛擬化將文件和注冊表寫入錯誤重定向到每用戶位置。描述進程的描述。數據執行保護是否為此進程啟用或禁用數據執行保護。有關詳細信息,請參閱 什麼是數據執行保護?。

㈨ 為什麼在資源管理器進程中不能直接看到程序所佔的內存

可以直接看的啊。在每個進程的右邊,有「內存使用」這一列內容。如果沒有這一列,先看「任務管理器」下面,有一行「文件」,「選項」,「查看」這幾個菜單。單機「查看」,找到「選擇列……」這一個菜單,單擊打開。從那裡找到「內存使用」這個選項在前面打上勾,再按「確定」退出即可。

㈩ 操作系統頁式存儲管理的問題

存儲管理的基本原理內存管理方法 內存管理主要包括內存分配和回收、地址變換、內存擴充、內存共享和保護等功能。 下面主要介紹連續分配存儲管理、覆蓋與交換技術以及頁式與段式存儲管理等基本概念和原理。 1. 連續分配存儲管理方式 連續分配是操作系統頁式存儲管理的問題