【操作系统】文件系统

最近在研究io/fs这个包,涉及文件系统,感觉很烧脑,写写记录一下。

什么是文件系统?为什么要有文件系统?

首先为什么要有文件系统。

  1. 因为计算机所有东西都需要存储在外部设备,例如硬盘等等东西上面的。
  2. 既然需要将“东西”放入某个“空间”就需要对这个空间进行管理,因为只有管理,才能够达到比较高的空间利用率

所以文件系统存在的本质,应该是基于我需要针对文件进行存储在外部介质这个需求之上,而寻求达到最佳的某种性能,可以是空间利用率等等而存在的。

知道了目标,就需要知道一下作用对象。显然刚刚也提及了作用于外部介质之上,但计算机针对外部介质的访问都需要通过一个东西,也就是操作系统才能够进行访问。所以,似乎文件系统似乎也与操作系统分不开。

为什么操作系统与文件系统分不开?

外部设备,以硬盘举例,厂家只关注硬盘是否能够让其读出数据,写入数据,以及开放如何读写接口,但不针对设备管理进行强求,而针对于设备管理,也就对应了文件系统。所以文件系统的实现实际上是操作系统实现的,而不是依赖于设备。

但对于程序员来说有什么问题?

因为有很多文件系统,他们对于管理方式是完全不一致的,也就导致了其对于数据单元的存放完全不一样,最终导致了数据的读写完全不一样。假设没有任何借口,那么程序员就需要知道这个存储介质是用什么文件系统进行管理的,然后调用相对应的文件系统方法对其进行读写。
这样的编码就很麻烦。
所以现在应该是把所有读写过程丢给操作系统去做。操作系统开放统一的接口例如posix,程序员表面哪一个设备,什么文件系统,什么文件即可。

为什么最少要有open函数?

我认为open函数更多是为了操作系统管理。因为多个进程高并发的场景下,每一个进程访问设备,最差最差你都要表明这个设备我先占用了。也就是调用open函数,告知操作系统我想用这个设备,并且返回描述符,让后续访问变稍微简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值