首页
社区
课程
招聘
[求助]一个关于IDT,驱动,消息,与线程调度的问题!
发表于: 2009-4-24 17:40 4152

[求助]一个关于IDT,驱动,消息,与线程调度的问题!

2009-4-24 17:40
4152
我的一个SDK程序中响应了WM_KEYDOWN消息,这个SDK程度与其它两个while()死循环线程同时运行

当我按下键盘上的键之后,系统应当进入IDT中的服务函数吧,然后调用WINDOWS的键盘驱动,键盘驱动产生相应的消息,加入到相应的进程的消息队列中

如果我按下键盘之前系统的时间片正分配给WHILE线程,然后,产生中断,产生消息,之后系统把时间片分给哪个线程呢?这个过程,线程的如何调度的?

请高手指点!

还有以上我的理解如果有错误请您指出,谢谢了!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我看不懂你上面说的意思,SDK程序是什么意思?和while死循环又有什么关系?

你得说清楚,while循环是一个独立的线程,还是和窗口线程...

你的意思是不是一个程序,里面创建了2条线程,这2条线程分别是2个while死循环.

然后你又再这个程序上面按下了某个键盘,是不是这意思呢?
2009-4-24 18:02
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果是上面的意思,那当你键盘按下的时候这个是有窗口线程来接收的.

和你拖动程序的窗口,就可以看出谁优先处理了..
2009-4-24 18:07
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不好意思我没说明白

我的一个进程是窗口程序,有消息循环
别外一个进程有两个线程,都是WHILE循环
理论上CPU应当为这两个进程中的每一个线程分配时间片吧

当我按键盘,WM_KEYDOWN消息发给窗口程序

这个消息应当由键盘驱动产生吧

如果消息产生之前CPU时间片分给WHILE循环,那么产生驱动(RING0层程序)之后,回到(RING3下)用户模式代码,这时系统重新调度线程?还是直接回到WHILE循环线程?或是把时间片分给窗口程序呢?
2009-4-24 22:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是不是我问的还是不明白,我也说不太清楚了!
2009-4-25 19:39
0
雪    币: 129
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
直接回原来的WHILE线程和重新调度线程同一回事吧.

中断响应后,CPU处理你的中断,当时CPU线程已经被切出WHILE线程了,处里完中断程序,就是你的窗口线程后,再切回原来的WHILE线程
2009-4-25 23:45
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哦我明白了,谢谢!!
2009-4-26 09:25
0
游客
登录 | 注册 方可回帖
返回
//