TSS(任務狀態段)

來源:互聯網
上載者:User
1 什麼是TSS  
TSS 全稱task state segment,是指在作業系統進程管理的過程中,任務(進程)切換時的任務現場資訊。 

 
2 TSS工作細節
TSS在任務切換過程中起著重要作用,通過它實現任務的掛起和恢複。所謂任務切換是指,掛起當前正在執行的任務,恢複或啟動另一任務的執行。在任務切換過程中,首先,處理器中各寄存器的當前值被自動儲存到TR(任務寄存器)所指定的TSS中;然後,下一任務的TSS的選擇子被裝入TR;最後,從TR所指定的TSS中取出各寄存器的值送到處理器的各寄存器中。由此可見,通過在TSS中儲存任務現場各寄存器狀態的完整映象,實現任務的切換。
3 TSS的格式 任務狀態段TSS的基本格式如所示。 TSS的基本格式由104位元組組成。這104位元組的基本格式是不可改變的,但在此之外系統軟體還可定義若干附加資訊。基本的104位元組可分為連結欄位地區、內層堆棧指標地區、地址映射寄存器地區、寄存器儲存地區和其它欄位等五個地區。
(1). 寄存器儲存地區 寄存器儲存地區位於TSS內位移20H至5FH處,用於儲存通用寄存器、段寄存器、指令指標和標誌寄存器。當TSS對應的任務正在執行時,儲存地區是未定義的;在當前任務被切換出時,這些寄存器的當前值就儲存在該地區。當下次切換回原任務時,再從儲存地區恢複出這些寄存器的值,從而,使處理器恢複成該任務換出前的狀態,最終使任務能夠恢複執行。 從可見,各通用寄存器對應一個32位的雙字,指令指標和標誌寄存器各對應一個32位的雙字;各段寄存器也對應一個32位的雙字,段寄存器中的選擇子只有16位,安排再雙字的低16位,高16位未用,一般應填為0。
(2). 內層堆棧指標地區 為了有效地實現保護,同一個任務在不同的特權級下使用不同的堆棧。例如,當從外層特權級3變換到內層特權級0時,任務使用的堆棧也同時從3級變換到0級堆棧;當從內層特權級0變換到外層特權級3時,任務使用的堆棧也同時從0級堆棧變換到3級堆棧。所以,一個任務可能具有四個堆棧,對應四個特權級。四個堆棧需要四個堆棧指標。 TSS的內層堆棧指標地區中有三個堆棧指標,它們都是48位的全指標(16位的選擇子和32位的位移),分別指向0級、1級和2級堆棧的棧頂,依次存放在TSS中位移為4、12及20開始的位置。當發生向內層轉移時,把適當的堆棧指標裝入SS及ESP寄存器以變換到內層堆棧,外層堆棧的指標儲存在內層堆棧中。沒有指向3級堆棧的指標,因為3級是最外層,所以任何一個向內層的轉移都不可能轉移到3級。 但是,當特權級由內層向外層變換時,並不把內層堆棧的指標儲存到TSS的內層堆棧指標地區。實際上,處理器從不向該地區進行寫入,除非程式設計者認為改變該地區的值。這表明向內層轉移時,總是把內層堆棧認為是一個空棧。因此,不允許發生同級內層轉移的遞迴,一旦發生向某級內層的轉移,那麼返回到外層的正常途徑是相匹配的向外層返回。
(3). 地址映射寄存器地區 從虛擬位址空間到線性地址空間的映射由GDT和LDT確定,與特定任務相關的部分由LDT確定,而LDT又由LDTR確定。如果採用分頁機制,那麼由線性地址空間到物理地址空間的映射由包含頁目錄表起始物理地址的控制寄存器CR3確定。所以,與特定任務相關的虛擬位址空間到物理地址空間的映射由LDTR和CR3確定。顯然,隨著任務的切換,地址映射關係也要切換。 [Page] TSS的地址映射寄存器地區由位於位移1CH處的雙字欄位(CR3)和位於位移60H處的字欄位(LDTR)組成。在任務切換時,處理器自動從要執行任務的TSS中取出這兩個欄位,分別裝入到寄存器CR3和LDTR。這樣就改變了虛擬位址空間到物理地址空間的映射。 但是,在任務切換時,處理器並不把換出任務但是的寄存器CR3和LDTR的內容儲存到TSS中的地址映射寄存器地區。事實上,處理器也從來不向該地區自動寫入。因此,如果程式改變了LDTR或CR3,那麼必須把新值人為地儲存到TSS中的地址映射寄存器地區相應欄位中。可以通過別名技術實現此功能。
(4). 連結欄位 連結欄位安排在TSS內位移0開始的雙字中,其高16位未用。在起連結作用時,地16位儲存前一任務的TSS描述符的選擇子。 如果當前的任務由段間調用指令CALL或中斷/異常而啟用,那麼連結欄位儲存被掛起任務的 TSS的選擇子,並且標誌寄存器EFLAGS中的NT位被置1,使連結欄位有效。在返回時,由於NT標誌位為1,返回指令RET或中斷返回指令IRET將使得控制沿連結欄位所指恢複到鏈上的前一個任務。
(5). 其它欄位 為了實現輸入/輸出保護,要使用I/O許可位元影像。任務使用的I/O許可位元影像也存放在TSS中,作為TSS的擴充部分。在TSS內位移66H處的字用於存放I/O許可位元影像在TSS內的位移(從TSS開頭開始計算)。關於I/O許可位元影像的作用,以後的文章中將會詳細介紹。 在TSS內位移64H處的字是為任務提供的特別屬性。在80386中,只定義了一種屬性,即調試陷阱。該屬性是字的最低位,用T表示。該字的其它位置被保留,必須被置為0。在發生任務切換時,如果進入任務的T位為1,那麼在任務切換完成之後,新任務的第一條指令執行之前產生調試陷阱。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.