续文件系统
系统布局/文件实现/目录实现
磁盘空间管理/文件系统的可靠性
性能
阿,真的好不想听啊QAQ
5.3文件系统性能
最大化文件系统的性能所需要考虑的因素:
- 高速缓存(文件存储在DRAM/DISK)
- 块预读
- 减少磁头臂移动技术
利用硬件的特性来做优化。
高速缓存
块高速缓存,是块,内存中的缓存是cacheline.
管理高速缓存时采用的算法,思维与基本的缓存方法是相通的。
高速缓存的管理
在高速缓存中查找特定的块:哈希表
高速缓存的置换算法:页式存储管理中页面置换算法类似,LRU法。
高速缓存向磁盘的写入:
- 直写:保证一致性,因为是一被修改时就立即写回。
- 写回:被修改时,先只将其写到高速缓存中,之后再根据需要(需要被换出、关系一致性问题…)再写回到磁盘中。
块预读
在数据块被访问之前,预先将它们读入高速缓存中,从而提高hit rate,较适用于sequential 而不是random。
减少磁头臂移动技术
将可能顺序访问的块存放在一起,最好在同一个柱面上,从而减少磁头臂的移动次数。
- 位图法管理空闲块:尽量找与顺序访问时前一个块(已分配)最近邻的空闲块。
- 链表法管理空闲块
电脑的磁盘文件整理功能。
控制信息与数据信息的存放位置
- 在使用i节点和与i节点等价结构的系统中,一次读取i节点,一次读取文件块。
- 改进方法:把i节点放在磁盘中部,在i节点和第一块之间的平均寻道时间减少为原来的一半。
- 把磁盘分成多个柱面组,每个柱面组都有自己的i节点,数据块和空闲表。
向上与向下运行和负载,相同硬件,单纯通过算法优化,性价比高。
5.4 文件系统的安全性
安全环境
数据的机密性/数据的完整性/系统的可用性。
恶意程序
病毒/蠕虫/特洛伊木马/逻辑炸弹
安全攻击
- 内存页回收再分配时置0.
安全性设计原则
- 系统设计公开
- 缺省属性不可访问
- 可信计算基尽量的小:微内核/宏内核安全性的对比
- 检查当前权限
- 给每个进程赋予一个最小的可能权限
- 保护机制简单一致
- 采取的方案必须可以接受
系统安全是计算机系统研究的一个重要分支,
保护机制
参照监视器模型:reference monitor
主体-》(访问控制数据库/参照监视器/审计文件)-〉客体
log日志。
MINIX文件系统实现
MINIX文件系统是在用户空间中运行的一个大型C程序
文件系统可以独立于MINIX的其他部分进行修改测试和调试
文件系统管理文件分配空间和释放空间、记录磁盘块和空闲空间、提供某种方法以防止文件被未授权使用等。
消息(1)
- 祝循环程序不断地等待消息
- 收到消息后,提取消息的类型,以消息为索引查找文件系统中处理各类消息的过程指针表
- 随后调用相应过程、进行处理后,返回状态值。
消息(2)
MINIX3处理的消息请求,肯定是和文件系统相关的。
创建文件系统
在磁盘用作MINIX文件系统前,必须拥有相应的结构,mkfs创建文件系统
Mkfs /dev/fd1 1440命令
位图
MINIX用两个位图来记录空闲i节点和空闲区段。
目录和路径(2)
文件系统的挂装:
- mount /dev/hd2c/usr
- /usr目录的i节点在内存副本设置标志位
- 将被挂装的文件系统的超级块调入内存超级块表中。
文件描述符
管道和设备文件
READ系统调用
库函数构造消息
文件系统解析消息
文件描述符,flip/i节点,数据块
高速缓存站检查数据块
系统任务将数据从高速缓存中用户进程空间
库函数返回
文件系统代码实现
- /usr/src/servers/fs
- Fs.h主头文件
- const.h
等等等。
理论课考试侧重基本原理,对照课程讲义复习,实践是project.