• 二十五、设备驱动程序(Linux设备驱动、GPU和COUA;存储设备抽象)


    一、IO设备抽象

    1、主要功能:输入和输出

    操作系统:设备=支持各类操作的对象(文件)

    1、read:从指定位置读取数据

    2、write:从指定位置写入设备

    3、ioctl:读取/设置设备状态

    二、设备驱动程序

    1、一些普通内核程序

    2、例子:

    (1)/dev/pts/[x]      //终端

    (2)/dev/zero        //零设备(读零)

    (3)/dev/null         //“null”设备(接收写)

    (4)/dev/random,/dev/urandom        //随机数生成器

    三、Linux设备驱动

    1、内核模块:一段可以被内核动态加载执行的代码

    (1)设备就实现了struct file_operations对象

    (2)在内核中初始化、注册设备

    1. struct file_operations {
    2. struct module *owner;
    3. loff_t (*llseek) (struct file *, loff_t, int);
    4. ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
    5. ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
    6. int (*mmap) (struct file *, struct vm_area_struct *);
    7. unsigned long mmap_supported_flags;
    8. int (*open) (struct inode *, struct file *);
    9. int (*release) (struct inode *, struct file *);
    10. int (*flush) (struct file *, fl_owner_t id);
    11. int (*fsync) (struct file *, loff_t, loff_t, int datasync);
    12. int (*lock) (struct file *, int, struct file_lock *);
    13. ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
    14. long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
    15. long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
    16. int (*flock) (struct file *, int, struct file_lock *);
    17. ...

    四、GPU的驱动

    Single Instruction, Multiple Thread

    共用PC指针的并行运算的运算单元

    五、存储设备的抽象

    1、以数据块 (block) 为单位访问

    (1)传输有 “最小单元”,不支持任意随机访问

    (2)最佳的传输模式与设备相关 (HDD v.s. SSD)

    2、大吞吐量

    (1)使用 DMA 传送数据

    3、应用程序不直接访问

    (1)访问者通常是文件系统 (维护磁盘上的数据结构)

    (2)大量并发的访问 (操作系统中的进程都要访问文件系统)

     

  • 相关阅读:
    速领!最新最全的C6678+Kintex-7视频/高速AD开发案例合集来了,附上源码!
    JavaScript中的Hoisting机制
    1004 Counting Leaves
    【云原生】设备入云之FStudio 2.0通讯操作经验
    【强化学习】03 ——马尔可夫决策过程
    excel中删除重复项
    SpringBoot+vue实现前后端分离的摄影跟拍预定管理系统
    NO.1 | 704. 二分查找,27. 移除元素
    为什么都去卷文本生成图像???
    重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了
  • 原文地址:https://blog.csdn.net/liutit/article/details/125530213