1终端

在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进

程的控制终端(ControllingTerminal),在讲进程时讲过,控制终端是保存在PCB中的信

息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输出到显示器上。信号中还讲过,在控制终端输入一些特殊的控制键可以给前台进程发信号,例如Ctrl-C表示SIGINT,Ctrl-\表示SIGQUIT。

init-->fork-->exec-->getty-->用户输入帐号-->login-->输入密码-->exec-->shell

文件与I/O中讲过,每个进程都可以通过一个特殊的设备文件/dev/tty访问它的控制终

端。事实上每个终端设备都对应一个不同的设备文件,/dev/tty提供了一个通用的接口,一

个进程要访问它的控制终端既可以通过/dev/tty也可以通过该终端设备所对应的设备文件来

访问。ttyname函数可以由文件描述符查出对应的文件名,该文件描述符必须指向一个终端

设备而不能是任意文件。下面我们通过实验看一下各种不同的终端所对应的设备文件名。

硬件驱动程序负责读写实际的硬件设备,比如从键盘读入字符和把字符输出到显示器,

线路规程像一个过滤器,对于某些特殊字符并不是让它直接通过,而是做特殊处理,比如在

键盘上按下Ctrl-Z,对应的字符并不会被用户程序的read读到,而是被线路规程截获,解释

图:1终端设备模块

成SIGTSTP信号发给前台进程,通常会使该进程停止。线路规程应该过滤哪些字符和做哪些

特殊处理是可以配置的。

2网络终端

虚拟终端或串口终端的数目是有限的,虚拟终端(字符控制终端)一般就是/dev/tty1_/

dev/tty6六个,串口终端的数目也不超过串口的数目。然而网络终端或图形终端窗口的数目

却是不受限制的,这是通过伪终端(Pseudo TTY)实现的。一套伪终端由一个主设备(PTY

Master)和一个从设备(PTY Slave)组成。主设备在概念上相当于键盘和显示器,只不过

它不是真正的硬件而是一个内核模块,操作它的也不是用户而是另外一个进程。从设备和上

面介绍的/dev/tty1这样的终端设备模块类似,只不过它的底层驱动程序不是访问硬件而是

访问主设备。网络终端或图形终端窗口的Shell进程以及它启动的其它进程都会认为自己的

控制终端是伪终端从设备,例如/dev/pts/0、/dev/pts/1等。下面以telnet为例说明网络登

录和使用伪终端的过程。

图:2网络终端

如果telnet客户端和服务器之间的网络延迟较大,我们会观察到按下一个键之后要过几秒钟才能回显到屏幕上。这说明我们每按一个键telnet客户端都会立刻把该字符发送给服务

器,然后这个字符经过伪终端主设备和从设备之后被Shell进程读取,同时回显到伪终端从

设备,回显的字符再经过伪终端主设备、telnetd服务器和网络发回给telnet客户端,显示

给用户看。也许你会觉得吃惊,但真的是这样:每按一个键都要在网络上走个来回!

1.进程间的关系:终端,网络设备相关推荐

  1. Linux 服务器程序规范、服务器日志、用户、进程间的关系

    文章目录 服务器程序规范 日志 rsyslogd 守护进程 syslog函数 openlog函数 setlogmask函数 closelog函数 用户 进程间的关系 进程组 会话 系统资源限制 改变工 ...

  2. 运行中的Nginx进程间的关系

    第2章 Nginx的配置 Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块时,仅仅需要增加.修改一些配置项即可.因此,本章的目的是熟悉 ...

  3. Linux命令之pstree - 以树状图显示进程间的关系

    2019独角兽企业重金招聘Python工程师标准>>> pstree命令以树状图显示进程间的关系(display a tree of processes).ps命令可以显示当前正在运 ...

  4. [Linux] Linux命令之pstree - 以树状图显示进程间的关系

    转载自: http://codingstandards.iteye.com/blog/842156 pstree命令以树状图显示进程间的关系(display a tree of processes). ...

  5. ngin进程间的关系

    nginx的进程数量可以通过配置文件来部署,在正式的生产环境中,nginx通常使用一个master进程来管理多个worker进程,一般情况下worker进程的数量等于服务器cpu的核心数.在这种情况下 ...

  6. Linux进程全解9——进程状态、system函数、进程间的关系

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.进程的5种状态 (1)就绪态 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行. (2)运行态 就 ...

  7. 如何保证进程间同步工作_系统设计硬核知识(2)——操作系统的进程管理

    操作系统基本原理包含以下 5 大管理. 我们先来说说进程管理. 因为处理机是计算机系统的核心资源,所以整个操作系统的重心是处理机管理. 处理机管理中最基本的.最重要的概念是进程.进程是系统并发执行的体 ...

  8. 操作系统——进程管理(一文弄懂进程间的那些事)

    进程管理 进程 进程的概念 PCB 进程的组成 进程的特征 进程的状态与转换 进程的状态 进程间的转换 进程的组织方式 链接方式 索引方式 进程控制 怎么实现进程控制--原语 进程的创建 进程的终止 ...

  9. 什么是管道?(详解进程间是如何通过管道通信的)

    引言: 我们都知道,进程运行时是具有独立性的,要让两个进程进行通信是一件很困难的事情.因此两个进程通信的前提条件是,需要让两个进程看到同一份资源(物理内存). 进程通信分类 管道: 1.匿名管道pip ...

最新文章

  1. 【网络安全】HTB靶机渗透系列之Sniper
  2. 【机器视觉】Qt联合Halcon编程之显示图片
  3. SAP Spartacus CmsService的CmsActions.LoadCmsComponent
  4. python安装多久_(一)安装Python
  5. 聚类时需要标准化吗_收房时,需要请专业验房师吗?
  6. WinCE-多功能控件之无闪烁时间显示
  7. 如何批量把照片设置统一尺寸?
  8. 英伟达驱动更新记录_英伟达更新驱动最好的方式 - 卡饭网
  9. 朱有鹏嵌入式linux网盘,朱有鹏嵌入式单片机免费课程
  10. python写邮箱系统登录_Python selenium登录163邮箱示例
  11. [OpenCV实战]23 使用OpenCV获取高动态范围成像HDR
  12. 数据敏捷,HTAP数据库既决效率又决生死
  13. iOS weak关键字实现原理
  14. 全基因组选择-GS的技术评估
  15. VirtualAPK 报错: Failed to notify project evaluation listener. > SDK location not found. Define locati
  16. win10自带计算器闪退的解决办法
  17. JS实现手机号码以及姓名的脱敏处理
  18. 交换机学习之划VLAN
  19. Java简单项目:公司人员管理系统
  20. 百度地图坐标点轨迹画线php,百度地图绘制轨迹点

热门文章

  1. tomcat的基本使用
  2. Spring Boot 整合 Swagger
  3. wxWidgets:wxFontPickerCtrl类用法
  4. wxWidgets:wxAnyValueType类用法
  5. boost::msm::mpl_graph::incidence_list_graph相关的测试程序
  6. GDCM:gdcm::DirectionCosines的测试程序
  7. Boost:双图bimap与lambda表达式的测试程序
  8. DCMTK:父元素处理的测试程序
  9. VTK:Rendering之Cone4
  10. OpenCV平滑图像Smoothing Images