一 控制台和终端的历史遗留区别
(一) 终端
1大家都知道,最初的计算机由于价格昂贵,因此,一台计算机一般是由多个人同时使用的。
2一台计算机需要连接上许多套键盘和显示器来供多个人使用。
3在以前,专门有这种可以连上一台电脑的设备,只有显示器和键盘,还有简单的处理电路,本身不具有处理计算机信息的能力,他是负责连接到一台正常的计算机上(通常是通过串口) ,然后登陆计算机,并对该计算机进行操作。
4 一台只有显示器和键盘能够通过串口连接到计算机的设备就叫做终端,是通过电缆、网络等等和主机连接的设备。
(二) 控制台
1控制台,就是一个直接控制设备的台面。
2 计算机里,把那套直接连接在电脑上的键盘和显示器就叫做控制台,是直接和计算机相连接的原生设备。
注意:和终端的区别,终端是通过串口连接上的,不是计算机本身就有的设备,而控制台是计算机本身就有的设备,一个计算机只有一个控制台。
3 控制台也有终端一样的功能,控制台有时候也被模糊的统称为终端。
4 计算机启动的时候,所有的信息都会显示到控制台上,而不会显示到终端上。
5与终端不相关的信息,比如内核消息,后台服务消息,都可以显示到控制台上,但不会显示到终端上。
二 现在的控制台和终端
1由于计算机硬件越来越便宜,通常都是一个人独占一台计算机操作,不再连接以前那种真正意义上的“终端设备了”。
2 终端和控制台的概念也慢慢演化了。终端和控制台由硬件的概念,演化成了软件的概念。
3现在说的终端,比如linux中的虚拟终端,都是软件的概念,他用计算机的软件来模拟以前硬件的方式。
4能直接显示系统消息的那个终端称为控制台,其他的则称为终端。
注意:但是在linux系统中,这个概念也已经模糊化了。
5 echo "hello,world" > /dev/console
这条命令的目的是将"hello,world"显示到控制台上,/dev/console是控制台设备的设备名。在linux中,在字符模式下,你无论在哪个虚拟终端下执行这条命令,字符hello,world都会显示在当前的虚拟终端下。也就是说,linux把当前的终端当作控制台来看待。
控制台和终端的概念也慢慢谈化
三 /dev/console
1 /dev/console是控制台设备的设备名。
2 在所有终端中,可以指定某一个终端作为控制台,用dev/console这个设备名字,可以代表和找到那个用于控制台的终端。
3 /dev/console始终需要一个实际的东西,这是在系统管理中配置的。每个UNIX系统都会有一个指定的终端或显示屏用来接受控制台消息。
在过去,他可能是一台专用的打印终端;在现代的linux上,它通常是活跃的虚拟控制台;在X窗口系统中,他会是屏幕上一个特殊的控制台窗口。
例如:你将/dev/console和/dev/tty0联系起来,那么,系统的监控消息和显示给用户的消息都会打印在你的屏幕上,无论你转到哪个tty。
注意:tty0则是当前所使用虚拟终端的一个别名。
例如:如果你在写某个应用程序的时候,需要将程序中某些异常情况报告给系统管理员,你可以简单地open(/dev/console, ..),然后将消息write()到这个fd,那么系统管理员就可以看见这条消息。如果你在写一个telnet程序,你发现了有人在攻击你的系统,你就可以用这种方式通知系统管理员,并不一定要显示在用户终端上,因为,用户不能处理这种情况,知道了也没有什么意义。
四 /dev/tty
1 进程控制终端
顾名思义,即控制进程运行的终端(从这个终端向主机提交进程,同时,进程会讲一些信息显示到这个终端上来)。--------个人理解,如有错误,哎,也没招!
2 /dev/tty是当前进程控制终端的别名(逻辑设备),
3 如果当前进程有控制终,那么/dev/tty就是当前进程的控制终端的设备特殊文件。
4可以使用命令”ps -ax”来查看进程与哪个控制终端相连。
5用命令”tty”可以查看它具体对应哪个实际终端设备。
6它并不指任何物理意义上的终端,/dev/tty有些类似于到实际所使用终端设备的一个联接。
注意:在windows中,你会发现它映射为伪终端。 伪终端(/dev/pty/)这个是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。