Adolph两边

 

2011年12月18日

同步,异步,阻塞,非阻塞

摘要: 阻塞:等待资源直到可用,并且完成操作后返回.非阻塞:检查资源是否可用,可用就完成操作,不可用直接返回.同步I/O:必然导致进程阻塞,直到I/O操作完成.(只是根据采用的I/O模型不同,等待资源的方式不一样,可以是:阻塞,非阻塞,复用,信号驱动.执行I/O操作时必然导致进程阻塞.)异步I/O:不会导致应用进程阻塞.(也就是所有I/O操作完成以后,应用进程就已经获得了全部数据,然后获得信号通知.) 阅读全文

posted @ 2011-12-18 12:30 Adolph两边 阅读(133) 评论(0) 推荐(0) 编辑

2011年12月4日

LDD 第三章 (二.一个简化过的超级简单的scull实现)

摘要: 看LDD到第三章,发现example里面包含了前几章的内容.于是重新实现了只依赖第三章中所提及的部分.顺道加了实现流程的注释,有助于理解整个实现的过程.scull.hView Code #ifndef _SCULL_H_#define _SCULL_H_#ifndef SCULL_MAJOR#define SCULL_MAJOR 0 /*默认的动态主设备号*/#endif /* SCULL_MAJOR */#ifndef SCULL_QUANTUM#define SCULL_QUANTUM 4000#endif /* SCULL_QUANTUM */#ifn... 阅读全文

posted @ 2011-12-04 19:40 Adolph两边 阅读(619) 评论(0) 推荐(0) 编辑

2011年12月2日

LDD 第三章 (一.重要的结构和实现)

摘要: 一.重要的结构和实现设备描述结构struct scull_dev {struct scull_qset *data; int quantum; int qset; unsigned long size; unsigned int access_key; struct semaphore sem; struct cdev cdev;};设备量子集struct scull_qset {void **data;struct scull_qset *next;};起初看了上面的图有一些不明白,当看了scull_trim的代码以后,就很清晰了.很多地方的指针被申明为void *,主要是为了让你在使用之前 阅读全文

posted @ 2011-12-02 15:19 Adolph两边 阅读(265) 评论(0) 推荐(1) 编辑

关于数组的一些高级分析

摘要: 今天为了描述这个问题,折腾了很久.下面就总结归纳一下.首先数组名是不占空间的.列:int a[10];printf("%d", a);printf("%d", &a);上面的输出是一样的.而指针是占用空间的.int b[10];int *p;p = b;printf("%d", p);printf("%d", &p);上面的输出是不一样的.下面开始重点部分:多维数组.实际上我是不建议理解成多维数组的.内存都是线性的,仅此而已.大家可以看看下面这个例子.int a[] = {1,2,3,4,5};in 阅读全文

posted @ 2011-12-02 15:14 Adolph两边 阅读(129) 评论(0) 推荐(0) 编辑

导航