《Tsinghua os mooc》第21~22讲 文件系统
第二十一讲 文件系统
文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能。
- 组织、检索、读写访问数据
- 大多数计算机系统都有文件系统
- Google 也是一个文件系统
文件是具有符号名,由字节序列构成的数据项集合
- 文件系统的基本数据单位
- 文件名是文件的标识符号
文件系统的功能
- 分配文件磁盘空间
- 管理文件块(位置和顺序)
- 管理空闲空间(位置)
- 分配算法 (策略)
- 管理文件集合
- 定位:文件及其内容
- 命名:通过名字找到文件
- 文件系统结构:文件组织方式
- 数据可靠和安全
- 安全:多层次保护数据安全
- 可靠:持久保存文件,避免系统崩溃、媒体错误、攻击等
- 分配文件磁盘空间
文件头:文件系统元数据中的文件信息
- 文件属性:名称、类型、位置、大小、保护、创建者、创建时间、最近修改时间、…
- 文件存储位置和顺序
文件描述符
- 进程访问文件数据前必须先“打开”文件,操作系统为每个进程维护一个打开文件表,文件描述符是打开文件的标识
- 文件指针:记录最近一次读写位置。每个进程分别维护自己的打开文件指针
- 文件打开次数:当前打开文件的次数。最后一个进程关闭文件时,将其从打开文件表中移除
- 文件的磁盘位置:缓存数据访问信息
- 访问权限:每个进程的文件访问模式信息
文件的用户视图和系统视图
- 文件的用户视图:持久的数据结构
- 系统访问接口:字节序列的集合(UNIX),系统不关心存储在磁盘上的数据结构
- 文件的系统视图:数据块的集合,数据块是逻辑存储单元,而扇区是物理存储单元。
文件系统中的基本操作单位是数据块
- 例如, getc()和putc()即使每次只访问1字节的数据,也需要缓存目标数据4096字节
- 进程读文件:获取字节所在的数据块,返回数据块内对应部分
- 进程写文件:获取数据块,修改数据块中对应部分,写回数据块
文件别名
- 硬链接: 多个文件项指向一个文件
- 软链接: 以“快捷方式”指向其他文件,通过存储真实文件的逻辑名称来实现
文件表示:如何表示分配给一个文件数据块的位置和顺序
- 分配方式
- 连续分配
- 链式分配
- 索引分配
- 指标
- 存储效率:外部碎片等
- 读写性能:访问速度
- 分配方式
连续分配:文件头指定起始块和长度
- 优点
- 文件读取表现好
- 高效的顺序和随机访问
- 缺点
- 存在外部碎片
- 文件增长问题
- 优点
链式分配:文件以数据块链表方式存储,文件头包含了到第一块和最后一块的指针
- 优点
- 创建、增大、缩小很容易
- 没有碎片
- 缺点
- 无法实现真正的随机访问
- 可靠性差,破坏一个链,后面的数据块就丢了
- 优点
索引分配:为每个文件创建一个索引数据块,指向文件数据块的指针列表,文件头包含了索引数据块指针
- 优点
- 创建、增大、缩小很容易
- 没有碎片
- 支持直接访问
- 缺点
- 当文件很小时,存储索引的开销
- 如何处理大文件?(链式索引块、多级索引块)
- 优点
UFS多级索引分配
- 文件头包含13个指针
- 前10个指针指向数据块
- 第11个指针指向索引块
- 第12个指针指向二级索引块
- 第13个指针指向三级索引块
- 效果
- 提高了文件大小限制阈值
- 动态分配数据块,文件扩展很容易
- 小文件开销小
- 只为大文件分配间接数据块,大文件在访问数据块时需要大量查询
- 文件头包含13个指针
内部碎片 vs 外部碎片
- 内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间
- 外部碎片是处于任何两个已分配区域或页面之间的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
第二十二讲 实验八 文件系统
- 文件系统层次结构图


lab8文件系统具有繁多的数据结构和函数调用,为分析硬盘上的数据与内存中的数据的关系,可采取以下思路
- 自下而上,谁访问谁
- 自上而下,谁包含谁
SFS硬盘布局
superblock | root-dir inode | freemap | Inode/File Data/Dir Data blocks
- 文件系统的抽象
- 文件
- 目录项
- 索引节点
- 安装点
《Tsinghua os mooc》第21~22讲 文件系统的更多相关文章
- 第21/22讲 UI_布局 之 线性布局
第21/22讲 UI_布局 之 线性布局 布局管理就是组件在activity中呈现方式,包括组件的大小,间距和对齐方式等. Android提供了两种布局的实现方式: 1.在xml配置文件中声明:这种方 ...
- 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态 ...
- 《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁
第十七讲 同步互斥 进程并发执行 好处1:共享资源.比如:多个用户使用同一台计算机. 好处2:加速.I/O操作和CPU计算可以重叠(并行). 好处3:模块化. 将大程序分解成小程序.以编译为例,gcc ...
- 《Tsinghua os mooc》第11~14讲 进程和线程
第十一讲 进程和线程 进程 vs 程序 程序 = 文件 (静态的可执行文件) 进程 = 执行中的程序 = 程序 + 执行状态 进程的组成包括程序.数据和进程控制块 同一个程序的多次执行过程对应为不同进 ...
- 《Tsinghua os mooc》第15~16讲 处理机调度
第十五讲 处理机调度 进程调度时机 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况: 进程从运行状态切换到等待状态 进程被终结了 可抢占系统中,中断请求被服务例程响应完成时发生调度,也分 ...
- Hadoop深入浅出实战经典视频教程(共22讲)
该视频教程共22讲,由王家林老师主讲. --------------------------------------------------------- 第01讲:为什么会有第一代大数据技术Hado ...
- 2016年12月27日 星期二 --出埃及记 Exodus 21:22
2016年12月27日 星期二 --出埃及记 Exodus 21:22 "If men who are fighting hit a pregnant woman and she gives ...
- 《Tsinghua oc mooc》第8~10讲 虚拟内存管理
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 第八讲 虚拟内存概念 为什 ...
- 《Tsinghua oc mooc》第5~7讲 物理内存管理
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 段式内存管理中,逻辑 ...
随机推荐
- Java for循环的语法和执行顺序
关于java的for循环想必大家非常熟悉,它是java常用的语句之一.for循环是最灵活也是最常用的循环结构,表达式一般如下: for(表达式1;表达式2;表达式4){ 表达式3; } 执行顺序: ...
- 我需要关于fixedFluxPressure边界的解释【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/82581-i-need-explanations-abou ...
- MangoDB在C#中的使用
http://blog.sina.com.cn/s/blog_927f3c2401011937.html 图形工具 http://api.mongodb.org/csharp/current/html ...
- Apache Flink - Component Stack
作为一个软件堆栈,Flink是一个分层的系统.堆栈的不同层构建在彼此之上,并提高程序表示的抽象级别: 在runtime层以JobGraph的形式接受一个程序.JobGraph是一个通用的并行数据流,包 ...
- Windows下的apache maven安装与配置
去到官网http://maven.apache.org/download.cgi下载压缩包我选择的是二进制zip压缩文件. 解压并配置压缩文件的目录到MAVEN_HOME环境变量,添加解压文件下的bi ...
- RK3399 4G模块移远EC20移植调试
转载请注明出处:https://www.cnblogs.com/lialong1st/p/11266330.html CPU:RK3399 系统:Android 7.1 1.通过串口打印或者adb获取 ...
- 小福bbs—项目系统设计与数据库设计
这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 实现对校园论坛软件的制作,使其能够发布帖子,查看信息等 作业的正文 小福bbs--项目需求分析 ...
- arcgis python 发送邮件
import arcgisscripting, smtplib, os, sys, traceback from email.MIMEMultipart import MIMEMultipart fr ...
- C++ .h 与 .hpp 的区别
原文地址:http://blog.csdn.net/f_zyj/article/details/51735416 .hpp,本质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件, ...
- 获取用户当前位置信息的两种方法——H5、微信
在之前的 调用百度地图API的总结 中获取当前位置信息我用的是 H5 ,其实微信也提供了获取用户地理位置的方法,现将这两种方法都贴出来,看情况选择使用. 一.H5 获取当前地理位置得到经纬度 // H ...