Linux学习-伪文件(设备文件,命名管道,proc文件)

伪文件

不用来存储数据,本身不占用任何空间。是文件系统的一部分,并按目录进行组织。

目的:提供一种服务,采取和常规文件相同的访问方式进行访问。

多数情况下,伪文件用来访问内核(操作系统的核心部分)提供的服务。

类型:设备文件,命名管道,proc文件

设备文件:也称特殊文件,是物理设备的内部表示,包括计算机和网络中的每个设备都可以当作特殊文件来访问。如键盘,显示器,打印机,磁盘驱动器。

命名管道:管道功能的一个扩展,经一个程序的输出连接到另一个程序的输入上。

proc文件:运行访问内核中的信息。


设备文件

表示物理设备的伪文件。

所有连接到计算机上的设备都通过设备文件访问。

所有的设备文件存放在/dev目录中。

设备文件分为3类:硬件,终端,伪设备

硬件
/dev/fd0 软盘
/dev/hda 硬盘
/dev/hda1 硬盘:第1分区
/dev/sda SCSI或SATA硬盘驱动器
/dev/sda1 SCSI或SATA硬盘驱动器:第1分区
/dev/sda1 USB闪存卡
/dev/lp0 打印机
/dev/usb/lp0 USB打印机

设备后的数字指的是一个具体的设备,dev/fd0指第一个软盘驱动器(计算机程序通常从0开始计数)

硬盘的处理有些不同,/dev/hda指第一个硬盘,/dev/hdb指第二个硬盘。

硬盘还被划分为一个或多个分区,分区可以作为单独的设备,/dev/hda1指第一个硬盘的第一个分区(分区的计数从1开始)

SCSI和SATA硬盘驱动器拥有自己的名称,/dev/sda指第一个SCSI或SATA硬盘驱动器,分区命名同上。

USB闪存被视为一个可移除的SCSI硬盘。

总之,有分区的先以a,b……命名后缀,然后从1,2……命名分区后缀。没有分区的以0,1……命名后缀。

终端
/dev/tty 当前终端
/dev/tty1 控制台/虚拟控制台
/dev/pts/0 伪终端
/dev/ttyp0 伪终端

以前,终端是连接到主机计算机的独立物理设备。现在终端充当硬件设备。

为了方便起见,当前终端用/dev/tty表示。

当以单用户模式运行Linux时,键盘和显示器充当内置的基于文本的终端,表示这个终端的特殊文件为/dev/tty1。

同样,在桌面环境中使用虚拟控制台时,它也充当一个实际终端。

默认情况下,Linux支持6个这样的控制台,分别由/dev/tty1到/dev/tty6命名。

当在窗口中使用GUI(图形用户界面)运行终端仿真程序时,是创建伪终端来模拟终端。

伪设备
/dev/null 放弃输出,输入不返回内容(eof)
/dev/zero 放弃输出,输入返回null(0)
/dev/random 随机数生成器
/dev/urandom 随机数生成器

伪设备是一个充当输入源或输出目标的文件,并不对应实际设备。

/dev/null也被称为黑洞,输入的数据消失,读取不返回任何东西。

/dev/zero输入的数据消失,但是从/dev/zero中读取数据时,文件生成和请求一样多的字符0(数字0被认为是null字符)。

当需要清除文件或整个磁盘的内容,可以用null字符覆盖已有的数据。(这才是真正的清空,不可能再找回数据)。

/dev/random用来生成随机数,经收集到的“环境噪音”存储到一个“熵池”中,使用“熵池”中的数据位生成随机数,如果熵池被耗尽,那么暂停等待填充,这样就可能会出现延迟。

/dev/urandom与/dev/random相似,但是永远不会停止生成随机数,如果熵池短缺,则重用旧的数据位。

理论上,使用/dev/urandom随机数可能会有一点安全问题,但是其实很难会有。


命名管道

命名管道是常规管道的扩展。

管道:将一个进程的输出连接到另一个进程的输入。

匿名管道:管道没有具体的名称,自动创建,且仅当两个进程正在运行时它才存在。

命名管道:必须显式地创建,当两个进程结束时,命令管道不会消失。除非删除它,不然会一直存在。

通常将命名管道称为FIFO(first-in,first-out),即数据结构中的队列。

mkfifo 可以创建一个管道。

通常使用它来进行进程间通信。

在一个进程中将数据重定向到命名管道中,另一个进程中从命名管道中读取数据。


proc文件

提供一种简单的途径来检查多种类型的系统文件的伪文件。

直接从内核获取信息,而不是使用复杂的程序搜出数据。

所有的proc文件都存放在/proc目录中。

在这个目录中,不同的文件包含不同内核信息,并且系统中每个进程对应一个子目录,名称为进程ID。

proc文件
/proc/xxx/ 进程#xxx
/proc/cmdline 内核选项
/proc/cpuinfo 处理器
/proc/devices 设备
/proc/diskstats 逻辑磁盘设备
/proc/filesystems 文件系统
/proc/meminfo 内存管理
/proc/modules 内核模块
/proc/mounts 已挂载设备,挂载点
/proc/partitions 磁盘分区
/proc/scsi SCSI和RAID设备
/proc/swaps 交换分区
/proc/uptime 内核运行时间(秒),内核空闲时间(秒)
/proc/version 内核版本,分发,gcc编辑器(用来构建内核)
/proc/kcore 计算机的实际物理内存
在大多数情况下,proc文件只由那些需要内核的高度技术化信息的程序使用。






猜你喜欢

转载自blog.csdn.net/qq_31730735/article/details/80527449
今日推荐