• 二十五、设备驱动程序(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)大量并发的访问 (操作系统中的进程都要访问文件系统)

     

  • 相关阅读:
    谈一下相对位置编码
    Spark Streaming状态管理函数
    数据库Mysql三大引擎(InnoDB、MyISAM、 Memory)与逻辑架构
    关系数据库的原子性
    在ubuntu上使用vscode+gcc-arm-none-eabi+openocd工具开发STM32
    Unity ECS 内存分配器原理详解
    JVM及其垃圾回收机制(GC)
    Linux —— 权限的理解
    连接MySQL时报错:Public Key Retrieval is not allowed的解决方法
    java计算机毕业设计深州市特色蜜桃产业电子商务系统源程序+mysql+系统+lw文档+远程调试
  • 原文地址:https://blog.csdn.net/liutit/article/details/125530213