在x86中,您可以使用TSS在正在運行的進程之間切換任務,但是,建議僅使用一個TSS(如必要)並執行軟件任務切換,特別是如果要端口內核給其他沒有TSS的硬件。在x86-64(64位)中,沒有TSS(例如它在x86中沒有做任何事情),所以,如果沒有它,人們會怎麼做任務切換(因爲以前,你會用在至少有一個)?64bit中的任務切換
8
A
回答
7
你會做它,你會做其他任何平臺上以同樣的方式:你存儲相應的寄存器的內容:
- 堆棧指針
- 指令指針
- 取其常規 - 目的寄存器是適當的架構
- 需要維護的任何其他狀態(FPU/MMX/SSE寄存器等)
用於您要切換的任務,併爲要切換到的任務恢復相同。
通常這是通過將所有狀態推入您要切換的堆棧並將其從您要切換的堆棧中彈出來完成的。這樣,只有堆棧指針需要被內核傳遞或管理,才能跟蹤後臺正在等待的內容。
5
Actually, it seems there is a TSS in 64 bit mode,它只是不用於硬件上下文切換;相反,它只是用來指定內核的堆棧,以及何時發生更高權限級別的轉移。
但是,您仍然必須使用軟件上下文切換來更改不同任務之間的控制。
相關問題
- 1. 切換arraylist中的任務
- 2. Javascript:XMLHttpRequest任務切換
- 3. 驗證任務切換器在任務之間是否正確切換
- 4. ATmega芯片安全的「任務切換」
- 5. 任務的STACK_SIZE是否影響任務切換延遲
- 6. FreeRTOS任務不是上下文切換
- 7. 任務切換沒有成功
- 8. 如何將輸出從任務切換到任務
- 9. 隱藏Windows窗體(任務欄,任務切換等)
- 10. 在Rails方法中使用Shell命令切換服務/任務
- 11. 第一個任務的代碼在RTOS中切換
- 12. 如果我想修改OSX中的任務切換
- 13. 如何在Celery中的隊列之間切換任務
- 14. 在任務切換器中顯示子窗口
- 15. 將64bit .so轉換爲32bit
- 16. 自動運行rake任務,當你切換的混帳
- 17. iPhone任務切換器圖像是黑色的
- 18. 幫助上下文輕鬆切換任務的習慣
- 19. 從Rhealstone基準與pthread_yield()的任務切換時間
- 20. 關閉任務切換器中的safari中斷添加到主屏幕
- 21. iOS多任務應用程序切換器自定義圖像
- 22. 如果和Switch切換同一個任務,結果不一樣?
- 23. 切換後臺任務時發生SIGPIPE崩潰
- 24. 服務器故障切換是否有任何開放標準?
- 25. 無法爲Windows窗體應用程序切換任務
- 26. 線程池和上下文切換(任務)?
- 27. 隱藏ICS後退任務切換按鈕
- 28. 根據任務結果切換視圖swift
- 29. 切換服務活動
- 30. Silverlight - 服務配置切換