Fork me on GitHub

操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)

操作系统之磁盘与文件

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-->盘块号----

posted @ 2017-07-15 00:06  ranjiewen  阅读(874)  评论(0编辑  收藏  举报