虚拟控制台的切换过程

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值