虛擬控制台的切換過程

2021-05-02 12:19:35 字數 900 閱讀 6824

1.虛擬終端的切換在控制台軟中斷中執行,當按"alt f1" 時,鍵盤中斷設定變數want_console為0,然後激發控制台軟中斷(console_softint),如果請求的控制台存在並且不等於當前控制台,這時呼叫change_console(want_console)切換控制台。

2.當前控制台就是直接操作物理螢幕的控制台,用fg_console變數指示。控制台的切換就是物理螢幕在虛擬控制台之間的切換,與cpu在程序之間的切換有些類似,當前物理顯示屏的內容被儲存在當前控制台的區域性螢幕緩衝區之中,新控制台成為當前控制台,新當前控制台的區域性螢幕被恢復到物理螢幕。當輸出到背景控制台時, 文字被緩衝在該控制台的區域性螢幕緩衝區中。

3.當應用程式在某個虛擬控制台中使顯示裝置處於圖形狀態時,核心無法正常切換到另一文字控制台,這時可以用kdsetmode ioctl將控制台設定為kd_graphics狀態,這樣可防止控制台輸出和切換操作。為了在圖形狀態下也能切換控制台,可以採用程序螢幕切換機制(vt_process)。當某個控制台被某個程序設定為vt_process模式時,當離開該控制台時, 核心向該程序生成"釋放"訊號(relsig),當進入該控制台時,核心向該程序傳送"獲得"訊號(acqsig)。該資訊由vt_mode結構描述,用vt_setmode ioctl設定。

4.對於x視窗來說,x伺服器啟動時切換到第乙個未分配的控制台來使用顯示器,當離開該控制台時,核心在x伺服器中產生訊號,x伺服器將顯示器恢復為文字狀態,然後向核心發出"顯示器已釋放"(vt_reldisp)裝置控制訊息,核心再接著將顯示器切換到新的控制台。反之,當從文字控制台進入x視窗的圖形控制台時,核心儲存當前文字控制台的螢幕現場後向x伺服器發出訊號,x伺服器再將螢幕恢復到圖形狀態。

drivers/char/vt.c

driver/char/console.c

driver/video/vgacon.c

沒有控制台視窗的控制台程式

include include pragma comment linker,subsystem windows entry maincrtstartup int main int argc,char argv 編譯後執行程式會彈出乙個訊息框,而沒有背後的控制台視窗。再看看下面的 include in...

09排程的時時機 切換 過程

排程的時機 切換 過程 程序排程和切換程式是作業系統核心程式 1 現代作業系統中,不能進行程序的排程與切換的情況有以下 1.1 在處理中斷過程中 中斷處理過程複雜,很難做到程序切換,而中斷處理屬於系統工作一部分,邏輯上不屬於某乙個程序 1.2 程序在作業系統核心程式臨界區 進入臨界區後,需要獨佔式訪...

使用noVNC連線虛擬機器控制台

最近在做乙個kvm的虛擬機器管理 需要在網頁中顯示虛擬機器控制台。自然選到了novnc。簡單使用 命令列執行 utils launch.sh vnc 127.0.0.1 5900 在瀏覽器中訪問 可以進入對應的虛擬機器控制台 然後執行 utils launch.sh cert self.pem vn...