多语言展示
当前在线:1296今日阅读:19今日分享:20

如何在各个虚拟控制台之间的切换?

可能很多小伙伴们不是很清楚如何在各个虚拟控制台之间的切换?,那么具体应该怎么做呢?感兴趣的小伙伴们随小编一起看看吧!
方法/步骤
1

虚拟终端的切换在控制台软中断中运行,当按'ALT F1' 时,键盘中断设置变量want_console为0,然后激发控制台软中断(console_softint),如果请求的控制台存在并且不等于当前控制台,这时调用change_console(want_console)切换控制台。

2

当前控制台就是直接操作物理屏幕的控制台,用fg_console变量指示。控制台的切换就是物理屏幕在虚拟控制台之间的切换,与CPU在进程之间的切换有些类似

3

当前物理显示屏的内容被保存在当前控制台的局部屏幕缓冲区之中,新控制台成为当前控制台,新当前控制台的局部屏幕被恢复到物理屏幕。当输出到背景控制台时, 文本被缓冲在该控制台的局部屏幕缓冲区中。

4

当应用程序在某个虚拟控制台中使显示设备处于图形状态时,内核无法正常切换到另一文本控制台,这时可以用KDSETMODE ioctl将控制台设置为KD_GRAPHICS状态,这样可防止控制台输出和切换操作。

5

为了在图形状态下也能切换控制台,可以采用进程屏幕切换机制(VT_PROCESS)。当某个控制台被某个进程设置为VT_PROCESS模式时,当离开该控制台时, 内核向该进程生成'释放'信号(relsig),当进入该控制台时,内核向该进程发送'获得'信号(acqsig)。该信息由vt_mode结构描述,用VT_SETMODE ioctl设置。

6

对于X窗口来说,X服务器启动时切换到第一个未分配的控制台来使用显示器,当离开该控制台时,内核在X服务器中产生信号,X服务器将显示器恢复为文本状态,然后向内核发出'显示器已释放'(VT_RELDISP)设备控制消息,内核再接着将显示器切换到新的控制台。反之,当从文本控制台进入X窗口的图形控制台时,内核保存当前文本控制台的屏幕现场后向X服务器发出信号,X服务器再将屏幕恢复到图形状态。

推荐信息