1. 首页
  2. 网络技术
  3. 网络基础
  4. JPEG标准中文文档PDF

JPEG标准中文文档PDF

上传者: 2024-07-19 16:15:20上传 PDF文件 27.27MB 热度 7次

1.10 输入处理与刚讲过的输出处理不同,因为输入是异步的。就是说,它是通过一个接收完成中断驱动以太网设备驱动程序来接收一个输入分组,而不是通过进程的系统调用。内核处理这个设备中断,并调度设备驱动程序进入运行状态。

1.10.1 以太网输入

以太网设备驱动程序处理这个中断,假定它表示一个正常的接收已完成,数据从设备读到一个mbuf链表中。在我们的例子中,接收了54字节的数据并复制到一个mbuf中:20字节IP首部、8字节UDP首部及26字节数据(服务器的时间与日期)。这个mbuf是一个分组首部(m_flags被设置成M_PKTHDR),它是一个数据记录的第一个mbuf。分组首部的成员len包含数据的总长度,成员rcvif包含一个指针,它指向接收数据的接口结构。我们可以看到成员rcvif用于接收分组而不是输出分组。mbuf的前16字节数据空间被分配给一个接口层首部,但没有使用。数据就存储在这个mbuf中,54字节的数据存储在剩余的84字节的空间中。设备驱动程序把mbuf传给一个通用以太网输入例程,它通过以太网帧中的类型字段来确定哪个协议层来接收此分组。在这个例子中,类型字段标识一个IP数据报,从而mbuf被加入到IP输入队列中。会产生一个软中断来执行IP输入例程。这样,这个设备中断处理就完成了。

你知道吗?其实处理输入的异步机制在其他领域也有类似的应用,例如在Java异步处理机制实例详解中,详细讲解了Java中的异步处理机制。而在AsyncTaskDemo异步消息处理机制中,展示了如何在Android应用中实现异步消息处理!这些机制虽然用于不同的技术,但它们在处理输入和输出时的基本思想是相通的。

1.10.2 IP输入

IP输入是异步的,并且通过一个软中断来执行。当接口层在系统的一个接口上收到一个IP数据报时,它就设置这个软中断。当IP输入例程执行它时,循环处理在它的输入队列中的每一个IP数据报,并在整个队列被处理完后返回。IP输入例程处理每个接收到的IP数据报。它验证IP首部检验和,处理IP选项,验证数据报。

这不禁让人联想到在FPGA串口输入处理中的串口输入处理,以及在MFC基本输入处理中的基本输入处理机制。不同的技术领域在处理输入时,虽然具体实现有所不同,但都高效、可靠地处理大量输入数据。

下载地址
用户评论