memory-segmentation

    2熱度

    1回答

    當用戶模式下運行程序時,x86中是否可以使用分段內存?如果是這樣,是否有任何工具(例如C/C++編譯器)來實現這一點?它似乎是一個非常強大的機制,允許程序內運行程序。 我聽說Chromium在Native Client中使用分段來實現沙箱化,但我不確定它是如何實現的,或者它是否使用匯編或內置編譯器支持。

    3熱度

    2回答

    我在OSDev wiki上讀到,x86架構的受保護模式允許您爲代碼和數據創建單獨的段,而無法寫入代碼段。 Windows(是的,這是平臺)將新代碼加載到代碼段中,並在數據段中創建數據。但是,如果是這種情況,程序如何知道它必須將段切換到數據段?如果我理解正確,那麼所有的地址說明都指向您運行代碼的段,除非您切換描述符。但是我也讀過,這種扁平內存模型允許你在一個段內運行代碼和數據。但是,我僅在彙編程序方

    4熱度

    1回答

    快速概要:在x86-64模式下,遠遠落後於x86-32模式? 在x86處理器,跳躍分爲三類: 短,與PC偏移的+/- 127個字節(2字節指令) 附近,具有+/- 32K偏移「輥上」當前段(3字節指令) 遠,這可以在任何地方跳(5字節的指令) 短和靠近跳躍需要1-2個時鐘週期,而遠跳取50 -80個時鐘週期,具體取決於處理器。從我閱讀文檔的時候,這是因爲他們「脫離目前的代碼段CS」。 在x86-6

    3熱度

    1回答

    看了這個問題問了很多次。但找不到合理的答案。實際上虛擬內存的限制是什麼? 它是CPU的最大可尋址大小嗎?例如,如果CPU是32位,最大值是4G? 另外一些文本將其與硬盤區域相關聯。但我找不到這是一個很好的解釋。有人說它的CPU生成地址。 我們看到的所有地址都是虛擬地址?例如我們在使用GDB調試程序時看到的內存位置。 CPU產生虛擬地址背後的歷史原因是什麼?一些文本可以互換使用虛擬地址和邏輯地址。它

    2熱度

    2回答

    我對純粹的分割有點困惑,因爲在我的腦海中總是存在虛擬內存的想法。 但據我所知,純粹的分割也想象一個虛擬地址空間,劃分爲所有加載到RAM中的段。 與分割虛擬內存的區別在於,可能存在某些段不在RAM中。 這是正確的嗎? 我加了一個問題: 分段結合分頁和雙層分頁是否存在實際區別?除了段方法的「極限」保護外,其他方面是相同的。或者還有其他的區別?

    2熱度

    3回答

    大多數操作系統使用虛擬內存分頁。爲什麼是這樣?爲什麼不使用分割?僅僅是因爲硬件問題?在某些情況下,一個比另一個好嗎?基本上,如果你必須選擇一個,你想使用哪一個,爲什麼? 讓我們假設它是一個x86的參數。

    0熱度

    3回答

    我最近被問到一個問題,即在計算機系統中,如果主存儲器(RAM)與次存儲器(HDD)具有可比性,那麼是否需要在這樣的計算機系統中實現虛擬存儲器? 由於分頁和分段需要純粹處理開銷的上下文切換,虛擬內存的好處會超過它所需的處理開銷嗎? 有人可以幫我解決這個問題嗎? Thanku