Chinaunix首页 | 论坛 | 博客
  • 博客访问: 773052
  • 博文数量: 215
  • 博客积分: 291
  • 博客等级: 二等列兵
  • 技术积分: 1031
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-12 18:17
文章分类

全部博文(215)

文章存档

2016年(16)

2015年(16)

2014年(123)

2013年(60)

分类: LINUX

2014-05-05 09:53:07

tty是一类char设备的通称,它们有相同的特性,比如对^C的处理,驱动使用tty_register_driver注册一个tty。

/dev/console是一个虚拟的tty,它映射到真正的tty上,如何映射等会再说。

console有多种含义,这里特指printk输出的设备,驱动使用register_console注册一个console。最后一个注册的conole称为prefer console,init进程的stdin, stdout和stderr都是这个conole

console和tty有很大区别:console是个只输出的设备,功能很简单,只能在内核中访问;tty是char设备,可以被用户程序访问。

实际的驱动比如串口对一个物理设备会注册两次,一个是tty,一个是console,并通过在console的结构中记录tty的主次设备号建立了联系。

在 内核中,tty和console都可以注册多个。当内核命令行上指定console=ttyS0之类的参数时,首先确定了printk实际使用那个 console作为输出,其次由于console和tty之间的对应关系,打开/dev/console时,就会映射到相应的tty上。用一句话说: /dev/console将映射到默认console对应的tty上。

顺便说一句,console=ttyS0和/dev/ttyS0包含相同的设备名字完全是巧合,不同也没事。
============================================================================

控制台是什么?

我们经常说的控制台,就是指控制台终端(/dev/ttyn, console,在UNIX系统中计算机显示器就叫做控制台终端)。通常pc,显示器和键盘构成控制台。

并且控制台终端与一些设备特殊文件关联:tty0、tty1、tty2。。。ttyn

通常情况下/dev/console与tty0关联。

 

ttyn:

ttyn是虚拟终端。有tty1-tty6,通过CTRL+ALT+【F1-F6】转换。开始登陆时,默认登陆的是tty1.

在ubuntu中,虚拟终端有tty1-tty63

tty是控制终端,tty是表示当前tty设备。登陆的控制终端为tty,映射到实际的虚拟终端设备。如tty1、tty2等。

在命令行模式下,是映射到虚拟终端。在图形界面下,被映射到/dev/pts伪终端上。如/dev/pts/0、/dev/pts/1等。

tty0是虚拟终端的别名,无论使用哪个虚拟终端,系统产生的信息都会发到控制终端(即控制台)上。所以能在显示器上看到不同虚拟终端的信息。

echo "test tty" > tty

在当前的终端显示结果如下:

test tty

tty命令,可以查看当前的控制台或虚拟终端,如果在x-window下面使用,查看到的是伪终端设备。

 

/dev/ttyS* 是串行终端设备

 

/dev/pty* 伪终端,逻辑上的终端设备。 用途:telnet远程登陆。假设通过/dev/ptym3方式,自动创建/dev/pts/3。

/dev/ptym是pty的主设备(master),/dev/pts 是pty的从设备(slave)。向pty主设备写的数据,作为pty从设备的输入,向pty从设备写的数据,作为pty主设备的输入。从而,伪终端就像双向管道一样。

telnet应用程序 —— /dev/pts/3 ——/dev/ptym3—— GETTY

注意:/dev/pts/ 是devpts文件系统(伪文件系统),并不是设备文件系统(devfs)

阅读(2839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~