设备独立性

    670
    最后修改于
    磁盘缓存与缓冲区#

    Buffer 在内存上开辟一片区域作为缓冲
    单缓冲:写入后等待缓冲区空闲才可以继续写
    双缓冲:可以实现一面写,写第二面的时候,可能第一面就在读
    循环缓冲:多个大小相等的循环链式缓冲区,首尾用 in/out 指针指示
    缓冲池:多个缓冲区组成,分为空缓冲队列、满输入缓冲队列、满输出缓冲队列。
    image.png

    设备分配与回收#
    • 独占使用设备
    • 分时共享设备
    • SPOOLing 设备

    设备分配数据结构

    • 设备控制表:代表一个设备。包含设备信息
    • 控制器控制表:设备控制器控制设备与内存交换数据,存放相应通道控制表指针
    • 通道控制表,一个通道可为多个控制器服务,指向多个控制器
    • 系统设备表:全局唯一,记录物理设备情况

    设备分配策略:静态分配(用于独占,一次性分配)、动态分配
    分配安全性:分配应当防止进程死锁。

    • 安全分配:进程 I/O 就阻塞,直到 I/O 完成再唤醒。CPU 与 I/O 串行工作
    • 不安全分配:I/O 时可以继续请求 I/O 设备,如果被占用就阻塞,可能死锁

    逻辑设备名到物理设备名的映射:系统中设置逻辑设备表 LUT 映射到物理设备。可以整个系统一个映射表,或是每个用户一个映射表
    设备驱动程序接口
    系统提供统一 / 相似接口,适配不同设备。

    SPOOLing 技术#

    将独占设备改造为共享设备

    image.png
    输入输出井,模拟脱机 I/O 的磁盘,临时存放 I/O 内容。
    输入输出缓冲区,暂存 I/O 内容。
    输入输出进程控制 I/O,用户数据从 输入设备到输入缓冲区再到输入井,当 CPU 需要输入时,直接从输入井读入内存。输出时,从 CPU 到输出缓冲区再到输出井,等待输出设备空闲时再输出。
    提高 I/O 速度,实现虚拟设备。

    • 🥳0
    • 👍0
    • 💩0
    • 🤩0