前言
虽然操作系统中文件管理和IO操作考的不是很多,像IO更少,不好出题,可能就是选择题什么的。而文件管理可能考一些磁盘的调度算法,可能会有一道大题。虽然大学很多的期末考试都是一种考前突击的状态,但是对于计算机的学生来讲,学好操作系统这门课对于我们的职业生涯有很大的帮助,他会提高我们对计算机的理解,能够写好更好的程序。总体来说,很多人都推荐学好计算机的基本功,这些是强大的内功,当这些内功学好之后,你学其他的东西也能触类旁通。比如说为什么张无忌可以在一个时辰内学完乾坤大挪移,就是因为他学了天下第一的内功。以至于他能学这么快。所以对于计算机的学生,一定要深刻掌握其中的原理。可以去看看《深入理解计算机系统》这本书,也就是csapp,很多人给出了高分评价。总之,我认为,学好这门学科一定要多理解,多思考。(本文参考哈工大李治军老师的OS课)
磁盘结构
磁盘有柱面,扇区,磁道等结构,磁盘的访问单位是扇区,扇区的大小是512KB。扇区的大小是传输时间和碎片浪费的折中。
磁盘I/O过程:控制器→寻道→旋转→传输。
直接使用
很麻烦,需要很多参数。
一层抽象
磁盘驱动负责从block计算出 对应的参数。隐藏细节。
操作系统负责从一维编址到三味编址
磁盘访问时间 = 写入控制器时间 + 寻道时间 + 旋转时间+传输时间
空间换时间
盘块可以是好几个扇区合成一个盘块。
多个进程通过队列使用磁盘
第二层抽象
这里介绍一些磁盘调度算法
FCFS
SSFT 短寻道优先
SCAN 电梯算法 C-SCAN
SCAN 常见电梯,先往一头走, CSCAN 就是防止某个人一直按电梯,先负责把所有人送上去,然后再回来接。
总结
生磁盘使用整理
1.进程:得到盘块号,算出扇区号
2.用扇区号发起请求,根据相应算法
3进程 sleep_on
4磁盘中断处理
5.do_hd_request 算出相应的c h s
第三层抽象
在盘块引入更高一层的抽象概念,文件
映射 字符流映射到具体盘块
每个文件都有一个FCB
记录文件名,起始块
连续结构来实现文件
处理很快,但是增长的话,比较麻烦。
链式结构实现文件,每一个盘块存地址
读取的时候不如连续,但是动态增长很方便
索引方式实现文件
优点:
可以表示很大的文件
很小的文件高效访问
中等大小的文件访问速度也不慢
文件使用磁盘的实现
inode 索引表 我们可以看到,只需要拿到文件描述符,也就是句柄。
第四层抽象
目录与文件系统
将应用程序+存储的数据可以得到那棵文件树,找到文件、读写文件
用目录树进行划分
分治的思想。
引入了新的东西:目录,表示一个文件集合。
如何使用目录?
存目录项,用的什么目录文件。
引导块是固定的
超级块:记录两个位图有多大等信息