x86 的 TSS 任務切換機制

2021-07-05 01:34:19 字數 958 閱讀 3935

**:

寫在前面

5.7.1、 tss 提供的程序切換機制

5.7.1.1、 三個元素構成 tss 環境:

2、 tss selector 以及 tr(task register)暫存器

3、 tss 塊(task status segment)

5.7.1.2、 tss 機制的建立

下面的指令用來建立初始的 tss segment:

5.7.1.3、 tss 程序切換的過程

(6)processor 從當前的 tss segment 取出新程序的執行環境,包括:各個 selector registers(segment registers)、gprs、stack pointer (ss & sp)、cr3 暫存器以及 eflags 暫存器等。

在這一步,在載入 selectors 進入 segment registers 之前,還必須經過相關的 selector & descriptor 的常規檢查以及許可權檢查。通過之後才真正載入。否則同樣產生 #gp 異常。

(7)processor 從當前的 cs:rip 繼續往下執行,完成這個 tss 程序的切換。這個 cs: rip 就是新載入的新程序的 cs : rip

從上面的過程可以看出,使用 tss 程序切換機制異常複雜,導致程序切換的效能太差了。比使用 call gate 以及 trap gate 慢上好多。若當中發生許可權的改變,還要發生 stack 切換。

程序的返回同樣複雜。同樣需要這麼多步驟,總結來說,主要的時間消耗發生在新舊程序的資訊儲存方面。

實際上:

最後需注意:

5.7.1.4、 tss 程序的返回

x86 的 TSS 任務切換機制

寫在前面 5.7.1 tss 提供的程序切換機制 5.7.1.1 三個元素構成 tss 環境 tss selector 以及 tr task register 暫存器 tss 塊 task status segment 5.7.1.2 tss 機制的建立 下面的指令用來建立初始的 tss segme...

x86中的分頁機制

分頁單元 page unit 把線性位址轉化成實體地址.為了效率,線性位址分成固定長度的組,該單元成為頁,頁內部連續的線性位址被對映到連續的實體地址.頁框 分頁單元把ram分成固定長度的頁框,頁框是乙個儲存區域,與頁長度相同 頁是資料塊,頁框是儲存區域,所以頁可以放到頁框和磁碟中.線性位址到實體地址...

ARM和x86的區別

cpu的指令集從主流的體系結構上分為精簡指令集 risc 和複雜指令集 cisc 嵌入式系統中的主流處理器 arm處理器,所使用的就是精簡指令集。而桌面領域的處理器大部分使用的是複雜指令集,比如intel的x86系列處理器。我們把arm處理器所使用的指令集稱為arm指令集,把x86處理器所使用的指令...