page-tables

    2熱度

    1回答

    現在我正在學習內存管理OS 在分層頁表結構,如果有32位機,page-size4KB和page-entry大小4B。 爲什麼地址位分成10-10-12 我知道20 - 12,12位是offset值由4K字節 - > 2^12 但爲什麼20個比特變成10-10 是它不可能11-9或12-8?

    1熱度

    1回答

    我知道每個進程都可以有單獨的頁表,並且可以在上下文切換期間通過更新TTBR0/1_EL1來指向每個進程。每個進程的內部頁表中,一些條目將是特定於進程的(nG = 1),其他條目將指向公共資源(nG = 0)。 如果頁表項(PTE)被標記爲一個進程的頁表全球性的,它意味着PTE必須完全相同/指向其它頁表以完全相同的物理塊? 如果是,在不一致情況下會發生什麼情況?我的意思是,如果一個進程具有nG =

    0熱度

    1回答

    以下參數適用於採用40位虛擬地址和1G字節物理(主)內存的系統。字大小是64位(8字節)。地址指向 字節並在字節邊界上對齊。我們對i位 地址使用以下符號:Ai-1 ... A2,A1,A0其中Ai-1是地址的最高有效位,而A0 是地址的最低有效位。虛擬地址由V39-VO 表示,物理地址由P29-P0表示。 Page size: 64 K bytes Page table: three-level

    0熱度

    1回答

    由於地址可能映射到某個不屬於該進程的地址空間,因此出於安全原因不允許出現同樣的情況。但它可以修改,以改變它有權訪問的地址的頁表項?

    1熱度

    1回答

    我讀到內存的頁面結構,不能獲得一些積分: 頁表:正如我理解的過程(如英特爾酷睿i5)的頁面表和TLB集成在它的晶體中,不是嗎?但是這張表不包含虛擬頁面的地址,所以OS在操作內存中必須有一個頁表。所以? 倒轉表格:我知道它有頁表,但是這個表格包含了實際的內存塊地址。而我沒有更多。該表位於過程或操作系統中的哪個位置在手術記憶中提供。什麼是散列函數? 來自圖片。 PID - 進程ID(它是幹什麼用的),

    0熱度

    1回答

    我們假設我們有4 GiB的RAM,並且我們使用4 kiB的頁表大小和32位地址。 我的計算後,我得到了: 我們只能解決2^32個地址的最大; 每頁表共有2^20個條目; 總共有4 GiB/4 kiB = 1048576頁。 但我不明白的是,如果一個頁表有2^20個條目,我們已經用這個頁表覆蓋了所有可能的地址。 如果每個進程都有自己的頁面表,可能性如何?那麼應該可以在多個頁面表上使用相同的物理地址,

    0熱度

    2回答

    我解決了一些問題,其中頁表條目大小隻需要26位 - 對於物理地址是22位,對於髒位等則只需要4位。然而,它被取整爲32--因爲26不是2的冪。一定是簡單的我錯過了,但爲什麼我們必須這樣做呢?謝謝!

    0熱度

    2回答

    據我所知,CPU的內存訪問涉及CPU緩存和MMU。 CPU將嘗試在高速緩存中找到其目標,如果發生高速緩存未命中,CPU將轉爲MMU。在MMU訪問期間,對應頁表項的被訪問/髒位將由硬件置位。但是據我所知,大多數CPU設計不會觸發MMU,除非有一個緩存未命中,這裏我的問題是,頁表項的被訪問/髒位仍然會被設置在緩存命中下?或者它與建築相關?

    1熱度

    1回答

    給定32位的邏輯地址空間,8 MB的存儲空間和4 KB的頁大小,計算2級Hierarchical Paging表的最大大小。每個條目包含一個額外的4位控制序列。 我已經計算出幀數爲2^11,因此最低級別的每個條目必須包含15位(11個用於識別幀號和4個用於控制)。爲了更簡單的計算,我把它四捨五入到了16。 我已經將從我的LSB開始的邏輯32位地址拆分爲12位物理內存偏移量,11位內部頁面偏移量(考

    3熱度

    1回答

    如果您嘗試使用Rust的任何內存分配機制(包括每晚alloc_api)分配大量內存,則無法預填充頁表,即不能重新創建mmap的MAP_POPULATE選項。相反,當我需要分配大面積內存時,我只使用libc::mmap。 除了循環使用Vec<usize>或Vec<SomeTypeOfPageSize>並觸發頁面錯誤之外,是否還有另一種方法在Rust中預填充頁表? 由於pointed out by @