提醒:因为软件开发行业无明确禁止法规, 该企业仅提供软件开发外包定制服务,项目需取得国家许可,严禁非法用途。 违法举报

一篇文章理解Linux操作系统中的块设备

2024-11-24 07:07 113.78.238.160 4次
发布企业
东莞市数云网络科技有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
4
主体名称:
东莞市数云网络科技有限公司
组织机构代码:
91441900MACKCG2W01
报价
请来电询价
所在地
东莞市
联系电话
18665158422
dapp开发
18665158422
商业模式架构导师
杨小花  请说明来自顺企网,优惠更多
请卖家联系我
yqm106106

产品详细介绍

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

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

图1Windows磁盘设备

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

图2Linux系统下磁盘设备

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

Linux系统中磁盘的本质

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

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

图3bdev文件系统位置

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

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

磁盘的缓存

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

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

图4磁盘函数集

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

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



所属分类:中国商务服务网 / APP开发
关于东莞市数云网络科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2019年06月19日
法定代表人18665158422
注册资本18665158422
主营产品数字藏品系统开发,元宇宙系统开发,嗨购模式,广告电商系统,泰山众筹模式,分享购cps系统、定制开发、请联系18002820787模式快速开发.APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发公司以小程序开发、微商城开发、网站建设、APP开发为核心业务,专注于界面设计、技术研发、品牌营销,为客户提供一站式互联网解决方案,提供优质的系统支持服务,努力为客户创造大的价值,助力中小企业进行互联网+转型与升级。 专注于公众号商城开发,苹果+安卓app,H5网页开发,小程序开发,专页定制开发商业模式系统软件, 1.主营分销系统开发: 二级分销系统,分红模式系统(团队分红系统,股东分红系统,级差返利系统,区域分红系统),微商云仓系统,微商代理授权系统,复购模式系统,拼不中返利拼团系统,商家O2O系统,一条线排队返现系统,公排系统,直销系统,积分商城系统,签到+免费领面膜系统,扫码分销系统。 热门模式系统开发:即拼商城系统、光明新零售系统、拼团拼购系统、完美天使美牙系统,言蕾回春面具面膜系统,创客新零售系统。
经营范围花葵直播模式快速开发.APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发APP软件系统公众号小程序开发公司以小程序开发、微商城开发、网站建设、APP开发为核心业务,专注于界面设计、技术研发、品牌营销,为客户提供一站式互联网解决方案,提供优质的系统支持服务,努力为客户创造大的价值,助力中小企业进行互联网+转型与升级。 专注于公众号商城开发,苹果+安卓app,H5网页,小程序开发,专页定制开发商业模式系统软件, 1.主营分销系统开发: 二级分销系统,分红模式系统(团队分红系统,股东分红系统,级差返利系统,区域分红系统),微商云仓系统,微商代理授权系统,复购模式系统,拼不中返利拼团系统,商家O2O系统,一条线排队返现系统,公排系统,直销系统,积分商城系统,签到+免费领面膜系统,扫码分销系统。 2. 热门模式系统开发:即拼商城系统、光明新零售系统、拼团拼购系统、完美天使美牙系统,言蕾回春面具面膜系统,创客新零售系统。 系统开发请联系:(电微)
公司简介如何上线NFT电商平台:1.首先要有一套NFT电商系统,它可以为你的每一个商品铸成唯一的NFT序列号(你可以把它理解为唯一的“身份证”);2.假设现在你手上有一个古董/名画,你可以用这个NFT电商系统给他生成一个专属NFT,然后就可以发布到平台交易了;3.用户在平台(手机端)看到这个NFT古董/名画,有两个选择,一是直接购买,可以提货,平台寄送,放家里收藏;二是买了之后直接在这个平台上挂售出去,如 ...
公司新闻
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由东莞市数云网络科技有限公司自行发布,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
提醒:因为软件开发行业无明确禁止法规, 该企业仅提供软件开发外包定制服务,项目需取得国家许可,严禁非法用途。 违法举报
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112