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

操作系统之磁盘与文件

L28 生磁盘的使用

  • raw disks
  • 使用磁盘从认知磁盘开始
  • 读写磁盘的基本单位是扇区
    FKI664S.png
  • 移动磁头(到相应的磁道)--旋转磁盘(到相应的扇区)--和内存进行读写
    fCKnCje.png
  • 清楚柱面,磁头,扇区,缓存位置的含义--直接使用磁盘
  • 很多盘面形成柱头,移动磁臂到相应的柱面,磁头决定了哪个盘面
    S7Q3Abf.png
  • 上面给出的信息太多,很麻烦,下面经过几层抽象
  • 通过盘块号读写磁盘(一层抽象
  • 将三维信息编址到一维信息
  • 移动磁臂时间称为寻道时间,减少寻道时间,这样相邻block(盘块号),应该尽量放在同一磁道上
  • 现在利用盘块号来访问磁盘,一个盘块号可能有几个扇区,这样用空间换磁盘的读写时间
    knEJZBS.png
  • 三维信息编址到一维信息,线性关系
    Qa9Rq45.png
  • 由block反推CHS:
    gVpya4S.png

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

磁盘调度算法
  • FCFS磁盘调度算法
    1iiKyS6.png
  • SSTF磁盘调度
  • shortest seek time first
  • 一般请求在磁头中间部分的很多,这样磁臂都集中在中间移动,两边的磁盘请求存在饥饿
    A78Nspm.png
  • SCAN磁盘调用(电梯算法)
    CDjmyN4.png
  • C-SCAN磁盘调度(电梯算法)
    NxkIhUL.png

  • 生磁盘的使用整理
    IMy7Ko5.png

L29 从生磁盘到文件

  • Files-cooked Disks
  • 如何从文件得到盘块号?
  • 引入文件,对磁盘使用的第三层抽象!
    60JDN62.png
  • 字符流和盘块集合之间的映射关系
  • 连续结构来实现文件,不适合动态增长,适合读写操作(数组操作)
  • 文件控制块FCB,每个块的大小是固定的
    QB5Hmg4.png
  • 链式结构也可以实现文件
  • 磁盘有很多盘块号,文件怎么存储在这些盘块号中呢?盘块号的大小是固定的
  • 关键是映射表怎么建立?
    y0Os5OE.png
  • 文件实现的第三种结构,索引结构
  • 索引块来记录文件使用的盘块号
    uRVK0vR.png
  • 实际系统是多级索引!
    zNlEOCo.png
  • 学习数据结构的时候有学到用B+-树进行文件索引!

L30 文件使用磁盘的实现

  • file implementation代码实现
  • inode内容为映射表,有索引块
    Sim3D2B.png
    VlnqosD.png
    rKSKIOM.png
  • 磁盘文件inode则记录映射表;设备文件inode,记录与设备相关的信息
    fFpjnXP.png

  • 文件视图
  • 文件名-->inode-->盘块号----
    nGQmK0Z.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值