操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)
操作系统之磁盘与文件
L28 生磁盘的使用
-
raw disks -
使用磁盘从认知磁盘开始
-
读写磁盘的基本单位是扇区

-
移动磁头(到相应的磁道)--旋转磁盘(到相应的扇区)--和内存进行读写

-
清楚柱面,磁头,扇区,缓存位置的含义--直接使用磁盘
-
很多盘面形成柱头,移动磁臂到相应的柱面,磁头决定了哪个盘面

-
上面给出的信息太多,很麻烦,下面经过几层抽象
-
通过盘块号读写磁盘(一层抽象)
-
将三维信息编址到一维信息
-
移动磁臂时间称为寻道时间,减少寻道时间,这样相邻block(盘块号),应该尽量放在同一磁道上
-
现在利用盘块号来访问磁盘,一个盘块号可能有几个扇区,这样用空间换磁盘的读写时间

-
三维信息编址到一维信息,线性关系

-
由block反推CHS:

-
多个进程通过队列使用磁盘(第二层抽象)
-
cyl柱面,head磁头,sec扇区
-
利用文件使用磁盘叫熟磁盘;利用盘块号使用磁盘叫生磁盘!

磁盘调度算法
-
FCFS磁盘调度算法

-
SSTF磁盘调度
-
shortest seek time first -
一般请求在磁头中间部分的很多,这样磁臂都集中在中间移动,两边的磁盘请求存在饥饿

-
SCAN磁盘调用(电梯算法)

-
C-SCAN磁盘调度(电梯算法)

-
生磁盘的使用整理

L29 从生磁盘到文件
Files-cooked Disks- 如何从文件得到盘块号?
- 引入文件,对磁盘使用的第三层抽象!

- 字符流和盘块集合之间的映射关系
- 连续结构来实现文件,不适合动态增长,适合读写操作(数组操作)
- 文件控制块FCB,每个块的大小是固定的

- 链式结构也可以实现文件
- 磁盘有很多盘块号,文件怎么存储在这些盘块号中呢?盘块号的大小是固定的
- 关键是映射表怎么建立?

- 文件实现的第三种结构,索引结构
- 索引块来记录文件使用的盘块号

- 实际系统是多级索引!

- 学习数据结构的时候有学到用
B+-树进行文件索引!
L30 文件使用磁盘的实现
-
file implementation代码实现 -
inode内容为映射表,有索引块



-
磁盘文件inode则记录映射表;设备文件inode,记录与设备相关的信息

-
文件视图
-
文件名-->inode-->盘块号----

C/C++基本语法学习
STL
C++ primer


浙公网安备 33010602011771号