linux中普通文件和块设备文件的区别

1,基本概念

  普通文件(Regular File)。指普通意义上的文件,如数据文件、可执行文件等。

  设备文件(Device File)。类unix操作系统都是基于文件概念的,文件是由字节序列而构成的信息载体。根据这一点,可以把IO设备当作设备文件这种所谓的特殊文件来处理;因此,与磁盘上的普通文件进行交互所用的同一系统调用可直接用于IO设备。根据设备驱动程序的基本特征,设备文件可以分为两种:块和字符。这两种硬件设备之间的差异并不容易划分,但我们至少可以假定以下的差异:[1]

  · 块设备的数据可以随机地被访问,而且从人类用户的观点看,传送任何数据块所需的时间都是较少而且是大致相同的。块设备的典型例子是硬盘、软盘[1]。块设备一般情况下是带缓冲区的。

  · 字符设备的数据或者不可以随机访问,或者可以被随机访问,但是访问随机数据所需的时间很大程度上依赖于数据在设备内的位置[1]

2, 寻址空间的区别

  块设备文件是块设备的物理寻址空间;普通文件是块设备的虚拟寻址空间。普通文件比块设备文件多一层文件系统的地址转换机构。

这样说可能还是不是很明白 直接举个例子吧
先说下cat命令
cat命令是循环读命令直到碰到文件结尾EOF,但是当你cat个设备文件时会发现设备文件的内容一直在读
例如:

当时当我执行cat /dev/hello时会出现这样的情况:

请注意上面的^C

说明设备文件没有文件的终止标志EOF

谢谢!!!

时间: 2024-10-06 22:53:55

linux中普通文件和块设备文件的区别的相关文章

linux一切皆文件之块设备文件(四)

一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列) 2.操作这些不同的类型就像操作文件一样,比如增删改查等 3.块设备是将信息存储在大小固定的块中,每一个块都有自己的地址,块设备支持随机访问.典型的块设备比如我们使用的硬盘 二.环境准备 组件 版本 OS Ubuntu 16.04.4 LTS 三.主设备号(major)与次设备号(minor) ● 当一块磁盘被注册到操作系统的时候,会被分配主设备号与次设备号 ● 其中

linux文件类型:设备文件、mknod创建设备文件

设备文件: 块设备文件b: 按块为单位,随机访问的设备: 字符设备文件c:按字符为单位,线性设备: 常见的块设备文件b: 硬盘 硬盘设备的设备文件名:    IDE ,ATA: hd    SATA.SCSI.USB:sd          a,b,c,...来区分同一类型下的不同设备 IDE: 第一个IDE口:主.从 /dev/hda, /dev/hdb 第二个IDE口:主.从 /dev/hdc, /dev/hdd SD:  sda, sdb, sdc,... hda: hda1: 第一个主分

LINUX中块设备文件和字符设备文件的本质区别

在LINUX系统文件类型分类的文章中我们提到了 块设备 和 字符设备文件,那么什么是块设备 字符设备文件呢?他们之间有什么本质上的区别呢? 设备文件分为 Block(块) Device Driver 和 Character(字符)Device Drive 两类.Character Device Drive又被称为字符设备或裸设备 raw  devices. Block Device Driver称为块设备. 区别: Block Device Driver 是以固定大小长度来传送转移资料,Char

Linux中在当前目录下查找某个文件

ZT:https://zhidao.baidu.com/question/1512088073851955780.html Linux中在当前目录下查找某个文件可以使用find命令. 1.比如在/usr/lib下查找klibc的文件,进入/usr/lib目录后,可以执行 find . -name "klibc" 说明:find命令用于查找文件,后面的"."代表当前目录,-name是find命令的参数,后面接要搜索的文件名. 2.如果不明确文件名称,可以使用通配符 f

Linux中tty、pty、pts的概念区别

基本概念: 1> tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适. 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 2> pty(虚拟终端): 但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3> pts/

文件作为块设备访问

1. loop设备介绍 在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备.它能使我们像块设备一样访问一个文件.在使用之前,一个 loop 设备必须要和一个文件进行连接.这种结合方式给用户提供了一个替代块特殊文件的接口.因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来.    上面说的文件格式,我们经常见到的是 CD 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像

linux中生成考核用的FAT32文件系统结构样例

实验X说明:FAT32-1.img是一个包含FAT32文件系统的磁盘镜像,请使用winhex手工方式读出这个文件系统内的指定文件,并回答其md5 HASH值. 要求: 1.利用WINHEX手工方式读取. 2.不得使用WINHEX模板功能. 3.不得使用WINHEX文件系统解析功能. 4.填写的MD5 HASH值全部为大写,不包括0x头标或H尾标,中间不得有任何间隔符号(包括空格.制表符.'-'等符号),以WINHEX软件运算出的HASH值为准. 实验目的: 1.实现手工方式跟踪一个FAT32文件

linux中的strip命令简介------给文件脱衣服

转载于:http://blog.csdn.net/stpeace/article/details/47090255 作为一名linux开发人员, 如果没有听说过strip命令, 那是很不应该的. strip这个单词, 大家应该早就学过了, 你就记住是脱衣服就行了, 别的不要多想. 在linux中, strip也有脱衣服的含义, 具体就是从特定文件中剥掉一些符号信息和调试信息. 我们来看main.c文件: [cpp] view plain copy print? #include <stdio.h

linux中生成考核用的NTFS文件系统结构样例(二)

实验NTFS-2说明:NTFS-2.img是一个包含NTFS文件系统的磁盘镜像,请使用winhex手工方式读出这个文件系统内的指定文件,并回答其md5 HASH值. 要求: 1.利用WINHEX手工方式读取. 2.不得使用WINHEX模板功能. 3.不得使用WINHEX文件系统解析功能. 4.填写的MD5 HASH值全部为大写,不包括0x头标或H尾标,中间不得有任何间隔符号(包括空格.制表符.'-'等符号),以WINHEX软件运算出的HASH值为准. 实验目的: 1.实现手工方式跟踪一个NTFS