- 中断和轮询哪个效率高?怎样决定是采用中断方式还是采用轮询方式去实现驱动?
- 原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源只有一个使用者行不行?
- 设备驱动模型三个重要的成员是?platfoem总线的匹配规则是?
- ** int *p 和char *p分别占几个字节
**中断是CPU处于被动状态下来接受设备的信号,而轮询是CPU主动去查询该设备是否有请求。凡事都是两面性,所以,看效率所以,看效率不能简单的说那个效率高。如果是请求设备是一个频繁请求cpu的设备,或者有大量数据请求的网络设备,那么轮询的效率是比中断高。如果是一般设备,并且该设备请求cpu的频率比较底,则用中断效率要高一些。主要是看请求频率。 **
原子操作你怎么理解?为了实现一个互斥,自己定义一个变量作为标记来作为一个资源只有一个使用者行不行?原子操作指的是无法被打断的操作。
第二句话的意思是:
定义一个变量,比如
int flag =0;
if(flag == 0) // 2
{
flag = 1; //3
//操作临界区;
flag = 0;
}
这样是不行的,第二句程序和第三句程序之间发生任务切换,就废了
设备驱动模型三个重要的成员是?platfoem总线的匹配规则是?总线 ,设备,驱动。匹配规则就是当有一个新的设备被挂时,总线被唤醒,match函数被调用,用device名字去跟本总线下的所有驱动名字去比较。相反就是用驱动名字去device链表中和所有device的名字比较。如果匹配上,才会调用驱动中的probe函数
** int *p 和char *p分别占几个字节这两个类型的指针所占的地址是一样,因为它们存的都是地址,地址在同一个系统中是固定长度,长度是有系统位数决定的。操作系统是32位,长度则为4个字节,操作系统为64位,长度则为8个字节。



