织梦CMS - 轻松建站从此开始!

罗索

关于IP包的中断处理

jackyhwei 发布于 2010-08-11 12:07 点击:次 
最近在看TCP的时候,书上说一个分组上来之后,是先被设备中断处理。就觉得比较好奇。回想以前在cfans上看到过一篇讲解中断的文章,写的很生动。
TAG:

        最近在看TCP的时候,书上说一个分组上来之后,是先被设备中断处理。就觉得比较好奇。回想以前在cfans上看到过一篇讲解中断的文章,写的很生动。

        就是说有一个繁忙的工厂,厂长就是CPU,工厂里面还有硬盘,内存等各个车间,那么厂长应该怎么对各个车间管理呢?有一种方法就是厂长一个个车间挨个视察一下,有什么问题当场处理。但是这样显然效率很低,因为很多没事情的车间厂长都要去巡视。这个方式就是轮询(poll)
        另外的办法就是在厂长的办公室装上电话,通到每一个车间,车间有事情了就打电话来汇报,让厂长处理。这样显然效率高多了,这样一个电话就是一个中断,对应的电话号码就是中断号。

        那么一个分组到达一个PC之后,会触发一次中断,就是网卡会给CPU报一个中断事件,之后PC会调度一个响应该中断的处理器来处理这个事情。这个层面就是驱动程序层面。

        一个典型的设备驱动程序要完成以下事情:驱动程序的注册和注销,设备的打开与释放,设备的读写,设备的控制操作和设备的中断轮询处理。

        网络数据包的处理,在这里就属于读写和中断处理。在Linux中,一个网络设备驱动程序必须有hard_start_xmit回调方法,系统需要发送数据的时候,就调用这个方法,发送的数据存放在sk_buff之中。接收则是响应中断,一般是调用request_irq()、free_irq()来进行申请和释放中断。收到的数据也是存放在申请的一块sk_buff之中,并在里面设置一些相关信息,比如协议类型等等,最后调用netif_rx()送给协议栈。

        最后说一下,相关理论知识有些是baidu而来,未有验证。

PS:记得最早接触电脑的时候,还是DOS,当时运行一个声卡必须要自己装驱动,还要手动配置中断,要不打游戏就没声音的,呵呵。
 

(fanged)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201008/9958.html]
本文出处:fanged.ycool.com 作者:fanged
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容