關於利用任務狀態段tss進行程序切換的一點說明:
由於在時鐘中斷裡進行任務切換,也就是用jmp指令跳轉到新的任務中去,這時的時鐘中斷是遮蔽的,但任務切換是直接進入新任務,沒有將時鐘中斷遮蔽開啟,所以造成了任務無法切換的情況,所以在對時鐘中斷任務切換程式設計時,不能簡單的跳到新任務中去,要將中斷遮蔽開啟後再跳入新任務,而當任務再次切換回來時,會繼續上次中斷時的地方繼續執行,而此時的時鐘中斷遮蔽已經開啟,不需要再次開啟了。另外一種任務切換的方法就是利用中斷返回iretd指令時切換,就是在中斷程式過程中將返回的環境變更為新的任務環境,這樣中斷返回就會直接執行新的任務。不過我不認為第二鐘方法有什麼好處!
還有就是在使用tss段進行任務切換時,對中斷的程式設計要注意,不能使用簡單的中斷重入標誌來判斷,否則其中乙個任務在中斷中,這時切換到另乙個任務中時也進入中斷,會造成已進入中斷的誤判,中斷初使工作跳過去,會造成意想不到的後果。建議在使用tss段進行任務切換就沒有必須進行中斷重入的判斷。中斷重入的工作只適合用程序表進行程序切換,因為tss任務切換後整個環境全部自動更新了,包括程序棧、系統棧、段暫存器、ldt暫存器、cr3暫存器、eflage、通過暫存器等。
TSS任務狀態段
1.什麼是tss tss全稱task state segment 是作業系統在進行程序切換時儲存程序現場資訊的段 2.tss什麼時候用,有什麼用 tss在任務 程序 切換時起著重要的作用,通過它儲存cpu中各暫存器的值,實現任務的掛起和恢復。比如說,當cpu執行a程序的時間片用完,要切換到b程序時,...
TSS 段(任務狀態段)
tss在任務切換過程中起著重要作用,通過它實現任務的掛起和恢復。所謂任務切換是指,掛起當前正在執行的任務,恢復或啟動另一任務的執行。在任務切換過程中,首先,處理器中各暫存器的當前值被自動儲存到tr所指定的tss中 然後,下一任務的tss的選擇子被裝入tr 最後,從tr所指定的tss中取出各暫存器的值...
驅動 TSS(任務段)
是一塊記憶體有104位元組,執行緒切換時填充,乙個cpu乙份,作用為替換所有暫存器,為了讓你乙個cpu執行多個任務,第乙個存的是前乙個tss,進入0環,從中取出esp0 ss0放入esp ss暫存器,倒數第8位元組存放ldt ldt存放在ldtr中,每個任務乙個ldtr區域性描述符表中 tr暫存器來...