<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 7.1 任務狀態段(Task State Segment) 用來管理任務的所有信息都被保存在一個特別的段中,任務狀態段(TSS)。圖7-1 顯示了80386的TSS的格式(另一種類型用來執行80286任務,參看第13章) TSS 狀態段由兩部分組成: 1、 動態部分,處理器在每次任務切換時會設置這些字段值: + 通用寄存器(EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)。 + 段寄存器(ES,CS,SS,DS,FS,GS) + 狀態寄存器(EFLAGS) + 指令指針(EIP) + 前一個執行的任務的TSS段的選擇子(只有當要返回時才更新)。 2、 靜態字段,處理器讀取,但從不更改。這些字段包括: + 任務的LDT選擇子 + 頁目錄基址寄存器(PDBR)(當啟用分頁時,只讀) + 內層堆棧指針,特權級0-2 + T-位,指示了處理器在任務切換時是否引發一個調試異常。(關于調試信息,參看第12章) + I/O 位圖基址(關于I/O位圖的信息,請參看第8章) 任務狀態段可以位于線性地址的任意處。唯一一個要注意的問題是,當TSS跨了一個頁的邊界時,而且第二個頁面又不存在時。在這種情況下,當處理器在任務切換時,讀一個TSS如果發現頁不存在的話,則引發一個異常。這樣的異常可以通過以下兩種方法來避免: 1、? 把TSS只分配到一個頁面中,以使它不跨越頁邊界。 2、? 在任務切換時,保證要么兩個頁都在內存中,要么都不在內存中。如果兩個頁面都不在內存中的話,缺頁中斷處理程序必須在重起用于任務切換的指令前把兩頁都讀入內存中。 ![](https://box.kancloud.cn/2016-03-06_56dbfdae027fd.gif) ![](https://box.kancloud.cn/2016-03-06_56dbfdae13033.gif) 7.2? TSS 描述符(TSS Descriptor) 和其它段一樣,任務狀態段也是用一個描述符來定義的。圖7-2顯示了TSS描述符的格式。 類型字段中的B-位指出任務是否忙。類型字段為9指出了一個不忙的任務。類型字段為11指出了忙的任務。任務是不可重入的。B-位可以使處理器檢測到一個向忙的任務切換的操作。 BASE,LIMIT,DPL,字段和G-位、還有P-位,與其它數據段描述符的作用類似。LIMIT字段,必須大于或等于103。如果在任務切換中,發現任務描述符的界限字段小于103字節的話,處理器引發異常。更大的界限是允許的,如果I/O許可位圖存在的話,更大的界限就昌必要的了。如果系統軟件想要在TSS中存放額外的數據的話,更大的界限也是可能的。 一個能訪問TSS描述符的子程序可以引起任務切換。在大多數系統中,TSS的DPL字段應該設置為0,所以只有最受信任的軟件才能做任務切換。 有訪問一個TSS的特權,并不意味著可以讀或更改TSS。讀和更新一個TSS段必須用另一個描述符來重定義成一個數據段。任何想要把TSS描述符加載到一個段寄存器(CS,SS,DS,ES,FS,GS)將產生異常。 TSS描述符只能位于GDT中。如果用一個選擇子而且TI=1(指示在當前的LDT內)來標識一個TSS的話將產生一個異常。 ![](https://box.kancloud.cn/2016-03-06_56dbfdae027fd.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>

                              哎呀哎呀视频在线观看