加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

终端tty、虚拟控制台及FrameBuffer的切换过程

发布时间:2016-08-04 20:45:06 所属栏目:Unix 来源:站长网
导读:一、区分/dev/tty、/dev/console、/dev/pts、/dev/ttyn /dev/ttySn 通常我们在linux下看到的控制台(console)是由几个设备完成的。分别是/dev/ttyN.通常使用热键

1. 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服务器再将屏幕恢复到图形状态。

四、基本的读写FrameBuffer的步骤:

1 打开framebuffer设备;

2 通过ioctl取得fixed screen information;

3 通过ioctl取得variable screen information;

4 通过mmap映射设备内存到进程空间;

5 写framebuffer;

6 关闭framebuffer设备;

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读