二十五、设备驱动程序(Linux设备驱动、GPU和COUA;存储设备抽象)
发布时间:2022-10-24 14:51:47 所属栏目:Linux 来源:
导读: 一、IO设备抽象
1、主要功能:输入和输出
操作系统:设备=支持各类操作的对象(文件)
1、read:从指定位置读取数据
2、write:从指定位置写入设备
3、ioctl:读取/设置
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编程网 - 钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330484号