精华内容
下载资源
问答
  • /dev/tty设备 这个设备表示的是控制终端,如果当前的shell登录环境有关联控制终端,那么执行它就可以看到回显。 echo test > /dev/tty 它其实是一个当前控制终端的一个别名,实际控制终端可以是伪终端(/dev/pts/...

    /dev/tty设备

    这个设备表示的是控制终端,如果当前的shell登录环境有关联控制终端,那么执行它就可以看到回显。
    echo test > /dev/tty
    它其实是一个当前控制终端的一个别名,实际控制终端可以是伪终端(/dev/pts/x),也可以是虚拟控制台(/dev/ttyx)。/dev/tty有些类似于到实际所使用终端设备的一个链接

    /dev/tty0设备

    tty0表示的是当前虚拟控制台的一个别名,而实际的虚拟控制台是tty1…ttyn。
    其中tty1和tty2为X窗口系统,其余为虚拟字符终端。

    /dev/console设备

    这个设备表示的是系统控制台,主要用于接收系统message的,系统消息一般不会被发送到tty上,而是发送给console设备上,当然我们可以配置console为一个tty,这样系统消息就会被发送到一个tty终端上,通过cmdline指定console=tty0,此时/dev/console相当于是/dev/tty0的一个别名。同样我们也可以指定它为一个串口设备,通过设定console=/dev/ttyS1进行指定,此时/dev/console相当于是/dev/ttyS1的一个别名。

    展开全文
  • 此仓库有两个脚本:一个用于启动在后台运行的ffmpeg实例,以捕获tty显示屏和内部麦克风作为音频; 另一个用于停止此过程,因为它在后台运行。 用法 要开始流式传输,请在bash提示符下键入以下内容: $ ttygrab ...
  • linux中的tty,控制台,虚拟终端,串口,console(控制台终端)详解和区别 首先: 1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,终端为主机提供了人机接口,...

    linux中的tty,控制台,虚拟终端,串口,console(控制台终端)详解和区别

    首先:

    1。终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念.
    一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种.
    控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.
    话回到个人计算机上,个人计算机只有控制台,没有终端. 当然愿意的话, 可以在串口上连一两台字符哑终端. 但是Linux偏要按POSIX标准把个人计算机当成小型机来用,
    那么就在控制台上通过getty软件虚拟了六个字符哑终端(或者叫控制台终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图型终端, 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟字符哑终端(pts/0....). 记住,这全是虚拟的,用起来一样,但实际上并不是.
    所以在个人计算机上,只有一个实际的控制台,没有终端,所有终端都是在控制台上用软件模拟的.
    要把个人计算机当主机再通过串口或网卡外连真正的物理终端也可以,但由于真正的物理终端并不比个人计算机本身便宜,一般没有人这么做.

     

    2.如同其他UNIX类系统,Linux本身也是基于命令行的。试试“Ctrl”+“Alt”+“Fx”。这就是控制台,算是Linux的本来面目。至于使用方法,除了多出登录注销外,其它操作和我们在linux图形界面(X—window)下的终端操作是一样的,在X-Window出问题或不运行X-Window的时候,操作主要在这里完成。
      Linux在控制台下提供了不止一个(字符哑)终端,支持多用户同时登录,包括在本机同时登录。控制台“Alt”+“Fx”能够切换到第x个(字符哑)终端。如果需要从X-Window里跳到第(字符哑)终端,需要“Ctrl”+“Alt”+“Fx”。一般情况下如果要从控制台返回Xwindow可用““Alt”+7”来返回到Xwind的图形界面。(Linux发行版提供7个虚拟屏幕,1~6号是控制台终端((字符哑)终端),第7个上面跑X-Window。)

     

    3.控制终端(/dev/tty) 这是个在应用程序中的一个概念,前台进程有个控制终端,就对应这个。不过它并不指任何物理意义上的终端,其实/dev/tty会映射到当前的设备(通过tty命令可以看到),比如你如果在控制台界面下(即字符界面下)那么dev/tty就是映射到dev/tty1-6之间的一个(取决于你当前的控制台号),但是如果你现在是在图形界面(Xwindows),那么你会发现现在的/dev/tty映射到的是/dev/pts的伪终端上。比如你可以输入命令 #tty 那么将显示当前映射终端如:/dev/tty1或者/dev/pts/0等。

     

    4。伪终端(/dev/pty/)这个是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。

    伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分 
    别是/dev/pty/m3和/dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串 
    行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是 
    另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中 
    一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。 
    对于ttyp3(s3),任何设计成使用一个串行端口设备的程序都可以使用该逻辑设备。但对于使用ptyp3的 
    程序,则需要专门设计来使用ptyp3(m3)逻辑设备。 
    例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会开始连接到设 
    备ptyp2(m2)上(一个伪终端端口上)。此时一个getty程序就应该运行在对应的ttyp2(s2)端口上。当telnet从 
    远端获取了一个字符时,该字符就会通过m2、s2传递给getty程序,而getty程序就会通过s2、m2和telnet程序 
    往网络上返回”login:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。通过使用适当的 
    软件,就可以把两个甚至多个伪终端设备连接到同一个物理串行端口上。 
    在使用设备文件系统(device filesystem)之前,为了得到大量的伪终端设备特殊文件,HP-UX AIX等使用了 
    比较复杂的文件名命名方式。

     

    5.控制台终端(/dev/ttyn, /dev/console) 
    在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux), 
    并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合 
    键时,我们就可以切换到tty2、tty3等上面去。tty1 –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名, 
    系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。 
    你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以 
    向/dev/tty0进行写操作

     

    console是一个缓冲的概念,其实是为内核提供打印的。我们的pc,终端常用的是显示器和键盘构成,我们用户打印和内核打印都从这个终端反映给用户。所以,这里,/dev/console是连接到/dev/tty0的,其实这里有2个概念,console和tty这2个咚咚,怎么实现,其实console这个结构中有个device,这里其实就是tty0对应的一个虚拟终端设备。 如果,我们来个专门打印内核的设备(比如通过串口),我们把那个串口register_console,那么/dev/console就到这个串口设备了。这时,内核打印就到这个串口设备了,而用户的打印还是和上面的/dev/tty相关,如果/dev/tty对应/dev/tty0,那么用户打印还在窗口中出现。所以说/dev/console是用来外接控制台的。

     

     

    6.串行端口终端(/dev/ttySn)
    串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如,在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。可接串口来实验。

    即是相对与dos下的com1和com2等....

     总结一下:感觉概念还是比较模糊的,因为可能是时间命名的缘故吧,有很多概念都很模糊吧!

    首先:两种模式:字符模式:对应的为控制台,设备文件为/dev/tty1-6(是一个控制台终端的设备文件),而/dev/tty0则是当前终端设备文件的别名(我觉得可以说是链接吧,即tty0就是指当前的设备文件)。图形模式(Xwindow): 对应的应该是tty7,但是在Xwindow下终端(即输入命令的窗口)对应的设备文件为/dev/pts/0-(是一个伪终端设备文件)

     

    关于dev/tty其实很简单:就是当前终端设备的一个链接(有点像/dev/tty0吧,但是他好像更强大一点),我们可以做下这个实验:

    在Xwindow下打开多个终端(输入命令的窗口):#tty命令,发现在各个窗口分别显示为# dev/pts/0  #dev/pts/1  #dev/pts/2....

    然后在#dev/pts/0终端中输入echo"test">/dev/pts/0 结果显示test。然后你在#dev/pts/0终端中输入echo"test">/dev/tty, 你会发现在当前窗口也显示test字符串。也就是说dev/tty其实就是当前设备文件的一个链接。

     

    关于/dev/console  应该来说更像一个缓冲结果吧,来实现对内核的打印,比如说内核把要打印的内容装入缓冲区,然后由console来决定打印到哪里吧(比如是tty0还是串口等等吧)。所以说/dev/console是用来外接控制台的。

    展开全文
  • 1、LINUX下TTYCONSOLE、串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 2、printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者说系统在什么地方来决定是将...
    1、LINUX下TTY、CONSOLE、串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 

    2、printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者说系统在什么地方来决定是将信息送到显示器还是串口? 


    3、start_kernel中一开始就用到了printk函数(好象是printk(linux_banner什么的),在 这个时候整个内核还没跑起来呢那这时候的printk是如何被调用的?在我们的系统中,系统启动是用的现代公司的BOOTLOADER程序,后来好象跳到了LINUX下的head-armv.s, 然后跳到start_kernel,在bootloader 里串口已经是可用的了,那么在进入内核后是不是要重新设置? 


    以上问题可能问的比较乱,因为我自己脑子里也比较乱,主要还是对tty,console,serial之间的关系,特别是串口是如何被调用的没搞清这方面的资料又比较少(就情景分析中讲了一点),希望高手能指点一二,非常谢!
    我最近也在搞这方面的东西,也是写一个串口设备的驱动 
    搞了将近一个月了,其中上网找资料,看源代码,什么都做了 
    但还是一蹋糊涂的,有些问题还是不明白,希望一起讨论讨论 

    在/proc/device(没记错应该是这个文件) 
    里面有一个叫serial的驱动,其主设备号是4,次设备号是64-12X(没记错应该是这个范围) 
    大家都知道,串口的次设备号是从64开始的,串口1 /dev/ttyS0就对应次设备号64,串口2就对应65 
    问题是现在我机上只有两个串口,它注册这么多次设备号来干什么? 

    对于一个接在串口1的设备,在我注册驱动的时候 
    我是需要自己找一个主设备号呢? 
    还是就用主设备号4,次设备号从上面12X的后面选? 
    还是就用主设备号4,次设备号64? 

    在linux的内核中有一个tty层,我看好像有些串口驱动是从这里开始的 
    例如调用tty_register_driver()来注册驱动 
    就像在pci子系统里调用pci_register_driver()那样的 
    那么,用这种机制来注册的驱动, 
    它是直接对串口的端口操作呢(例如用inb(),outb()....之类的) 
    还是某些更底层的驱动接口呢? 

    这些问题缠了我很久都没解决,搞得最后不得不放弃 
    现在转向用户空间的应用程序,看能不能有些更高效的方法来实现 
    (在用户空间只能用open("/dev/ttyS0", O_RDWR)来实现了)
    另外还有,系统里已经为我们实现了串口的驱动 
    所以我们在用户空间的程序里直接open("/dev/ttyS0")就可用了 
    但是现在要写的是接在串口上的设备的驱动 
    在内核模块中可不可以包含某个头文件,然后就可以直接用串口驱动中的接口呢?
    看到你们的问题后,感觉很有典型性,因此花了点工夫看了一下,做了一些心得贴在这里,欢迎讨论并指正: 
    1、LINUX下TTY、CONSOLE、串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 
    tty和console这些概念主要是一些虚设备的概念,而串口更多的是指一个真正的设备驱动Tty实际是一类终端I/O设备的抽象,它实际上更多的是一个管理的概念,它和tty_ldisc(行规程)和tty_driver(真实设备驱动)组合在一起,目的是向上层的VFS提供一个统一的接口通过file_operations结构中的tty_ioctl可以对其进行配置 查tty_driver,你将得到n个结果,实际都是相关芯片的驱动因此,可以得到的结论是(实际情况比这复杂得多):每个描述tty设备的tty_struct在初始化时必然挂如了某个具体芯片的字符设备驱动(不一定是字符设备驱动),可以是很多,包括显卡或串口chip不知道你的ARM Soc是那一款,不过看情况你们应该用的是常见的chip,这些驱动实际上都有而console是一个缓冲的概念,它的目的有一点类似于tty实际上console不仅和tty连在一起,还和framebuffer连在一起,具体的原因看下面的键盘的中断处理过程Tty的一个子集需要使用console(典型的如主设备号4,次设备号1―64),但是要注意的是没有console的tty是存在的
    而串口则指的是tty_driver举个典型的例子: 
    分析一下键盘的中断处理过程: 
    keyboard_interrupt―>handle_kbd_event―>handle_keyboard_event―>handle_scancode 
    void handle_scancode(unsigned char scancode, int down) 

    …….. 
    tty = ttytab? ttytab[fg_console]: NULL; 
    if (tty && (!tty->driver_data)) { 
    …………… 
    tty = NULL; 

    …………. 
    schedule_console_callback(); 

    这段代码中的两个地方很值得注意,也就是除了获得tty外(通过全局量tty记录),还进行了console 回显schedule_console_callbackTty和console的关系在此已经很明了!!! 

    2、printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者说系统在什么地方来决定是将信息送到显示器还是串口? 
    具体看一下printk函数的实现就知道了,printk不一定是将信息往控制台上输出,设置kernel的启动参数可能可以打到将信息送到显示器的效果。函数前有一段英文,很有意思: 
    /*This is printk. It can be called from any context. We want it to work. 

    * We try to grab the console_sem. If we succeed, it's easy - we log the output and 
    * call the console drivers. If we fail to get the semaphore we place the output 
    * into the log buffer and return. The current holder of the console_sem will 
    * notice the new output in release_console_sem() and will send it to the 
    * consoles before releasing the semaphore. 

    * One effect of this deferred printing is that code which calls printk() and 
    * then changes console_loglevel may break. This is because console_loglevel 
    * is inspected when the actual printing occurs. 
    */ 
    这段英文的要点:要想对console进行操作,必须先要获得console_sem信号量如果获得console_sem信号量,则可以“log the output and call the console drivers”,反之,则“place the output into the log buffer and return”,实际上,在代码: 
    asmlinkage int printk(const char *fmt, ...) 

    va_list args; 
    unsigned long flags; 
    int printed_len; 
    char *p; 
    static char printk_buf[1024]; 
    static int log_level_unknown = 1; 
    if (oops_in_progress) { /*如果为1情况下,必然是系统发生crush*/ 
    /* If a crash is occurring, make sure we can't deadlock */ 
    spin_lock_init(&logbuf_lock); 
    /* And make sure that we print immediately */ 
    init_MUTEX(&console_sem); 

    /* This stops the holder of console_sem just where we want him */ 
    spin_lock_irqsave(&logbuf_lock, flags); 
    /* Emit the output into the temporary buffer */ 
    va_start(args, fmt); 
    printed_len = vsnprintf(printk_buf, sizeof(printk_buf), fmt, args);/*对传入的buffer进行处理,注意还不是 
    真正的对终端写,只是对传入的string进行格式解析*/ 
    va_end(args); 
    /*Copy the output into log_buf. If the caller didn't provide appropriate log level tags, we insert them here*/ 
    /*注释很清楚*/ 
    for (p = printk_buf; *p; p++) { 
    if (log_level_unknown) { 
    if (p[0] != '<' || p[1] < '0' || p[1] > '7' || p[2] != '>') { 
    emit_log_char('<'); 
    emit_log_char(default_message_loglevel + '0'); 
    emit_log_char('>'); 

    log_level_unknown = 0; 

    emit_log_char(*p); 
    if (*p == '\n') 
    log_level_unknown = 1; 

    if (!arch_consoles_callable()) { 
    /*On some architectures, the consoles are not usable on secondary CPUs early in the boot process.*/ 
    spin_unlock_irqrestore(&logbuf_lock, flags); 
    goto out; 

    if (!down_trylock(&console_sem)) { 
    /*We own the drivers. We can drop the spinlock and let release_console_sem() print the text*/ 
    spin_unlock_irqrestore(&logbuf_lock, flags); 
    console_may_schedule = 0; 
    release_console_sem(); 
    } else { 
    /*Someone else owns the drivers. We drop the spinlock, which allows the semaphore holder to 
    proceed and to call the console drivers with the output which we just produced.*/ 
    spin_unlock_irqrestore(&logbuf_lock, flags); 

    out: 
    return printed_len; 

    实际上printk是将format后的string放到了一个buffer中,在适当的时候再加以show,这也回答了在start_kernel中一开始就用到了printk函数的原因 

    3、start_kernel中一开始就用到了printk函数(好象是printk(linux_banner什么的),在这个时候整个内核还没跑起来呢 。那这时候的printk是如何被调用的?在我们的系统中,系统启动是用的现代公司的BOOTLOADER程序,后来好象跳到了LINUX下的head-armv.s, 然后跳到start_kernel,在bootloader 里串口已经是可用的了,那么在进入内核后是不是要重新设置? 
    Bootloader一般会做一些基本的初始化,将kernel拷贝物理空间,然后再跳到kernel去执行。可以肯定的是kernel肯定要对串口进行重新设置,原因是Bootloader有很多种,有些不一定对串口进行设置,内核不能依赖于bootloader而存在。

     
    多谢楼上大侠,分析的很精辟 。我正在看printk函数。

    我们用的CPU是hynix的hms7202。在评估板上是用串口0作 
    控制台,所有启动过程中的信息都是通过该串口送出的。 
    在bootloader中定义了函数ser_printf通过串口进行交互。

    但我还是没想明白在跳转到linux内核而console和串口尚未 
    初始化时printk是如何能够工作的?我看了start_kernel 
    的过程(并通过超级终端作了一些跟踪),console的初始化 
    是在console_init函数里,而串口的初始化实际上是在1号 
    进程里(init->do_basic_setup->do_initcalls->rs_init), 
    那么在串口没有初始化以前prink是如何工作的?特别的,在 
    start_kernel一开始就有printk(linux_banner),而这时候 
    串口和console都尚未初始化呢。
     
    1.在start_kernel一开始就有printk(linux_banner),而这时候串口和console都尚未初始化? 
    仔细分析printk可以对该问题进行解答代码中的: 
    /* Emit the output into the temporary buffer */ 
    va_start(args, fmt); 
    printed_len = vsnprintf(printk_buf, sizeof(printk_buf), fmt, args); 
    va_end(args); 
    将输入放到了printk_buf中,接下来的 
    for (p = printk_buf; *p; p++) { 
    if (log_level_unknown) { 
    if (p[0] != '<' || p[1] < '0' || p[1] > '7' || p[2] != '>') { 
    emit_log_char('<'); 
    emit_log_char(default_message_loglevel + '0'); 
    emit_log_char('>'); 

    log_level_unknown = 0; 

    emit_log_char(*p); 
    if (*p == '\n') 
    log_level_unknown = 1; 

    则将printk_buf中的内容进行解析并放到全局的log_buf(在emit_log_char函数)中if (!down_trylock(&console_sem)) { 
    /* 
    * We own the drivers. We can drop the spinlock and let 
    * release_console_sem() print the text 
    */ 
    spin_unlock_irqrestore(&logbuf_lock, flags); 
    console_may_schedule = 0; 
    release_console_sem(); 
    } else { 
    /* 
    * Someone else owns the drivers. We drop the spinlock, which 
    * allows the semaphore holder to proceed and to call the 
    * console drivers with the output which we just produced. 
    */ 
    spin_unlock_irqrestore(&logbuf_lock, flags); 

    则是根据down_trylock(&console_sem)的结果调用release_console_sem(),在release_console_sem()中才真正的对全局的log_buf中的内容相应的console设备驱动进行处理 至此,可以得到如下的一些结论: 
    (1)printk的主操作实际上还是针对一个buffer(log_buf),该buffer中的内容是否显示(或者说向终端输出),则要看是否可以获得console_sem(2)printk所在的文件为printk.c,是和体系结构无关的,因此对任何平台都一样 。 可以推测的结论是:
    (1)kernel在初始化时将console_sem标为了locked,因此在start_kernel一开始的printk(linux_banner)中实际只将输入写入了缓冲,等在串口和console初始化后,对printk的调用才一次将缓冲中的内容向串口和console输出 。 (2)在串口和console的初始化过程中,必然有对console_sem的up操作 。 
    (3)因此,在embedded的调试中,如果在console的初始化之前系统出了问题,不会有任何的输出 。 唯一可以使用的只能是led或jtag了 (4)因此,你的问题可以看出解答 2.console的初始化. 
    不知道你用的是那一个内核版本,在我看的2.4.18和2.4.19中,都是在start_kernel中就对console进行的初始化 从前面的分析来看,console的初始化不应该太晚,否则log_buf有可能溢出
    多谢楼上,分析的很精彩! 

    我们用的内核版本是2.4.18,console的初始化确实是在 
    start_kernel->console->init 关于tty和串口,我这里还想再问一下tty设备的操作的总入口 
    是 

    static struct file_operations tty_fops = { 
    llseek: no_llseek, 
    read: tty_read, 
    write: tty_write, 
    poll: tty_poll, 
    ioctl: tty_ioctl, 
    open: tty_open, 
    release: tty_release, 
    fasync: tty_fasync, 
    }; 

    而对串口的操作定义在: 

    static struct tty_driver serial_driver 这个结构中
    serial.c中的多数函数都是填充serial_driver中的函数指针
    那么在对串口操作时,应该是先调用tty_fops中的操作(比如 
    tty_open等),然后再分流到具体的串口操作(rs_open等)吧? 
    但tty_driver(对串口就是serial_driver)中有很多函数指针 
    并不跟file_operations中的函数指针对应,不知道这些对应 
    不上的操作是如何被执行的?比如put_char,flush_char,read_proc, 
    write_proc,start,stop等 。
    以下是我对这个问题的一些理解: 
    这实际上还是回到原先的老问题,即tty和tty_driver之间的关系 。从实现上看,tty_driver实际上是tty机制的实现组件之一,借用面向对象设计中的常用例子,这时的tty_driver就象是tty这部汽车的轮胎,tty这部汽车要正常运行,还要tty_ldisc(行规程),termios,甚至struct tq_struct tq_hangup(看tty_struct)等基础设施。它们之间的关系并非继承。至于tty_driver中的函数指针,再打个C++中的比喻,它们实际上很象虚函数,也就是说,可以定义它们,但并不一定实现它们实际上还不用说tty_driver,只要查一下serial_driver都会发现n多个具体的实现,但对各个具体的设备,其tty_driver中的函数不一定全部实现所以put_char,flush_char,read_proc, write_proc,start,stop这些函数的情况是有可能实现,也有可能不实现 即使被实现,也不一定为上层(VFS层)所用.
    展开全文
  • 在早期的电脑上,往往具有带有大量开关和指示灯的...一台大型主机往往需要支持许多用户同时使用,每个用户所使用操作的设备,就叫做Termial——终端,终端使用通信电缆电脑主机连接,甚至可以通过电信网络(电话、电

    在早期的电脑上,往往具有带有大量开关和指示灯的面板,可以对电脑进行一些底层的操作,这个面板就叫做Console。其概念来自于管风琴的控制台。一台电脑通常只能有一个Console,很多时候是电脑主机的一部分,和CPU共享一个机柜。

    一台大型主机往往需要支持许多用户同时使用,每个用户所使用操作的设备,就叫做Termial——终端,终端使用通信电缆与电脑主机连接,甚至可以通过电信网络(电话、电报线路等等)连接另一个城市的电脑。


    TTY是电传打字机Teletypewriter的缩写,在上图中的那种带显示屏的视频终端出现之前,TTY是最流行的终端设备。

    Shell不是硬件,而是软件,是操作系统的操作界面,Windows 3.x可以看做是DOS的Shell

    那么下面红框里的设备是Console还是Terminal?

    是Console,上面有显示寄存器状态的指示灯和直接操作寄存器的开关,而且它与电脑主机紧密结合,无法远程操作。

    展开全文
  • linux下 console ,ttytty0有什么区别!

    千次阅读 2019-05-02 11:51:22
    /dev/tty指的是当前所处的终端,输出到此的内容只会显示在当前工作的 终端显示器 上;可以使用命令”ps –ax”来 查看进程 哪个控制终端相连.对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0). 使用...
  • 在看《orange‘s,操作系统的实现》这本书的时候,第七章同时出现了ttyconsole这两个名词。我查了一些网页,但都解释不清,结合自己的思考,给出了一些理解。... console,它的作用是用来显示结果的,通常...
  • ttyconsole的区别理解

    千次阅读 2012-05-13 16:56:08
    控制台是什么? 我们经常说的控制台,就是指控制台终端(/dev/ttyn, console,在UNIX系统中计算机显示器就叫做控制台...通常情况下/dev/console与tty0关联。   ttyn: ttyn是虚拟终端。有tty1-tty6,通过CTRL+ALT
  • 终端tty终端即连接到Linux系统并对系统进行操作的具有键盘和显示器的装置;早期多个用户共用一台Linux主机时,各个用户就是通过Teletype::电传打字机连接到主机,因此使用tty来表示终端。...Console与tty的区别Console
  • Q: 计算机的书籍中,在描述终端/shell的时候,到处充斥着tty/console/shell/stdout之类的字眼,我们该如何理解它们? A: 因为历史原因, 有一些名词慢慢失去了最开始的含义,而跟着时代变迁开始有新的含义。 ...
  • Linux tty pty console区别

    千次阅读 2011-02-25 13:28:00
     tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘显示器取代,所以现在叫终端比较合适。...
  • 使用tty命令查看当前用的是哪个console显示
  • 嵌入式系统下consoletty,串口的关系

    千次阅读 2015-06-17 17:05:08
    tty driver其实就是console的低层驱动了,除了和硬件进行交互的代码可以写在这里之外,也可以自己虚拟一个tty 设备出来,配合网络模拟的远程console接口什么的。   tty是一类char设备的通称,它们有相同的特性,...
  • 原文链接:终端(terminal)、tty、shell、控制台(console)、bash之间的区别联系 1、终端(terminal) 终端(termimal)= tty(Teletypewriter, 电传打印机),作用是提供一个命令的输入输出环境,在linux下使用...
  • 初探,tty console uart的三角关系

    千次阅读 2013-07-07 22:07:49
    ,uart是tty与console的组合,有点类似于从tty与console类继承而来吧。 于是最纯粹的事tty,最复杂的事uart。 在我这边的环境下,写串口应用程序的第一件事是open /dev/ttySAC0 我想在源码中找到ttySAC0,却只...
  • A terminal is at the end of an electric wire, a shell is the home of a turtle, tty is a strange abbreviation and a console is a kind of cabinet. Well, etymologically speaking, anyway. In unix ...
  • linux下 console ,ttytty0区别!

    千次阅读 2015-01-05 20:11:34
    /dev/tty指的是当前所处的终端,输出到此的内容只会显示在当前工作的终端显示器上;可以使用命令”ps –ax”来查看进程哪个控制终端相连.对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0). 使用命令”...
  • ttyS、ttyconsole和pty

    2016-01-29 09:43:20
    第十四章 Linux终端设备驱动 本章导读 在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息...14.1节阐述了终端设备的概念及分类,14.2节给出了Linux终端设备驱动的框架结构,重点描述tty
  • 如果系统中存在多个tty设备,想象一下,这时内核启动的log应该打印在哪里,这时内核会从tty中选择一个最合适的作为console,当然内核启动参数中也可以明确的去指定那个tty作为内核的console,/dev/console主要是暴露...
  • consolettytty0等的关系

    千次阅读 2013-09-23 16:54:43
    在ubuntu 字符终端(tty1)以root用户的... echo hello > /dev/tty1, echo hello > /dev/tty均是在当前界面显示出hello(注意:如果是普通用户但是用sudo 的话,consoletty0,tty1均会提示无权限)。众所周知,t
  • 为什么想到写这个话题,其实源于客户在排查用户登录,问到用户登录相关的tty格式?有哪些,有什么区别?原以为10多年小机系统管理经验,回答应该so easy,突然发现解释起来有点乱,所以梳理了一下,分享给大家,...
  • LINUX下的tty,console与串口,终端设备

    千次阅读 2010-10-31 23:21:00
    LINUX下的tty,console与串口 <br />=============================== 节选自 http://lamp.linux.gov.cn/Linux/device_files.html<br /><br />终端设备 <br />终端(或TTY)设备是一种特殊的字符...
  • 公司作一个嵌入式产品,用ARM内核,LINUX操作系统(不是uclinux)。我最近的工作是把一个...最近刚开始学习LINUX,算是有了一些了解,但对TTY设备、CONSOLE、串口之间的关系觉得比较混乱。这里有 几个问题请教: <br /
  • TTY :: ProgressBar 灵活而可扩展的进度条,适用于终端应用程序。 TTY :: ProgressBar为工具箱提供独立的进度条组件。 产品特点 可定制从许多选项中进行选择,以获取所需的行为。 灵活。 描述条形并从许多预定义...
  • /dev/tty和/dev/console

    2019-01-31 21:25:46
    目录 1.串行端口终端(/dev/ttySn) 2.伪终端(/dev/pty/) 3.控制终端(/dev/tty)  4.控制台终端(/dev/ttyn,...(2)/dev/tty(n或者Sn)是进程控制台,如果在进程里打开一个这样的文件且该文件不是其他进程...
  • LINUX下的tty,console与串口 精彩回答

    千次阅读 2011-10-30 13:31:54
    Tty的一个子集需要使用console(典型的如主设备号4,次设备号1―64),但是要注意的是没有consoletty是存在的。 而串口则指的是tty_driver。 举个典型的例子: 分析一下键盘的中断处理过程: keyboard_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,679
精华内容 5,471
关键字:

tty与console显示