zoukankan      html  css  js  c++  java
  • 操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)

    操作系统之磁盘与文件

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

  • 相关阅读:
    sshpass连接主机以及执行命令
    elk集群配置并破解x-pack
    socket实现简单通信会话
    docker容器跨宿主机通信
    docker运行wordpress
    centos7 利用docker运行nginx项目
    docker容器基础命令
    docker镜像基础命令
    vue中使用延时加载
    less
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/7173514.html
Copyright © 2011-2022 走看看