comealong
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2012-01-19
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1400回复:4

两个弱问, 不要见笑

楼主#
更多 发布于:2004-11-15 16:38
1 请问设备与驱动是怎么联系在一起的
对不住了,弱了
就是想问,驱动怎么知道它该控制哪个设备呢?
比如有两块网卡,eth0 , eth1
eth0 的 驱动程序怎么知道把发送数据的命令发给eth0,而不是eth1
而 eth0 在接收到数据后,怎么知道把处理权交给其驱动程序,而不是eth1的处理程序?

2 谁能说说2k中在陷入内核时的栈切换过程呀???
内核态的栈当前值在哪保存的呀???
谢谢


[编辑 -  11/15/04 by  comealong]
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
沙发#
发布于:2004-11-16 06:48
第一个问题...

如果自己的驱动都不知道自己在控制什么设备...那还有谁会知道某个驱动在操作哪个设备呢...呵呵...
一般的讲..一个设备对应一个pdo,一个pdo上面会有一个fdo..os会把对设备的请求发送到你的fdo..fdo有责任保存他对应的pdo的指针..这样就能操作设备了...
至于你举的网卡的例子...复杂多了...你要发送出去的数据..不仅仅是发送到某个网卡这么简单的...

fdo当然知道自己操作的硬件是什么了..其实也没有必要去区分某个硬件..以为一般的讲..操作硬件并不需要知道自己的硬件是哪个..而只是需要跟这个硬件相关联的信息..比如寄存器.比如中断..这些就是区分硬件的方式..如果你要问这些信息是怎么来的..那就跟麻烦了...呵呵

第二个问题intel架构下的这些东西都保存在一个tss结构里面..你可以查查intel的资料...那个vol3 system programming..
至于windows嘛...稍微有些不同..windows会把这些信息保存到kernel thread block里面...大致的讲..windows能从fs:[xx]里面寻址到这个东西..然后更新诸多的寄存器....你可以看看windows的源代码

以上....都为回忆的结果...不一定对
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
板凳#
发布于:2004-11-16 07:19
第二个问题

How do Windows NT System Calls REALLY work?

http://www.summitsoftconsulting.com/NtSystemCalls.htm
comealong
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2012-01-19
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望105点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-16 10:34
谢谢各位大侠

hehe,原来各环的esp ss 保存在tss里
以前看的时候,也没往心里去

第一个问题还是没弄明白

哪位大哥能不能说说,要弄明白该看哪些书呀

[编辑 -  11/16/04 by  comealong]
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-16 10:58
第一个问题很多讲驱动的书应该都要讲的。
在交流中学习。。。
游客

返回顶部