西电李航 操作系统课程笔记 day8 Implementation of File system
文章目录
- File system Implementation
- 文件系统(file system)
- 布局
- 普通文件(file)
- 分配(allocation)
- 连续存储
- 指针存储
- 追踪(tracking)
- inode索引节点(index node)
- 目录文件
- 定长存储
- 变长存储
- 链接文件(Link File)
- 硬链接
- 符号链接(symbolic linking)
File system Implementation
文件和目录如何存储,磁盘空间如何管理,系统如何工作
文件系统(file system)
布局
文件系统存放于磁盘上,每个磁盘分区都有独立的文件系统
MBR主引导记录:
磁盘的0号扇区,在bios引导计算机时执行
分区表:
MBR结尾,给出每个分区的起始地址
引导块(boot block):
活动分区的第一个块,引导块中的程序装载该分区的操作系统
超级块(super block):
包含文件系统的关键参数(如所用的magic number,块的数量等)
在文件系统使用时就被读入内存
空闲空间管理: 位图或链表
inode: inode的数组 见下文
操作系统装载磁盘的过程:
首先读取MBR,MBR确定装载的活动分区,然后读取活动分区的引导块装载该分区的系统
普通文件(file)
解决存储磁盘块分配(allocation),磁盘块追踪(tracking)问题(磁盘块不连续时将其组合)
分配(allocation)
连续存储
- 优点: 读写快,实现简单,记录每个文件所用的磁盘块简单(只需第一块磁盘地址和文件块数)
- 缺点: 容易有内存碎片(无法预知新文件的大小)
指针存储
缺点: 每个文件有多个块,链表的随机存储能力差,访问中间某个块速度慢, 指针占用字节使得每个磁盘块存储的字节数不为2n2^n2n,影响系统运行效率
解决: FAT 将所有文件所用用磁盘块的指针存于一张表中放在内存上,快速定位目的地址.
但占用大量内存空间(必须存储空闲块)(可通过只存储打开文件的指针解决,即inode)
追踪(tracking)
inode索引节点(index node)
每个文件有一个inode存储文件属性和列出磁盘块的指针
目录文件
目录系统的主要功能是提供将文件名映射成定位文件数据所需的信息
目录项在顺序字节集合上如何存储
目录项只需存储文件名和文件属性(inode)
如何存放文件名及文件属性:
定长存储
文件名和文件属性(可用inode)各占据等长的空间
变长存储
- ln-line: 在开头记录目录项的长度,后存储固定格式的属性,然后文件名
- 缺点: 删除时容易形成空洞
- in a heap: 目录项定长部分(固定部分,如长度,固定格式的数据)存在前,变长部分(文件名)存在后
- 缺点: 需对堆进行管理
链接文件(Link File)
硬链接
目录项指向同一个索引节点(节点(inode)上记录索引信息(引用次数等))(相当于别名)
- 问题: 该文件被删除时,引用者指向的inode可能无效也可能分配了新的文件,导致连接错误
可通过删除文件时只删除目录项不删除inode解决,inode在引用计数变为0后删除
符号链接(symbolic linking)
文件名指向一个特殊文件(存储指向文件的路径等),使用时将特殊文件中的文本解释成路径寻找
符号链接文件不依赖于目标文件,两者互不影响,所以目标文件变化时符号链接文件可能指向无效地址,但不会指向无效的文件
- 问题: 效率低(需要读取路径并遍历得到inode),符号链接的目录项也需inode
文件可能指向无效地址,但不会指向无效的文件 - 问题: 效率低(需要读取路径并遍历得到inode),符号链接的目录项也需inode
西电李航 操作系统课程笔记 day8 Implementation of File system相关推荐
- 西电李航 操作系统课程笔记 day11 IO softwarelayer
文章目录 Principles of IO software IO软件目标 设备独立性(device independence) 统一命名(uniform naming) 错误处理(error han ...
- 西电李航 操作系统课程笔记 day10 IO hardware principles
文章目录 Principles of IO hardware IO设备 块设备(block device) 字符设备(character device) 设备控制器(device controller ...
- 西电Pintos操作系统课程设计 实验二
实验二:Alarm-Clock 一.实验目的 重新实现timer_sleep()函数,避免"忙等待"的发生.通过阅读Pintos部分源码,初步了解Pintos操作系统内核的关键函数 ...
- 西电微机系统课程设计——步进电机开环控制系统设计
西电微机系统课程设计--步进电机开环控制系统设计 一.课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力. 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的 ...
- 北交 操作系统 课程笔记(一)
北交 操作系统 课程笔记(一) 根据王垠的博文,关于微内核的对话,可将 Linux 看作 C 语言的运行时系统.也有很多对这个观点的批评,让人分不清对错.让我们借着课程再思考一次吧! 文章目录 北交 ...
- 清华教授的操作系统-----课程笔记
文章目录 操作系统 准备 系统调用 计算机体系结构及内存分层体系 地址空间 & 地址空间是如何生成的 MMU 连续内存分配 内存碎片问题 分区的动态分配 压缩式碎片整理 交换时碎片整理 **非 ...
- 西电微机系统课程设计步进电机开环控制系统
** 微机系统与应用课程设计 课题二 步进电机开环控制系统设计** 一.程设计目的 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力. 加深对 A/D 和并行接口芯片的工作方式和编 ...
- 清华大学 - 操作系统 课程笔记
目录 第零讲 在线教学环境准备 step 1 step 2 step 3 第一讲 操作系统概述 1.1 课程概述 1.2 教学安排 1.3 什么是操作系统 1.4 为什么学习操作系统 1.5 操作系统 ...
- c语言报告西电,c语言课程设计报告西安电子科技大学.docx
C语言课程设计 题目名称: 7组 姓 名 学 号 130403100 专 业 自动化专业 班 级 1304031 指导教师 冯兰胜 编写日期 2016.5.16 需求分析 4.19 递归反向输出字符串 ...
最新文章
- 0118互联网新闻 | 抖音成央视春晚独家社交媒体传播平台;石墨任务清单小程序上线...
- C++学习笔记-----operator=函数处理自赋值
- 假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为10μs,由缓冲区送至用户区的时间是5μs,系统对每个磁盘块数据的处理时间为2μs。若用户需要将大小为10个磁盘块的
- pytorch数据加载时报错OSError: [Errno 22] Invalid argument
- ETL异构数据源Datax_日期增量同步_13
- [安卓基础] 009.组件Activity详解
- 使用PS2EXE将PowerShell脚本编译为可执行程序
- 密码学|离散对数问题、计算量较大的二次方程求解(sagemath与python z3库的使用)
- 国内用户最多的linux系统,统信UOS将可能超越麒麟系统夺得中国Linux市场份额第一名...
- 3d模型多怎么优化_高德地图又出逆天黑科技!全国各大城市模型直接获取
- 年薪60万+?这份10万字的面试突击宝典涵盖阿里 P5 工程师~P7 所有技术栈
- centos 使用nslookup命令问题
- dw选项卡代码_DW软件新建一个html网页
- Python也可以很暖男之每日发送爱词霸每日一句+日期+农历+天气预报+各种天气指数(更新)
- 人才招聘网站设计代码(毕业设计和课程设计)
- Postfix + Extmail 企业邮件服务器搭建
- Hook技术在APP测试中的应用
- ulr实现web资源下载
- ubuntu远程连接练习:
- 什么软件能测试触控采样率,苹果iPhone X触控采样率达120Hz,但不支持ProMotion