你知道 Linux 中的主机、控制台和终端的起源么?
如果你见过一些台式机,那么它们大多是下图这样的。键盘、显示器、机箱可以分开。哪怕机箱和使用者不在一个房间,只要线路连通,还是可以使用电脑的。在早期,机箱和键盘、显示器确实是分开的。
图 1 一种台式机
在 UNIX 诞生之初,计算机的价格非常昂贵。当时还没有个人计算机,大多数计算机都是大型、昂贵、不稳定的机器,必须存放在湿度和温度可控的环境中。贝尔实验室的 Thompson 开始寻找小并且便宜的计算机。那时大多数计算机需要 100,000 美元,1970 年他和同事们得到了一台 PDP-11,当时需要 10,800 美元。在数个月之内,他们将 UNIX 移植到了这台计算机内。但是 PDP-11 一次只能运行一个程序,于是他们修改了 UNIX 系统,使它能够一次运行多个程序,直到 1973 年这一目标才得以实现。
从上图中可以看出,PDP-11 机身上有很多按钮,这个操作面板被称为控制台。控制台与主机紧密结合并且无法远程操作,很多操作需要通过控制台完成(比如启动过程中遇到的问题),因为只用当主机启动并且网络连接正常后才能连接终端。由于大型计算机的价格十分昂贵,Thompson 和他的同事们希望 UNIX 能够称为一个多任务(即同时运行多个程序)、多用户系统。在那个年代,计算机还没有独立的键盘,而且由于其昂贵的价格,无法每人都拥有一台计算机。
Thompson 决定使用一种便宜的电传打字机:Teletype。
相当原始,除了电源外,一切都是机械的。
下面这样设想一下,如果好多个用户都各自有一台自己的 Teletype,而“机房”(当时叫“玻璃屋”,因为当时很多公司通过玻璃墙来展示昂贵的大型计算机)中有一台昂贵的大型计算机 PDP-11,这台计算机上运行着可以多用户登录的 UNIX,这样,每个用户都可以通过使用便宜(相对于大型计算机)的 Teletype 来访问大型计算机,相当于每个用户都通过便宜的价格拥有了一台计算机。是的,当时 Thompson 也是这样想的,并且最终实现。
大型计算机 PDP-11 被叫做主机,而用户的 Teletype 也被叫做终端(原指电线的末端)。因为主机和终端是分开的,所以不管是更换主机,还是用户更换终端都是互相独立的,主机和终端可以随着科技浪潮一直发展下去。粗略的说:计算机=主机+终端;终端=输入设备+输出设备。在这个例子中,计算机=PDP-11+电传打字机;而 Teletype=输入设备(键盘)+输出设备(纸)。
下来考虑这样一种情况,如果有多台主机放在机房里,同时有多台终端使用这些主机,那么怎么连接他们呢?这就要用到终端服务器了。终端服务器连接主机和终端,只用用户输入需要访问的主机,终端服务器就会建立他们之间的连接。如下图。
图 5 终端服务器
以上,就是 Linux 中主机、控制台和终端的由来。
题图:Ken Thompson(坐)、Dennis Ritchie(站) 与 PDP-11 和 Teletype 33-ASR,出处不可考。