操作系统-I/O

本文介绍了操作系统中的I/O特点,包括设备分类如字符设备、块设备和网络设备,以及同步异步I/O的不同模式。深入探讨了I/O结构,如设备寄存器、I/O地址、CPU与设备的通讯方式等,并讲解了内存映射I/O和各种数据传输方式,如DMA、程序控制I/O。最后提到了磁盘调度和缓存的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I/O特点

设备分类

  • 字符设备

    • 以字节为单位顺序访问
    • 通常使用文件访问接口和语义
  • 块设备

    • 均匀的数据块访问
    • 通常使用I/O命令访问
      • 原始I/O和文件系统接口
      • 内存映射文件访问
  • 网络设备

    • 格式化的报文交换
    • I/O命令
      • send/receive 网络报文
      • 通过网络接口支持多种协议

同步异步 I/O

  • 阻塞I/O:wait
  • 非阻塞I/O:do not wait
  • 异步I/O:tell me later

I/O 结构

  • 北桥 高速设备
  • 南桥 I/O设备

在这里插入图片描述

设备寄存器

  • CPU和I/O设备的接口
  • 向CPU提供特殊指令和寄存器

I/O地址

  • CPU用来控制I/O硬件
  • 内存地址或端口号
    • I/O指令
    • 内存映射I/O

CPU与设备的通讯方式

轮询、中断、DMA

I/O指令

  • 通过I/O端口号访问设备寄存器
  • 特殊的CPU指令
    • out 0x21,AL

内存映射I/O

  • 设备的寄存器/存储被映射到内存地址空间中
  • 通过内存 load/store 指令完成I/O操作
  • MMU设置映射,硬件跳线或程序在启动时设置地址

内核I/O

在这里插入图片描述

I/O请求生命周期

在这里插入图片描述

I/O数据传输

程序控制I/O

  • 通过CPU in/out load/store传输所有数据
  • 特点
    • 硬件简单,编程容易
    • 消耗CPU时间和数据量成正比

DMA

  • 设备控制器可直接访问系统总线
  • 控制器与内存互相传输数据
  • 特点
    • 设备传输数据不影响CPU
    • 需要CPU参与设置

直接寻址读取

在这里插入图片描述

I/O设备通知操作系统的方式

  • 操作系统需要了解设备状态

    • I/O操作完成时间
    • I/O操作遇到的错误
  • 两种方式

    • CPU主动轮询:状态寄存器
    • 设备中断

磁盘调度和缓存

TBD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值