**:
寫在前面
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處理器所使用的指令...