【哈工大_操作系统理论】L28&29&30 生磁盘的使用&从生磁盘到文件&文件使用磁盘的实现

L4.3 生磁盘的使用

1、认识磁盘

  • 选择磁道
  • 旋转扇区
  • 数据读写
  • 哪一个柱面 C
  • 哪一个磁头 H
  • 哪一个扇区 S

2、第一层抽象:盘块号block

发送盘块号block,磁盘驱动根据 block 计算出 cyl、head、sec(CHS)

  • 磁盘访问时间主要是寻道时间和旋转时间,因此增大每次读写磁盘的基本单位(扇区->盘块),可以增大读写速度,但会降低空间利用率。

  • block 反推 CHS过程:

    1. block对Sectors取余(即代码中%4第四个参数,即hd_info[dev].sect),得到的余数即为S。(注:Sectors为一个盘的扇区数,Head为一个柱面的磁头数,都是提前知道的)
    2. 上述取余商可知CHeads+H的值,对Heads再取余(即代码中%4第四个参数,即hd_info[dev].head),商即为C,余数即为H

代码显示,一个盘块左移一位即为扇区数,所以一个盘块对应两个扇区,而一个扇区512byte,所以linux0.11一个盘块1K

3、第二层抽象

多个进程将盘块号放在请求队列上,磁盘驱动从队列中取出。

磁盘调度算法:

  1. FCFS:先来先处理
  2. SSTF:短寻道优先
    • 存在饥饿问题
  3. SSTF:电梯算法
  • 直接复位到另一端(复位占时间少),这样子中间的队列就不占便宜了,对于所有请求都是公平的

4、生磁盘使用整理


L4.4 从生磁盘到文件

1、第三层抽象:引入文件,根据映射表可以找到字符流对应的盘块号,用户不用关心盘块号

FCB 中存储文件信息

2、顺序结构:不适合于动态生长,但适合于读写

3、链式结构:适合于动态生长,但不适合于读写

4、索引结构

文件的FCB即inode ,open把文件的inode读入

实际系统是多级索引


L4.5 文件使用磁盘的实现

  • inode存放文件的FCB
  • file存放位置200
  • count存放大小12
相关推荐
燃于AC之乐17 小时前
【Linux系统编程】进程调度解析:优先级与O(1)调度算法
linux·操作系统·进程调度·进程优先级·调度算法
_OP_CHEN1 天前
【Linux系统编程】(二十)揭秘 Linux 文件描述符:从底层原理到实战应用,一篇吃透 fd 本质!
linux·后端·操作系统·c/c++·重定向·文件描述符·linux文件
凉、介1 天前
ARM 架构中的内存屏障
arm开发·笔记·学习·架构·操作系统·嵌入式
Trouvaille ~2 天前
【Linux】进程信号(一):信号的快速认识与五种产生方式
linux·运维·网络·c++·操作系统·信号处理·中断
mifengxing2 天前
操作系统(一)
大数据·数据库·操作系统
Trouvaille ~2 天前
【Linux】进程间通信(三):共享内存深度剖析与System V IPC机制
linux·c++·操作系统·管道·进程间通信·信号量·system v
_OP_CHEN3 天前
【Linux系统编程】(十九)深入 Linux 文件与文件 IO:从底层原理到实战操作,一文吃透!
linux·运维·操作系统·系统文件·系统调用·c/c++·文件i/o
c++逐梦人3 天前
进程控制(2)进程程序替换
linux·操作系统·进程
柏木乃一4 天前
ext2文件系统(2)inode,datablock映射,路径解析与缓存,分区挂载,软硬连接
linux·服务器·c++·缓存·操作系统
lcreek4 天前
Linux信号机制详解:阻塞信号集与未决信号集
linux·操作系统·系统编程