文件管理学什么?
注意点:文件管理是面向外存设计,外存的诞生是为了持久化(断电后依然可以进行读取)的存储文件,这一章我们可以参照我们电脑的随便打开一个文件夹进行理解。
- 面向用户的存储,即用户可见(计算机内怎么存是计算机设置的)
- 文件目录结构(计算机目录的发展)
- 物理的存储
- 用户可以做什么操作
- 一种典型的存储器——磁盘的结构
文件系统的一些属性
逻辑结构:
目录:
功能:
外存如何存:
非连续存储和连续存储需要做的和解决的问题:
part1:文件的逻辑结构(用户看见的)
文件逻辑:
无结构文件就比如txt中的文件,一般只能看到字符和字母的流式文件
有结构文件,是对文件加了(关键字)限制,让文件看起来有逻辑条理一点。
有结构文件:分为可变长和定长的记录,
可变长记录:人物介绍等
定长:人物性别,学号等,长度固定。
顺序文件:![](https://i-blog.csdnimg.cn/direct/42a2c3793d544b798d5b80d1f1d5c800.png)
在逻辑上将文件一条一条有顺序的先后顺序排列(物理存储不归用户管理)
顺序文件的存储方式分为链式存储和顺序存储。
链式存储和不定长存储:都无法实现随机存取,定长可以。
索引文件:
本身是定长的顺序表,索引文件像书籍的目录,我们可以通过目录去找到对应的数据。索引文件通过对每一个数据项创建一个索引的表进行查询
索引顺序文件:
结合了索引和顺序文件的优点和用法。
索引本质上是通过空间换取时间,但索引内存大小有时会比内容都大,
顺序表又因为需要花费查询时间才能找到想要的内容,数据也多查询越慢。
结合两个方法:索引顺序文件诞生,
举例:就好像你要找《操作系统》文件管理的其中一块内容,索引会先带你到文件管理的那一页,剩下需要你看着一个一个找。
多级索引顺序文件:
和多级页表一样,通过时间换空间,更小的空间换更多的存储内容,牺牲了查询时间
part2:目录结构
文件控制块:
文件夹属性:
文件属性:
目录结构:
单级目录结构:
目录表无法创建文件夹:只能创建文件,故无法重名
二级目录:
通过user区分谁拥有这个文件,同用户不能重名。
多级目录结构:
树型结构,可以根据自己的需要进行创建,这一阶段,同一个文件夹之间不能同名,其他都可以同名。
无环图目录结构:
一个文件可以创建多个打开路径,删除文件需要把全部路径全删了。
索引结点:
通过创建一个索引表,去寻找文件
part2:文件的物理结构:
2.1文件分配
将文件分成一个一个块,一般和内存大小差不多,为了方便读取。
连续存储:
思想:为文件分配连续的存储地址,将文件连续的存入外存中,通过下半章磁盘管理我们知道我们查东西需要移动磁臂,这需要时间。连续存储则不会有这种问题。可以一直读。
优点:读写速度快。
缺点:当我们想继续分配的时候,可能后续的文件已经被分出去了。
链接分配:两种分配
显示链接和隐式链接:两种方法都是通过链接的方式去分散的存储文件。
隐式存储:通过上一个块号才能知道下一个块号在哪?不能随机访问。
显示链接:
在每个文件的开头,都会把存了东西的所有块号都按先后顺序表示出来。
方便顺序访问也方便随机存储。但读写速度没有顺序存储的快。
索引分配:
开始学的时候很懵,和上面的显示链接有什么区别。
这里,我们给一些特征,
第一、另外开一个空间做索引表,一个内存块存一个东西(现在的应用动不动就是十几g其实这种更利好,感觉……只是感觉)
第二、读写时分两次,第一次读索引表,通过cpu对索引表的查询再去外存找东西,查询速度更快。(上面的查询相当于给你任务你大海捞针,这里是cpu已经把目标的东西都拔下来了,你就按他说的做就行了)
当然也存在索引表比较大,一个内存块存不下的情况。
第一种解法:
在上一个索引表保存下一个索引表的地址。
第二种方案:
多层索引:为索引表做一个索引表。可以扩大内存,但又是典型的牺牲时间换空间。
第三种解法:
混合,有些不大的直接存在直接地址。内容多的分多个索引表存。
part3,文件管理
这一部分是我们如何显示内存块哪些被存储、哪些没有。
分盘:windows的c,d盘。
空闲表:
为每个空闲空间设置始址,然后显示后面多少个是空闲空间,最少为1(本身)
空闲链表法:
两种:都是通过链接的方式去把所有的空闲盘链接上。但区别在于
一个是全连了,一个是连了盘的始址,并标注有多少空间可以用。
位视图法:
为每个块号分配一位标注是否被分配了内存。(1表示存了,0表示没存)
成组链接法:
这里解释一下(有点抽象,我也理解了几分钟):
这个图要抽象成:
存储块。这些块就是存储东西(都是空的,除了最上面的块,最上面的块是存下一块的东西,他也可以被写数据,不过这个时候就表示这一个超级块已经被用完了,要把下一级的超级块拉上来了),最上面的表示下一个有多少空闲的。
part4:文件基本操作
比较简单,没多写
part5:文件共享(硬链接、软链接)
硬链接:相当于在用户的地址直接写了多个可以访问他的地址,能直接访问到文件。
软链接:
两次甚至多次间接的去访问到目标文件。
part6:文件保护
口令保护需要存密码
密码保护:不需要更安全。
访问控制:最常用的
通过下放权限而达到什么用户可以做什么事的作用。
文件系统层次:
part7:磁盘访问:
磁盘结构:
磁盘就是整个盘,
磁道是单独一个可以存储的区域
扇区:是一群磁道的总和的总称。
如何写数据?
磁盘看起来很薄其实他被分成了很多盘,你可以理解为一本本子,柱面号更像书页。
磁头可以分为可以可移动的和不可移动的
磁盘调度算法:减少寻道时间的
一次查询的总时间。
先来先服务算法(比较简单,寻道时间也长)
最短寻道时间
通过计算两边相距当前磁道有多少,选择最少的,
缺点:会产生饥饿,因为计算机的程序是源源不断的,如果偏向一边一直来程序,那另一端可能就无法被访问。
扫描算法:
扫描一端,遇到底就转向
缺陷:刚刚被访问的可能被访问第二遍,这样可能有的程序响应时间变长。
look算法:
只要移动方向没进程就转向
ps:不会产生饥饿
循环扫描算法:
对scan算法的优化,规定只有一方移动的时候才被允许访问。
clook算法:
和cscan的思想差不多
减少磁盘延迟的方法
交替编号
这是对同一个盘面上的。
因为读完一个块之后,他需要时间反应我要继续读吗?交替编号相当于给了这个思考的缓冲
错位命名:
这是对不同盘面的,
但我们需要去读其他盘面的时候,错开的命名就可以直接读取啦
磁盘的管理:
这一块是从最基础的分区,然后被如何分需要根据需求来
坏块管理:
ps:备用的顶上