<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 5.3 混合分段和分頁地址轉換(Combining Segment and Page Translation) 圖5-12 結合了圖5-2和圖5-9來對兩階段(從邏輯地址到線性,再從線性地址到實物理地址(當啟用分頁時))的地址轉換做一個總結。通過使用不同的方法,內存管理軟件可以實現幾種不同形式的內存管理機制。 ### 5.3.1 “平坦”體系結構(”Flat Architecture”) 當80386用來執行一些程序,而這些程序也為別的不支持分段的處理器而設計時,有效的“關閉”分段可能比較好。80386沒有禁止分段的執行模式,但是同樣的效果是可以通過一些特定的方法實現的:把指向包括整個32-位地址空間的描述符的選擇子加載到段寄存器里,段選擇子沒有必要改變。32-位的偏移已足夠尋址整個80386支持的內存空間了。 ### 5.3.2 跨多個頁的段(Segments Spanning Several Pages) 80386系統結構允許一個段比內存頁(4K)大,也允許比內存頁小。比如,有一個段用來尋址和保護一個大小為132K的數據結構。在一個支持頁級虛擬內存的軟件系統里,沒有必要把這一整個段都調入實物理內存。該結構被分成功33個頁面,任何一個都可以不存在。應用程序員不會感覺到虛擬內存系統在以這種方式調動頁面。 ![](https://box.kancloud.cn/2016-03-06_56dbfdae027fd.gif) ### 5.3.3 跨段的頁面(Pages Spaning Several Segments) 在另一方面,段可能比一個頁面要小。比如,考慮一個數據結構(如信號量(Semaphore))。因為段的保護和共享機制,把每一個信號量放在一個段里也許比較好些。但是,由于一個系需要很多的信號量,如果為每一個信號量分配一頁的話效率很低下。所以,把幾個段合并到一個頁面里應該更好。 ### 5.3.4 非對齊的頁和段邊界(Non-Aligned Page and Segment Boundaries) 80386系統并不強求頁和段的任何對齊。即使一個頁包含了一個段的結尾又包含了一個段的開始也是完全可以的。類似的,即包含一個頁的開始和另一個頁的結尾的段也是完全允許的。 5.3.5對齊的頁和段邊界(Aligned Page and Segment Boundaries) 如果頁與段之間有一定的對齊的話,對于內存管理系統來說也許會簡單很多。例如,如果一個段只以頁為單元來分配的話,段頁邏輯將會結合起來。就沒有為部分頁面而管理的邏輯了。 ### 5.3.6 每段一個別頁表(Page-Table Per Segment) 一個更簡單的內存空間管理方法便是將每一個段對應為一個頁目錄項,圖5-13顯示了這種方式。每個描述符的基址部分的低22位都將是0。換言之,基址被映射到每個頁表的第一項。每個段長度可以從1到4M的任意大小。一個段可以包含1到1K個物理內存頁,多少則由長度界限字段來決定。這樣的話,一個任務可以尋址1K個段(對于很多應用程序來說都足夠了),每個段可以高達4M字節。描述符,和與之對應的頁目錄項,還有與之對應的頁表,就可以同時分配同時回收。 ![](https://box.kancloud.cn/2016-03-06_56dbfdae13033.gif)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看