主题 : 内核时间片调整 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
楼主  发表于: 2009-05-07 23:35

 内核时间片调整

好象2440默认100HZ的时间片,调整到了1000HZ之后好象作用不大,中断响应速度还是不够,我这里有个间隔5ms的中断源,为什么还是不能正常响应中断呢?

或者说哪个地方可以调整这个时间片呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-05-17 10:28
老实说我不知道你在说什么,但我可以肯定,5ms的中断Linux不需要任何调整就可以响应。
在Linux架构中,硬件中断和时间片没有关系,硬件中断在任何时候始终是最高优先级的,只有软件中断才会受CPU调度时间片影响。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
2楼  发表于: 2009-05-19 13:13
这样说吧,中断处理linux的确很快,us级的,但是中断处理是在内核完成的,如果在内核中中断处理的时间过长(从总线读8K的数据),不知道什么原因,系统会死掉,从编程的角度这样也不太规范。但如果置标志位在应用程序读数据的话,就要改时间片了。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2009-05-19 13:55
引用第2楼powerpan于2009-05-19 13:13发表的  :
这样说吧,中断处理linux的确很快,us级的,但是中断处理是在内核完成的,如果在内核中中断处理的时间过长(从总线读8K的数据),不知道什么原因,系统会死掉,从编程的角度这样也不太规范。但如果置标志位在应用程序读数据的话,就要改时间片了。

不要在硬件的中断处理函数(ISR)里做大量的数据IO,ISR应该尽快返回以免造成别的硬件中断延迟。那应该是中断处理线程(IST)该做的,比如,在硬件中断处理函数里唤醒一个专门用于从硬件中读数据的内核线程(kernel thread),将数据放到驱动的buffer中,最后唤醒等着读数据应用程序。这是目前主流的硬件中断+阻塞式读写数据实现方式。
关于中断处理,Linux Device Driver 第三版里第十章"Interrupt Handling"这一章里有很详细的描述。关于阻塞方式的IO,看这本书的第6章"Advanced Char Operations"
[ 此帖被kasim在2009-05-19 14:03重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."