runrune
驱动牛犊
驱动牛犊
  • 注册日期2007-06-28
  • 最后登录2007-08-11
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1924回复:10

双核下驱动如何正确运行???

楼主#
更多 发布于:2007-08-08 03:56
最近整了个双核处理器(INTEL酷睿系列的),速度上当然提升了不少,不过郁闷的问题也多了.

首先:原先在单核上可正确运行的驱动,到了双核下运行马上蓝屏、重启。

其次:当我把驱动部分代码加上SpinLock之后,有时可运行,有时则又蓝屏,重启。
   (DUNP文件里面显示“在过高的IRQL下访问了分页内存,这个问题还没解决)

问题是:我的驱动为什么是“时好时坏”,而不是“坏到底”?
  注:(驱动中涉及到同步操作,创建了一个线程。)

引申的问题:双CPU下,CPU执行的最小单位是?线程还是指令?

做了个小测试:当运行一个死循环单线程程序时,CPU0(几乎)满负载运行,CPU1则(几乎)无负载运行。
当运行两个死循环单线程程序时,CPU0和CPU1则满负载运行。

按测试结果,个人理解是:CPU0是“主”CPU,当运行单线程时CPU0负责线程的大部分工作(CPU1有没有分担线程部分指令的工作呢?)。
当有另外的线程运行时,CPU1开始执行新线程的工作。

不知这里哪位老大对这方面比较熟悉,帮忙讲解一下。
或是给个比较权威说法的链接,谢谢~~~

相信多处理器的普及,会给编写驱动的人带来不少的麻烦。
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-08-08 11:19
检查一下spin lock acquire和release之间有没有访问分页内存~(判断+pagelock)
驱动开发者 呵呵
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-08-08 14:37
影响不是很大!主要是你的同步之类的没做好!或者在过高的IRQL中,访问了非分页or 分页内存
人不靓仔心灵美,版头不正红花仔!
runrune
驱动牛犊
驱动牛犊
  • 注册日期2007-06-28
  • 最后登录2007-08-11
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-08 16:01
引用第1楼WQXNETQIQI于2007-08-08 11:19发表的  :
检查一下spin lock acquire和release之间有没有访问非分页内存~(判断+pagelock)


是不能访问非分页内存???
还是不能访问分页内存?

如何判断呢??
runrune
驱动牛犊
驱动牛犊
  • 注册日期2007-06-28
  • 最后登录2007-08-11
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-08 16:06
引用第2楼ProPlayboy于2007-08-08 14:37发表的  :
影响不是很大!主要是你的同步之类的没做好!或者在过高的IRQL中,访问了非分页or 分页内存


KeAcquireSpinLock,IRQL 提升到Dispath_Lev,在这个级别不能访问分页内存。

连非分页内存也不能访问???
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-08-08 16:16
1楼说错了,,是分页内存。。。 -.-
驱动开发者 呵呵
oushengfen
驱动牛犊
驱动牛犊
  • 注册日期2007-06-28
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分747分
  • 威望124点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-09-04 15:34
啊,我只知道多处理器要注意保持同步的问题,但没有想到问题这么严重啊
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-09-04 20:11
引用第6楼oushengfen于2007-09-04 15:34发表的  :
啊,我只知道多处理器要注意保持同步的问题,但没有想到问题这么严重啊


还有这段代码本身不能放在分页内存上
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-09-05 04:01

最好运行时用KeSetXXX邪恶函数指定线程cpu
没有战争就没有进步 X3工作组 为您提供最好的军火
zjjmj2002
驱动小牛
驱动小牛
  • 注册日期2007-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望321点
  • 贡献值0点
  • 好评度224点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2007-09-05 09:28
双核这东东,性能没啥提高,倒是把驱动程序员给忙活了。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
10楼#
发布于:2007-09-05 09:44
以后的编译器会对双核或多核优化的.

双核目前跑服务器软件比较高效
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部