linux协议栈之链路层上的数据传输-----预备知识
来源:互联网 发布:ngui具体用什么优化 编辑:程序博客网 时间:2024/06/05 02:51
出处:http://ericxiao.cublog.cn/
------------------------------------------
<<prison break>>第三季的第五集,终于在翘首企盼中姗姗来迟了,scofid用它惊人的智慧一次次化险为夷,但在邪恶的sona监狱他将如何逃脱呢?这我们不得而知,但我们可以分析Linux网络驱动来得到数据包是怎么通过物理接口的这一层“prison”束缚来达到通信目的:-) 一:预备知识 关于I/O内存映射。 设备通过控制总线,数据总线,状态总线与CPU相连。控制总数传送控制信号,例如,网卡的启用。数据总线控制数据传输,例如,网卡发送数据,状态总数一般都是读取设备的当前状态,例如读取网卡的MAC地址。 在传统的操作中,都是通过读写设备寄存器的值来实现。但是这样耗费了CPU时钟。而且每取一次值都要读取设备寄存器,造成了效率的低下。在现代操作系统中。引用了I/O内存映射。即把寄存器的值映身到主存。对设备寄存器的操作,转换为对主存的操作,这样极大的提高了效率。 关于DMA 这是关于设备数据处理的一种方式。传统的处理方法为:当设备接收到数据,向CPU报告中断。CPU处理中断,把数据放到内存。 在现代操作系统中引入的DMA是指,设备接收到数据时,把数据放至DMA内存,再向CPU产生中断。这样节省了大量的CPU时间 关于软中断与NAPI 在现代操作系统中,对中断的处理速度要求越来越高。为了响应中断,将中断分为两部份,即上半部与下半部。上半部将数据推入处理队列,响应中断。然后再由下半部调度完成余下的任务。 NAPI是2.6新引入的一个概念,它在发生中断的时候,禁用中断。然后处理数据。之后,每隔一定的时候,它会主动向设备询用是否有数据要处理。 I/O,DMA在后续代码分析中会讨论在linux2.6.21中的实现。软中断与NAPI的详细知识将会在分析中断处理的时候,一一为你道来
- linux协议栈之链路层上的数据传输-----预备知识
- linux协议栈之链路层上的数据传输之网卡驱动
- linux协议栈之链路层上的数据传输-----sk_buff结构分析
- linux协议栈之链路层上的数据传输-----数据接收
- linux协议栈之链路层上的数据传输-----数据发送
- linux协议栈之链路层上的数据传输-----从网卡驱动说起(一)
- linux协议栈之链路层上的数据传输-----从网卡驱动说起(二)
- linux源码-TCP/IP协议栈学习预备(1) 数据结构之各socket之间的关系
- linux网络编程的预备知识
- Linux安装预备知识
- Linux网络预备知识
- java的预备知识
- 树的预备知识
- LINQ的预备知识
- 数据库的预备知识
- Linux内核源代码情景分析之预备知识
- Linux v2.6内核编程之内核模块预备知识
- 《Linux Shell脚本攻略》 笔记 之预备知识
- ASP验证码源代码
- jQuery Ajax 全解析
- Sruts 笔记一(基本实现原理)
- Practice CUDA runtime API(1) --DeviceManagementRT
- AIR的本地代码访问——Aperture框架简介
- linux协议栈之链路层上的数据传输-----预备知识
- 我的第一个Struts(1.x)
- Baidu June,4 笔试题
- 最新版的mkisofs汉化完成
- SQLServer命令汇集(不断更新)
- 面试的问题
- 最近
- tomcat5.5配置
- linux协议栈之链路层上的数据传输-----从网卡驱动说起(一)