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

简介:  1终端 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进 程的控制终端(ControllingTerminal),在讲进程时讲过,控制终端是保存在PCB中的信 息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准


1终端

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

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

息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输入、标准输出和标准错误输出都指向控制终端,进程从标准输入读也就是读用户的键盘输入,进程往标准输出或标准错误输出写也就是输出到显示器上。信号中还讲过,在控制终端输入一些特殊的控制键可以给前台进程发信号,例如Ctrl-C表示SIGINTCtrl-\表示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月前
|
存储 安全 网络安全
网络设备的部署(串行与并行)
网络设备的部署(串行与并行)
25 4
|
1月前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
28 0
|
1月前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
|
3天前
|
监控 网络协议 安全
认识网络设备
认识网络设备
|
13天前
|
存储
【基础计算机网络2】物理层——物理层设备
【基础计算机网络2】物理层——物理层设备
|
18天前
|
数据采集 存储 C++
单线程 vs 多进程:Python网络爬虫效率对比
本文探讨了Python网络爬虫中的单线程与多进程应用。单线程爬虫实现简单,但处理速度慢,无法充分利用多核CPU。而多进程爬虫通过并行处理提高效率,更适合现代多核架构。代码示例展示了如何使用代理IP实现单线程和多进程爬虫,显示了多进程在效率上的优势。实际使用时还需考虑代理稳定性和反爬策略。
单线程 vs 多进程:Python网络爬虫效率对比
|
1月前
|
网络虚拟化 数据安全/隐私保护 网络架构
无线网络管理设备
无线网络管理设备
28 3
|
1月前
|
网络协议 网络安全 数据库
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
15 0
|
1月前
|
安全 网络安全 数据库
LabVIEW NI网络设备在MAX中不显示或未识别
LabVIEW NI网络设备在MAX中不显示或未识别
29 4
|
1月前
|
存储 Shell 网络安全