操作系统之文件系统
来源:互联网 发布:电脑淘宝直播怎么看 编辑:程序博客网 时间:2024/05/16 04:54
文件目录:
single-level
two-level
tree-level
graph-level
文件系统的目标:
地址独立:一个而文件在产生的时候无需担心存放的磁盘地址,即文件数据的产生于文件将来存放的磁盘地址相互独立
地址保护:对文件的访问进行一定的闲置,不是任何人都可以访问文件的
从用户角度,文件名字--------磁盘地址(扇面号)
扩展名:仅仅是指示性的,并不具有强制性,unix操作系统扩展名仅用来提醒用户,系统并不遵守,但是windows是强制性的,如果一个文件扩展名不是.bat,exe,com
则改程序无法执行,即使该文件确实是一个可执行文件
内容寻址:给照片的内容,查找照片
文件内容组织:
1 关系导向型组织
记录流 树型组织 网型组织
2 非关系导向型组织
字节流,字位流,数据块流,这个更好,现代商业操作系统基本上使用字节流,因为他它简单
文件类型:
文件分三种:目录(记录文件的文件),一般文件(数据,分为文本文件和二进制文件),块文件(模拟输入输出,对每个输入输出设备,用一个块文件来表示)
文件格式:不同的文件有不同的格式(标题,入口,尺寸,权限.....)
文件访问:顺序访问和随机访问
文件属性: 谁创立的,谁拥有这个文件,可否随机访问,等等
文件夹:保存关于文件及文件系统的信息,文件夹对文件来说,就相当于动态地址翻译对于虚拟地址的作用,即从虚拟地址到实际地址的一种翻译机制
ls和dir:读取文件夹的简单数组的内容
根目录:文件系统的起点,在操作系统启动的时候加载到内存
共享与链接
内存映射的文件访问:
把需要访问的文件映射到一个进程的虚拟地址内,当进程终止的时候,与文件对应的这个内存内容将被冲洗(flush)到磁盘上
文件系统的实现:
分区:为什么要分区?1.不同的分区可以建立不同的文件系统 2.计算机内存字长度有限,而磁盘地址需要存放在内存字里面,这样操作系统能够访问到的磁盘地址数量就是一个有限数
为什么一个分区只能建立一个文件系统呢?
计算机启动,主板ROM里面BIOS运行,对磁盘扇面0进行读操作,将MBR里面的程序读到内存并运行,MBR找到主分区,将主分区里面的BOOT RECORD加载并运行,BOOT RECORD里面是一个小程序,该程序找到操作系统映像,并加载到内存,从而启动操作系统,这里是所有的文件系统都要遵循的
整块磁盘
主引导记录(MBR Master Boot Record) | 分区表 | 分区1(主分区) | 分区2 | ...
分区1(主分区,操作系统装在这里)
引导记录 | 超级数据块 | 闲置空间管理 | I-NODE区 | 根目录区 | 文件和目录区
超级数据块里面存放的是关于该文件系统的各种参数,如文件系统类型,数据块尺寸,不同的文件系统布局是不一样的,FAT没有I-NODE区
文件的实现:
连续存放方式:
优点:简单,1.给出文件头地址和文件大小,可以寻找到所有的文件数据块,2.读写效率高
缺点:空间浪费,磁盘碎片,不易扩展
非连续存放方式:
链表:
存放文件数据块指正的表叫做文件分配表(File Allocation Table,FAT)
利用FAT随机读写只需要一次内存访问
使用FAT机制的文件系统叫做FAT文件系统
索引文件组织:
FAT表太大,记录项和物理磁盘块数一样多,解决方法:将每个文件的所有数据块的磁盘地址收集起来,集中放在一个索引数据块里面,而在文件打开 时将该数据块加载到内存,这样内存里存放的只是我们需要使用的文件的数据块的所有地址,而不是各种不相干的文件的地址全部一次加载到内存,FAT占用内存太多的问题 就解决了,这种索引数据块叫做I-NODE,I代表index
优点:1.随机访问很方便 2.文件增长灵活
缺点:1.每个数据块需要选点,顺序访问效率不太高,2 如果一次文件大小的增长超过了预期,怎么办?
多级索引组织:在分页系统中,我们使用多级页表,这里我们可以使用多级索引头,即间接使用I-NODE
缺点:1.访问数据块所需要的磁盘访问增加了 2.对于小文件,使用的磁盘数据块不会超过一个I-NODE的指针数,白白浪费了I-NODE空 间,怎么办?
非对称多级索引:索引既可以是单级,也可以是多级,每个文件都有一个顶级索引节点,里面的指针被分为两部分,一部分用来存放数据块所在的磁盘地址,一部分用来存放次级I-NODE的地址,如果文件尺寸较小,所有磁盘地址全部存放在顶级I-NODE上,如果文件较大,还要使用次级I-NODE,根据心理学用户体验,一开始顶级I-NODE中的磁盘地址先快速地读取出来让用户处理着,等他处理好了,次级I-NODE也读取完了,从用户体验的角度看,非对称索引大大提高了文件的访问速度
文件缓存:
将文件里面经常要访问的内容存放在缓存里面,使得文件的访问可以在缓存里面满足
目录实现:地址独立的实现
文件夹的任务,文件名到文件地址的映射
1.文件连续存放,文件夹里面存放的映射是文件头数据块地址
2.链表组织形式,文件夹里面存放的映射是文件头数据块地址
3.FAT组织形式,映射仍然不变,文件夹里面存放的映射是文件头数据块地址
4 I-NODE组织形式,文件夹里面存放的映射是到I-NODE编号
文件共享:
文件映射情况被保存在多个文件夹里,在文件头I-NODE里面记录其被链接的次数,文件删除时,将I-NODE里面的链接计数减一,如果为0,就删除文件,这种叫做硬链接,文件创立者没有权利断开用户的链接
软链接:在创立者将文件删除后,链接用户将无法再访问到该文件,从链接目录访问文件需要经过原始路径,当原始路径断开后,该链接自然就断开了,软链接从严格意义上不是链接,所以Windows的快捷方式不是链接
链接的问题:在备份的时候,如果选择备份的文件夹里面存在符号链接,将造成该文件备份多次,这只不过浪费了空间而已,问题出在恢复的时候,由于被链接的文件备份了多个复本,造成每个路径都有自己的文件复本
文件系统挂载:
挂载用来将一个文件系并入另一个文件系统的办法,实际上就是修改挂载点的目录内容,增加一个记录将该文件的根目录I-NODE地址保存起来,平常使用的光盘,U盘,软盘上面存在一个文件系统,但是该文件系统我们平常是无法访问的,需要将它们插入计算机的相应设备或接口上,而这种插入就是挂载操作,
卸载:将挂载点的目录内容中的相关记录删除,光盘就是弹出光盘,U盘就是拔出
空闲空间管理:机制和内存管理一样,位图和链表
磁盘分配块:
文件系统在分配空间时是按照块(block)进行分配的,windows把这种分配块叫做蔟
磁盘配额: 在多用户环境下,文件系统通常给每一个用户一个配额
- 操作系统之文件系统笔记
- 操作系统之文件系统
- 操作系统之文件系统
- 操作系统之文件系统笔记
- 操作系统之文件系统
- 操作系统总结之文件系统接口
- 操作系统总结之文件系统实现
- 操作系统总结之文件系统接口
- 操作系统总结之文件系统实现
- 操作系统算法 之 文件系统设计
- 操作系统原理读书笔记之文件系统
- Windows操作系统实习之快速文件系统
- Linux操作系统基础知识之八:文件系统
- Unix操作系统基础:Unix文件系统之目录
- Unix操作系统基础:Unix文件系统之文件
- Ubuntu 操作系统学习笔记之文件系统
- 操作系统课程设计之二级文件系统演示
- MYSQL性能优化之操作系统参数,文件系统
- Android Lint 检查规则列表
- Lintcode(1)-两个字符串是变位词
- jquery获得父页面
- 造成笔记本电池损耗的主要原因
- ios开发学习笔记(经验大全)
- 操作系统之文件系统
- explicit constructor的用法
- 图片滚动从右向左滚动网页代码
- gitlab 一键安装 centos 6.5
- JAVA 关闭窗口的设置 DISPOSE_ON_CLOSE和EXIT_ON_CLOSE 的区别
- Android Studio 最常用的快捷键(待续)
- Android内存性能优化(内部资料总结)
- 四种发现协议的说明文档
- map最基本的操作