文章目录
一、文件系统流程简介
文件系统是操作系统一个重要的子系统,方便读写磁盘上的数据。主要讲述三方面内容,第一方面是从用户角度介绍如何进行文件读写操作,第二方面是介绍文件读写操作系统如何实现,最后一部分是介绍多磁盘管理。
二、文件系统与文件
2、文件系统和文件联系
文件系统是一种用于持久性存储的系统抽象,也就是断电后数据不会丢失,比如说磁盘。
- 要让用户组织、控制、导航、访问和检索数据
- 大多数的计算机系统包含文件系统,以及个人电脑、服务器、笔记本电脑、ipod,机顶盒等都有文件系统
- Google也是由一个文件系统构成的(GFS)
文件是具有符号名,由字节序列构成的数据项集合。
-
文件是文件系统的基本数据单位
-
文件名是文件的表示符号
3、文件系统的功能
4、文件系统种类
5、文件头的用途
文件属性是用来表征文件的一些基本信息,储存在文件头里面。
6、文件描述符
从编程者的角度来看,通过字符串的名字打开文件,返回一个小整数的文件描述符f,read(f)把f文件的内容读出来,最后close(f),大致就是这样一个模式。这里面最重要的就是这个整数形式的文件描述符,它代表文件给我们应用程序做各种各样的访问和控制,那整数如何代表呢?
文件描述符其实就是一个index索引,进程每打开一个文件,就会在打开文件表相应index存入对应文件的位置。我们都知道数组、列表它们都有索引,这里的文件描述符就是这个索引,索引中存的就是文件的位置。
7、文件描述符中有哪些信息?
8、访问文件的方法
9、文件结构
10、多用户系统中文件的ACL
三、目录
为什么要有目录?因为要组织文件,如果把所有文件堆在一个一维面上的话,用户很难找到想要的文件。所以通过分层的方式,通过目录,便于查找和组织文件。
1、目录的基操
2、路径遍历查找文件的流程
3、文件系统挂载
在我们的操作系统中,有不同的文件系统,不同的文件系统要挂在不同的目录下,来形成一个分层次的跨文件系统的访问,把不同系统根目录的位置称为挂载点。
4、文件别名
文件别名有两种方式,一个是硬链接,一个软链接。
- 硬链接:不能跨目录建立硬链接,硬链接其实就是两个文件了,硬链接得到的文件名和原文件名指向的磁盘的inode节点是同一个,同时该
inode中的引用计数
会加1。删除原文件,也只是该inode节点的引用计数减1而已。
inode不懂可以看下面这片博客:https://blog.csdn.net/weixin_44571270/article/details/105833450
- 软链接:可以跨目录建立软链接,软链接得到的文件名存的是原文件的绝对路径,也即是原文件如果被删除,那么就会出现
悬空指针
,也即是此软链接得到的文件名失去了存在的意义。软链接相当于win中的快捷方式。
5、循环检测
inode的引用计数和硬链接的循环检测
,在python的垃圾回收机制中也有一个引用计数和循环引用的概念,但对象不一样,避免混淆可以对比着看一下。
https://blog.csdn.net/weixin_44571270/article/details/105775608
为什么硬链接不能链接目录?
说到硬连接,自然你要先考虑软连接跟硬连接区别,软连接就相当于我们win中的快捷方式即如果你软连接一个目录只是一个目录的快捷方式到指定位置,操作系统找这个快捷方式会直接找到真实目录下的文件。但是硬连接的话,相当于镜像的方式,你创建一个目录的硬连接之后,操作系统需要把这个目录下所有的文件都要做一次硬连接(复制一份过去),这样操作系统在访问这个链接的时候要不断去遍历,大大增加复杂度,而且很容易进入死循环。现在linux没有很好支持这个 所以 不支持。