Linux的设备和设备号是指什么

Linux的设备和设备号是指什么,第1张

Linux中I/O设备分为两类:字符设备和块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。(2)块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。总结一下,这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。

Linux系统中的设备可以分为字符设备、块设备和网络设备这三类。

1、字符设备

字符设备是能够像字节流一样被访问的设备,当对字符设备发出读写请求,相应的IO *** 作立即发生。Linux系统中很多设备都是字符设备,如字符终端、串口、键盘、鼠标等。在嵌入式Linux开发中,接触最多的就是字符设备以及驱动。

2、块设备

块设备是Linux系统中进行TO *** 作时必须以块为单位进行访问的设备,块设备能够安装文件系统。块设备驱动会利用一块系统内存作为缓冲区,因此对块设备发出读写访问,并不一定立即产生硬件I/O *** 作。Linux系统中常见的块设备有如硬盘、软驱等等。

3、网络设备

网络设备既可以是网卡这样的硬件设备,也可以是一个纯软件设备如回环设备。网络设备由Linux的网络子系统驱动,负责数据包的发送好接收,而不是面向流设备,因此在Linux系统文件系统中网络设备没有节点。对网络设备的访问是通过socket调用产生,而不是普通的文件 *** 作如open/closc和read/write等。

1、/dev/random和/dev/urandom是linux系统提供的随机伪设备,其作用是提供非空的随机字节数据流,多用于SSH, SSL的keys等。

这两个的区别是什么?

首先我们要理解一个高大上的词: 熵(Entropy)拼音(Shang)。熵被用于计算一个系统中的失序现象,或者说混乱程度。「熵增加原理」的意思是:在没有外界影响的情况下(孤立系统)无法利用的能量会越来越多,而且这个过程无法自发逆转。 真是一个令人沮丧的理论(闲话少说)

Linux计算熵,是通过系统的环境噪音自动生成,这里的环境噪音可以是键盘,鼠标,内存,文件,进程等等。

下面的命令可以查看系统熵

当entropy_avail中的值小于阈值,读取/dev/random就会被阻塞。

现在来看/dev/random与/dev/urandom的区别。

前一个/dev/random叫做 真随机数生成器 ,会消耗熵值来产生随机数,同时在熵耗尽的情况下会阻塞,知道新的熵生成。

/dev/urandom叫做 伪随机数生成器 ,它根据熵池中的一个随机种子来产生一系列伪随机数。但如果在系统启动阶段使用 /dev/urandom ,则可能存在熵池中还不存在任何熵的情况,这时候用 /dev/urandom 产生的随机数是可预测的。

2、tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

tr [-cdst][--help][--version][第一字符集][第二字符集]

tr的各种参数就不一一列举了,举例子:

这两个命令都是将sample.txt文件的内容小写字母全部转换成大写字母。

3、head/tail命令

从头/尾显示

head -n 3 <file name>表示显示前三行;

head -c 30 <file name>表示显示前30个字符。

4、生成随机变量

可以看到随机生成了24位的变量放到RD里。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7507572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存