408操作系统学习笔记——文件管理(二)

简介: 408操作系统学习笔记——文件管理

2.目录

2.1.文件目录

1.目录的本质是文件:即目录具有文件的各种属性

b00e4cc87f504782a0e70442399732ac.png2.目录文件中的一条记录就是一个文件控制块(FCB),即FCB和记录一一对应;FCB的有序集合称为文件目录

3.FCB包含各类文件的基本信息(各种文件属性)

4.FCB使得用户可以实现按名存取:FCB实现了文件名和文件的映射

5.操作系统对目录的操作:

①搜索:操作系统根据文件名搜索目录,找到该文件对应的目录项

②创建文件:创建文件时,在其所属的目录中增加一个目录项

③删除文件:删除文件时,在其所属的目录中删除一个目录项

④显示目录:向用户展示该目录中的所有文件即其文件属性

⑤修改目录:文件的属性发生修改时,需要修改其在目录中的对应目录项(例如修改文件名)

2.1.1.单级目录结构

1.整个系统只有一张目录表,每个文件对应该目录表中的一个目录项

2.实现按名存取,但是不支持文件重名(操作系统无法区分两个相同的文件名的文件到底哪个是想要的)

3.不适用多用户操作系统(多用户的情况下,将可能发生相同文件名)

2.1.2.两级目录结构

1.不同用户文件存在不同用户目录项,因此支持不同用户的文件重名;实现文件保护和文件共享

2.缺点:无法进行文件分类19830baba68f49b5b76b8cbff303de1b.png


2.1.3.多级目录结构(树形目录结构)

1.树形目录结构不便于实现文件的共享

2.相对路径可以减少I/O操作的原因:每查询下一级目录时,都需要启动磁盘I/O把下一级目录所对应的目录文件调入内存0f1fc5b2fc3544908b64f80ef640d817.png

252a3cde480c450ea52fe01bff554648.png

 


2.1.4.无环图目录结构

当共享计数器的值 > 1时(两个及以上用户使用的文件),用户删除某个文件不能直接删除(还有其他用户使用),此时该用户的删除操作是删除在其目录中该文件对应的目录项(FCB),并使该文件对应的共享计数器 - 1(只有当共享计数器 = 0时,即没有用户使用的文件,才真正删除该文件)

226c5f6b50cc40f09525bf300a1cf7be.png

2.1.5.索引结点

通过指针的方式,减少FCB中的存放的信息以提升检索文件的效率(可以大大减少FCB所占用的空间,单个内存块存放的FCB数量增加,即单次I/O能够进行检索的FCB数量增加)。改进后,FCB中存放的是文件名和指向索引结点的指针,索引结点中存放了该文件的各种文件属性(除文件名)d074a116f0b7439994fc9ef9ef381275.png

1e1e278a6d954c938afbb9052f183a84.png

2.2.文件共享

共享和复制的区别:

①共享:系统中只有一份数据。用户对其修改,其他用户的也会被修改

②复制:系统中有多份相同数据。对用户对自己的一份进行修改,其他用户的并不会受到影响

2.2.1.基于索引结点的共享方式(硬链接)

只有当count = 0(没有用户使用该文件)时,才真正删除该文件;当count > 0时,删除操作只是删除该用户中该文件所对应的索引表项ab6bcceee7b641e7880fe0723ae9d676.png2.2.2.基于符号链的共享方式(软链接)

①实现方式:该共享方式下,文件的目录项中的索引结点指针并不是直接指向索引结点,而是创建一个新的link类型的文件,该文件中存放了目标文件(即目标索引结点)的存放路径,之后操作系统根据这个路径逐层检索目录找到想要共享的目标文件(目标索引结点)

②如果link文件所指向的目标文件被删除,虽然link文件依然存在,但link文件无效

③软链接比硬链接文件速度更慢:软链接需要根据文件路径逐层检索目录

f1991d28f5184e79b270927ce0699944.png

87e6cb63364343679f34cd0fb375a6dc.png





相关文章
|
3月前
|
存储 算法 Unix
操作系统(13)-----文件管理3
操作系统(13)-----文件管理
47 0
操作系统(13)-----文件管理3
|
3月前
|
存储 安全 Linux
操作系统(13)-----文件管理4
操作系统(13)-----文件管理
39 0
|
3月前
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
51 0
|
3月前
|
存储 SQL 算法
操作系统(13)-----文件管理1
操作系统(13)-----文件管理
31 0
|
3月前
|
监控 Linux 调度
操作系统学习笔记(一)
在Linux中,使用`ps -aux | grep PID`来查看特定进程的状态,或者用`top`指令监控进程和内存。通过`cat 文件名 | grep 关键词`或`grep -i 关键词 文件名`搜索日志文件。`grep`是一个强大的文本搜索工具,支持多种参数,如`-i`忽略大小写,`-c`计数,`-f`从文件读取关键词。要临时更改主机名用`hostname 新主机名`,永久更改则用`hostnamectl set-hostname 新主机名`
29 0
|
3月前
|
消息中间件
操作系统学习笔记(二)
进程切换比线程切换更消耗资源,因为进程切换需保存更多上下文,包括地址空间、寄存器、栈和文件描述符等,还要刷新TLB。线程切换仅需切换硬件上下文和内核栈,上下文更小,所以开销低。进程间通信有多种方式,如匿名管道(父子进程间)、命名管道(无亲缘关系进程)、信号、消息队列、共享内存和信号量等。这些通信方法各有特点,适用于不同场景。例如,匿名管道是半双工的,有名管道允许任何进程通过路径通信,信号用于进程间的简单通知,消息队列支持随机查询和按类型读取,共享内存允许多进程共享数据,而信号量则用于同步和控制对共享资源的访问。
33 0
|
3月前
|
Ubuntu Unix Linux
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
|
3月前
|
存储 算法 安全
|
3月前
|
缓存 算法 Linux
[操作系统] 文件管理
[操作系统] 文件管理
|
8月前
|
程序员 Linux
不愧是华为内部的“操作系统学习笔记”,一篇说细节,一篇讲哲学
当然重要,身为程序员的我们,那更应该深刻理解和掌握操作系统,虽然我们日常 CURD 的工作中,即使不熟悉它们,也不妨碍我们写代码,但是当出现问题时,没有这些基础知识,你是无厘头的,根本没有思路下手,这时候和别人差距就显现出来了,可以说是程序员之间的分水岭。