同步IO是指:线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备驱动程序的通知. 一.异步准备与OVERLAPPED结构 (1).为了以异步的方式来访问设备,必须先调用CreateFile,并在dwFlagsAndAttributes参数中指定FILE_FLAG_OVERLAPPED标志来打开设备.该标志告诉系统要以异步的方式来访问设备. 为了将I/O请求加入设备驱动程序的队列中,必须使用ReadFile和WriteF…
.NET中的 Overlapped 类 异步IO模型和Overlapped结构(http://blog.itpub.net/25897606/viewspace-705867/) 数据结构 OVERLAPPED结构主要用于异步I/O操作,其数据结构定义如下: typedef struct _OVERLAPPED {     DWORD Internal;     // 系统保留,存放系统设置的状态     DWORD InternalHigh; // 系统保留,存放被传输数据的长度     DW…
同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很好的一种方式. 线程是我们开发高性能.响应性好的一个必不可少的工具.这样在多处理器上就可以同时执行多个操作,从而提高吞吐量.当线程发出一个同步设备IO请求的时候,它会被临时挂起,直到设备完成IO请求为止.但线程阻塞会损害性能,这里有个问题是我们如何让线程不被挂起. 让线程始终进行有用的工作就需要它们…
RTT内核对象--设备 RT-Thread有多种内核对象,其中设备device就是其中一种. 内核继承关系图如下: 设备继承关系图如下: device对象对应的结构体如下: 其中,设备类型type有如下几类: 设备的操作方法结构体: I/O设备模型框架 RT-Thread 提供了一套简单的 I/O 设备模型框架 : 应用程序通过 I/O 设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互. I/O 设备管理层:实现了对设备驱动程序的封装. 设备驱动…
1.Linux字符设备驱动的基本结构 Linux系统下具有三种设备,分别是字符设备.块设备和网络设备,Linux下的字符设备是指只能一个字节一个字节读写的设备,不能随机读取设备内存中某一数据,读取数据的时候需要按照先后顺序进行,字符设备是面向流的设备,常见的字符设备有鼠标.键盘.串口.控制台和LED等,接下来,简单介绍Linux字符设备驱动的基本结构. (1)cdev结构体 在Linux内核中,使用结构体cdev对字符设备进行描述,其定义如下图所示: struct cdev { struct k…
上回最后面介绍了相关数据结构,下面再详细介绍 块设备对象结构 block_device 内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区.如果该结构代表一个分区,则其成员bd_part指向设备的分区结构.如果该结构代表设备,则其成员bd_disk指向设备的通用硬盘结构gendisk 当用户打开块设备文件时,内核创建结构block_device实例,设备驱动程序还将创建结构gendisk实例,分配请求队列并注册结构block_device实例. 块设备对象结构blo…
驱动程序就是向下控制硬件,向上提供接口,这里的向上提供的接口最终对应到应用层有三种方式:设备文件,/proc,/sys,其中最常用的就是使用设备文件,而Linux设备中用的最多的就是字符设备,本文就以字符设备为例来分析创建并打开一个字符设备的文件内部机制. struct inode Linux中一切皆文件,当我们在Linux中创建一个文件时,就会在相应的文件系统创建一个inode与之对应,文件实体和文件的inode是一一对应的,创建好一个inode会存在存储器中,第一次open就会将inode在…
驱动程序就是向下控制硬件,向上提供接口,这里的向上提供的接口最终对应到应用层有三种方式:设备文件,/proc,/sys,其中最常用的就是使用设备文件,而Linux设备中用的最多的就是字符设备,本文就以字符设备为例来分析创建并打开一个字符设备的文件内部机制. struct inode Linux中一切皆文件,当我们在Linux中创建一个文件时,就会在相应的文件系统创建一个inode与之对应,文件实体和文件的inode是一一对应的,创建好一个inode会存在存储器中,第一次open就会将inode在…
linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 一.linux设备驱动的作用 内核:用于管理软硬件资源,并提供运行环境.如分配4G虚拟空间等. linux设备驱动:是连接硬件和内核之间的桥梁. linux系统按个人理解可按下划分: 应用层:包括POSIX接口,LIBC,图形库等,用于给用户提供访问 内核的接口.属于用户…
Linux 内核及内核编程(1) 成于坚持,败于止步 Linux 2.6 内核的特点 Linux 2.6 相对于 Linux 2.4 有相当大的改进,主要体现在如下几个方面. 1.新的调度器 2.6 版本的 Linux 内核使用了新的进程调度算法,它在高负载的情况下执行得极其出色,并且当有很多处理器时也可以很好地扩展. 2.内核抢占 在 2.6 版本的 Linux 内核中,内核任务可以被抢占,从而提高系统的实时性.这样做最主要的优势在于可以极大地增强系统的用户交互性. 3.改进的线程模型 2.6…