加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

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

发布时间:2022-10-24 14:51:47 所属栏目:Linux 来源:
导读:  一、IO设备抽象

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

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

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

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

  3、ioctl:读取/设置
  一、IO设备抽象
 
  1、主要功能:输入和输出
 
  操作系统:设备=支持各类操作的对象(文件)
 
  1、read:从指定位置读取数据
 
  2、write:从指定位置写入设备
 
  3、ioctl:读取/设置设备状态
 
  二、设备驱动程序
 
  1、一些普通内核程序
 
  2、例子:
 
  (1)/dev/pts/[x] //终端
 
  (2)/dev/zero //零设备(读零)
 
  (3)/dev/null //“null”设备(接收写)
 
  (4)/dev/randomlinux 驱动,/dev/urandom //随机数生成器
 
  三、Linux设备驱动
 
  1、内核模块:一段可以被内核动态加载执行的代码
 
  (1)设备就实现了struct file_operations对象
 
  嵌入式linux驱动程序设计从入门到精通_linux mtp 驱动_linux 驱动
 
  (2)在内核中初始化、注册设备
 
  struct file_operations {
    struct module *owner;
    loff_t (*llseek) (struct file *, loff_t, int);
    ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
    ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
    int (*mmap) (struct file *, struct vm_area_struct *);
    unsigned long mmap_supported_flags;
    int (*open) (struct inode *, struct file *);
    int (*release) (struct inode *, struct file *);
    int (*flush) (struct file *, fl_owner_t id);
    int (*fsync) (struct file *, loff_t, loff_t, int datasync);
    int (*lock) (struct file *, int, struct file_lock *);
    ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
    long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
  linux 驱动_linux mtp 驱动_嵌入式linux驱动程序设计从入门到精通
 
 
    long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
    int (*flock) (struct file *, int, struct file_lock *);
    ...
  四、GPU的驱动
 
  Single Instruction, Multiple Thread
 
  共用PC指针的并行运算的运算单元
 
  五、存储设备的抽象
 
  1、以数据块 (block) 为单位访问
 
  (1)传输有 “最小单元”,不支持任意随机访问
 
  (2)最佳的传输模式与设备相关 (HDD v.s. SSD)
 
  2、大吞吐量
 
  (1)使用 DMA 传送数据
 
  3、应用程序不直接访问
 
  (1)访问者通常是文件系统 (维护磁盘上的数据结构)
 
  (2)大量并发的访问 (操作系统中的进程都要访问文件系统)
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!