• 【Linux 操作系统】I /O输入与输出


    输入与输出

    用设备控制器屏蔽设备差异

    • I/O 设备多种多样, 通过设备控制器范文设备( 类似代理商 )
      • 控制器像小电脑, 有芯片和寄存器, CPU 可通过读写寄存器访问设备
      • I/O 设备可分为两类:
        • 块设备:将信息存储在固定大小的块中,每个块都有自己的地址。硬盘就是常见的块设备。
        • 字符设备:发送或接受的是字节流。而不用考虑任何块结构,没有办法寻址。鼠标就是常见的字符设备。
      • CPU 如何同控制器的寄存器和数据缓冲区进行通信呢? 块设备控制器有缓冲区, 数据缓冲区即内存映射 I/O; 控制器寄存器有 I/O 端口, 可通过汇编指令操作.
      • 如何通知设备操作已完成:
        • 轮询等待控制器寄存器的状态标志位 :一直查询,直到完成 (不好)
        • 中断通知, 通过硬件中断控制器通知 CPU(硬件中断); ( 而软中断是在代码中调用 INT, 可触发系统调用 )
          在这里插入图片描述
      • DMA 功能, 设备在 CPU 不参与下, 自行完成内存读写; 由 DMA 协调控制磁盘控制器, 并发送中断通知 CPU 操作完成。
        在这里插入图片描述

    驱动程序屏蔽设备控制器差异

    • 设备控制器不属于操作系统的一部分; 而驱动程序属于, 可以被内核代码调用.
      在这里插入图片描述
      • 驱动程序应有统一的接口, 中断处理也在驱动里完成
      • 中断的处理流程:驱动初始化时, 注册中断处理函数; 中断统一出发 do_IRQ, 其找到注册的中断处理函数并执行进行中断。
        在这里插入图片描述
      • 对于块设备, 驱动与文件系统之间需要通用设备层; 通用设备层实现与块设备相关的通用逻辑, 位于与设备无关的操作

    用文件系统接口屏蔽驱动程序的差异

    • 设备驱动程序是用来对接设备控制器的,中断处理也应该在设备驱动里面完成。
    • 统一设备名称, 设备在 /dev/ 下有特殊设备文件, 其有 inode 但不关联存储介质数据, 只建立与驱动的连接; /dev/ 是在 devtmpfs 文件系统下, c→字符设备文件, b→块设备文件; 设备号: 主设备号(驱动程序), 次设备号(相应的单元); 可对设备文件使用文件的操作命令
      • 添加新设备, 需要安装驱动( Linux 中即加载一个内核模块 ), 用 lsmod 查看加载的内核模块, 可通过 insmod 安装; 有了驱动, 可用 mkmod 在 /dev/ 下创建设备文件.
    lsmod -- 查看驱动
    insmod xx.ko  -- 加载驱动
    mknod filename type major minor -- 创建设备文件 type 就是 c 为字符设备,b 为块设备  major 就是主设备号,minor 就是次设备号
    
    • 1
    • 2
    • 3
    • 或 /sys/sysfs 中是实际设备数的反映
      - /sys/devices 所有设备层次结构
      - /sys/dev char block 中用设备号链接到 /sys/devices 中
      - /sys/block 所有块设备
      • 守护进程 udev
        • 内核检测到新设备插入, 或创建 kobject 对象, 通过 sysfs 展现给用户, 并发送热插拔消息, udev 监听到消息并在 /dev/ 中创建设备文件
        • ioctl 可用于配置和修改设备信息.
          在这里插入图片描述

    总结

    最终到用户态,给用户提供了基于文件系统的统一的接口。
    在这里插入图片描述

    字符设备

  • 相关阅读:
    根目录/ 空间不够,扩容,导致web页面无法加载问题
    【软件测试】selenium3
    低代码开发平台应该如何分类?
    SRS服务器ffmpeg 推流rtmp超时中断
    线段覆盖 大数 贪心算法
    格密码入门
    【马士兵】 Python基础--11
    【Python小项目之Tkinter应用】随机点名/抽奖工具大优化:新增选项窗口!可选是否重复点名以及随机点名!可以手动选择文件及文件类型并预览文件!
    4k壁纸爬100页 python
    修复青龙面板白屏
  • 原文地址:https://blog.csdn.net/weixin_49486457/article/details/126095892