起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 科技前沿 > 【linux操作系统】为何linux操作系统中的硬盘称之为块

【linux操作系统】为何linux操作系统中的硬盘称之为块

时间:2019-06-14 09:41:51来源:今日新闻 作者:IT培训网 已有: 名学员访问该课程

  快捷搜索:Linux操作系统(4)

前言:实质上,在Linux操作系统磁盘设备是基于一个称为bdev的伪文件系统来管理的,bdev文件系统是一个在内存中的伪文件系统(在内存的文件系统,无持久化的数据),位置与Ext4等文件系统相同。如图3所示,bdev文件系统的位置为图中红色区域。

如何理解Linux操作系统中的块设备,为何linux操作系统中的硬盘称之为块,有什么特殊的意思吗?

块设备也就是存储以“块”为单位存储数据的设备,比较典型的如磁盘设备、光盘或者优盘。本文首先集中在磁盘设备的相关内容的分析,其他设备类型很类似,暂时不做介绍。

在Windows操作系统下磁盘设备似乎是一个实实在在的设备,我们可以通过图形界面对磁盘设备进行管理。如图1是Windows下的磁盘管理界面,可以通过这个界面清晰的看到磁盘设备,并且可以对其进行格式化等操作。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

图1 Windows磁盘设备

Linux操作系统的磁盘设备并不直观,在LInux系统中“一切皆文件”的理念下,磁盘设备其实是一个文件,只不过是一个比较特殊的文件。如图2是某些磁盘和分区的文件路径,其中黄色字体部分是磁盘的路径(类似文件路径),而前面红色方框内的b表示这个文件是磁盘设备文件,而非普通文件。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

图2 Linux系统下磁盘设备

磁盘设备文件也是位于VFS(虚拟文件系统)下面,与Ext4等文件系统类似(参考图3)。用户层面可以用访问普通文件的接口(API)访问磁盘。如下代码是用Python实现的一个向磁盘写入字符串的程序。代码很简单,就是打开磁盘所在的路径(path),然后调用write函数写数据。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

Linux系统中磁盘的本质

通过上面的描述我们知道对于Linux操作系统来说,磁盘就是一个文件。而磁盘本身就是一个线性存储空间(可以理解为一个大数组),这种方式与文件也是非常类似的。鉴于上述相似性,Linux将磁盘设备抽象为一个文件并没有任何不妥之处。

实质上,在Linux操作系统磁盘设备是基于一个称为bdev的伪文件系统来管理的,bdev文件系统是一个在内存中的伪文件系统(在内存的文件系统,无持久化的数据),位置与Ext4等文件系统相同。如图3所示,bdev文件系统的位置为图中红色区域。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

图3 bdev文件系统位置

理解了块设备的管理方式,再结合我们之前对文件系统的相关介绍,这样就很容易理解后续的内容了。在文件系统相关文章介绍中我们知道,不同文件系统数据处理的关键是其提供的函数集,而这个函数集是在打开文件的时候确定的。磁盘设备也是如此,当我们打开磁盘设备时,操作系统根据磁盘设备的特性,会初始化inode中的函数集。而后续对该磁盘设备的读写操作就能通过该函数集完成。如下代码所示 ,块设备连同字符设备和管道都作为特殊的文件进行处理,并初始化对应的函数集。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

完成函数集的初始化后,当用户调用VFS层的接口时,VFS层就可以找到具体的处理函数,进而完成用户的操作。这里的函数集与本地文件系统的函数集别无二致,差异在于普通文件系统需要管理目录和文件,而bdev伪文件系统是将磁盘看作一个大文件,更简单一些。

磁盘的缓存

既然磁盘伪文件系统bdev本身也是一个文件系统,因此自然也可以有缓存。这个缓存就是用于提升磁盘性能的缓存系统。磁盘的缓存系统与文件系统的缓存系统类似,也是通过页缓存来实现的。当然,Linux磁盘的缓存是可以关闭的,此时将调用另外一套函数集。

这样说起来可能比较抽象,下面我们以一个具体的例子来看一下磁盘缓存的具体实现。如下是磁盘伪文件系统的函数集,我们以写数据为例进行介绍。

【linux操作系统】为何linux操作系统中的硬盘称之为块_www.epx365.cn

图4 磁盘函数集

写数据的函数为blkdev_write_iter,该函数会调用generic_perform_write函数。如果大家阅读过本号关于文件系统的文件的话,很清楚后者就是VFS中向页缓存写数据的函数。也就是说块设备伪文件系统的逻辑与本地文件系统完全一致。缓存部分点到为止,具体代码请大家自行阅读。

好了,今天我们主要对Linux的磁盘设备的原理及其缓存进行了介绍。后续我们再逐步进行各种特性的细节。

来源地址:http://www.epx365.cn/tech/201948236.html

来源标题:【linux操作系统】为何linux操作系统中的硬盘称之为块


你也许会喜欢如下的文章?
(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话: 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件:3158895217@qq.com 网站域名:http://www.cnitedu.cn 注册时间:2016-07-18 11:07 最后登录:2019-06-14 21:06