OS中的自對映問題

2021-07-22 12:29:09 字數 827 閱讀 2395

對於每個程序而言都能看到

4g的記憶體,乙個頁是

4k,一共有

4g/4k=2^20

個頁。每個程序中都有自己的乙個頁目錄(一級頁表),這個頁目錄可以管轄

1024

個二級頁表,充足情況下程序會有

1024

個二級頁表。那麼這

1024

個頁對於使用者來說就不用了,可以從

2^20

個頁表中去除,實際需要管理的頁的個數就是

2^20-1024=1023*1024

個頁。又因為我們有

1024

個二級頁表,每個二級頁表可以管理

1024

個頁,理論上可以管理

1024*1024

個頁,但是我們已經知道實際只需要管理

1023*1024

個頁,也就是說我們可以騰出乙個二級頁表示空閒的,因為頁目錄和二級頁表的儲存格式是一樣的,我們可以把這個二級頁表替換成頁目錄,這樣實際就是乙個頁目錄加上

1023

個二級頁表形成乙個

1024

個頁組成的

4m大頁。

如下圖,0~1023

是1024

個二級頁表,那麼也就是

1024

個頁,那麼必然有乙個二級頁表來管理這

1024

個頁,不妨令紅色的這個二級頁表管理這

1024

個頁,那麼它其實就是頁目錄,不妨令編號為頁目錄基值的那個二級頁表作為頁目錄。

os中同步鎖的位置問題

今日看19年的408的哲學家吃飯問題,對同步鎖的位置有些困惑,與生產消費者的鎖的問題是剛好相反的。比如19年的題 有n n 3 位哲學家圍坐在一張圓桌邊,每位哲學家交替地就餐和思考。在 圓桌中心有m m 1 個碗,每兩位哲學家之間有一根筷子。每位哲學家必須取到乙個碗和兩 側的筷子後,才能就餐,進餐完...

PHP 中 自增 自減 運算引發的奇怪問題

a true var dump a bool true b false var dump b bool false b false var dump b bool false 遞增 遞減 null php a null var dump a int 1 a null var dump a null在...

PHP 中 自增 自減 運算引發的奇怪問題

在 php 的官方手冊中寫道 php 支援 c 風格的前 後遞增與遞減運算子。第乙個注意事 遞增 遞減運算子不影響布林值。遞減null值也沒有效果,但是遞增null的結果是1。換句話說 遞增 遞減運算中,不會把運算元轉換成整數後再運算。如果運算數是布林值,則直接返回結果。遞增 遞減布林值 php a...