您的位置: turnitin查重官网> 计算机 >> 程序设计 >有关于嵌入式一种基于Select函数嵌入式网络通信信息转发机制设计学术

有关于嵌入式一种基于Select函数嵌入式网络通信信息转发机制设计学术

收藏本文 2024-01-28 点赞:7940 浏览:21010 作者:网友投稿原创标记本站原创

摘要:为了解决在嵌入式网络多对多通信中出现网络拥塞造成网络性能指标下降、引起网络带宽资源浪费的问题,基于Select函数,提出一种单一进程的多目标睡眠等待的信息转发机制方法,当睡眠进程等待的几个目标通道中的任何一个有输入数据时,相应的设备驱动程序把睡眠中的进程唤醒。这样,既达到了进程与多个数据通道进行通信的目的,又避免使用报文队列增加资源消耗的弊端,使信息转发保持了较高的效率。该机制已经在Linux平台上实现并通过测试。
关键词: 嵌入式; 网络通信; 网络拥塞; 信息转发;Select函数
1009-3044(2013)01-0025-04
嵌入式系统正日益得到广泛的应用, 随着嵌入式系统的研究和应用的进一步深入, 嵌入式系统将向网络化、智能化、规范化、集成化方向发展, 在嵌入式网络通信中, 网络拥塞容易造成数据传输、抖动和吞吐量等QoS(Quality of Service) 性能指标下降。为了提升嵌入式网络性能,近几年对网络拥塞问题及解决办法的研究也日益增多,如文献[2-4]就是从嵌入式网络通信不同应用中的网络拥塞问题进行研究。该文从嵌入式Linux技术的应用开发基础出发,提出一种基于Select函数[5-7]的嵌入式网络通信信息转发机制,很好地改善了网络拥塞问题,实现对嵌入式网络通信性能的提升。

1 信息转发机制的思路

在嵌入式网络应用系统中,怎么写作器常常需要同时监视多个用户,即若干个 I/O 通道,等待来自其中任何一个通道的输入数据并作出反应。Linux把一切对socket的操作视为对文件的操作,当多个用户连接时,也就意味着多个文件被打开。当已打开文件是常规文件时,从文件的读出宏观上是同步的,只要尚未读到文件的末尾,虽然启动读操作的进程也可能受阻而进入睡眠,等待用户发送信息,但是这个进程在一个有限的短时期以后一定会被唤醒,这个时期的长短在很大程度上是可预测的。如果已经信息发送完,则更是立即就可知道。可是,对于多用户同时连接就会出现网络阻塞。
为了实现多方通信,一种方法是系统采用查询方式轮流查询各个通道,就是把应用进程先通过系统调用 fcntl( )使通道的O_NONBLOCK 标志位设成1,然后再通过系统调用read( ),此时如果没有数据可读就会立即返回-1,而不会进入睡眠。这种方法从应用进程本身的角度看虽然可以达到目的,但是从系统的角度看却大大降低了系统的效率,在多数情况下是不可接受的。另外一个方法利用进程间通信机制中的报文队列,用一个报文队列来作为输入数据的汇集点。但是Linux为每个用户设立一个怎么写作进程,这个进程就监视用户一个通道,只要有输入就把它转换成报文,并发送到指定的报文队列中,在相反的方面上,对来自进程间通信管道的数据也可以作相似的处理。这样方法虽好,但系统中多了两个进程,增加了进程调度的负担,也会降低系统的效率。
因此,综合上面的方法,最好的方法是把进程的单一目标的睡眠等待变成多目标的睡眠等待实现信息转发机制。这样只要应用进程说明确定好等待的目标是哪几个通道,当这几个通道中的任何一个有输入数据时,相应的设备驱动程序就会把睡眠中的进程唤醒。这样,既达到了嵌入式多方通信的目标,又保持了系统较高的效率。

2 转发机制的设计

2.1 底层函数设计

(1)永远等待下去:仅在有一个描述字准备好I/O时才返回。为此,把该参数设置为空指针。
(2)等待一段固定时间:在有一个描述字准备好I/O时返回,但是不超过由该参数所指向的timeval结构中指定的秒数和微秒数。
(3)根本不等待:检查描述字后立即返回,这称为轮询。为此,该参数必须指向一个timeval结构,而且其中的定时器值必须为0。
中间的三个参数readset、writeset和exceptset指定要让内核测试读、写和异常条件的描述字。如果某一个的条件不感兴趣,就可以把它设为空指针。struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符,可通过以下四个宏进行设置:
(1)清空文件描述符集合:void FD_ZERO(fd_set *fdset)。
(2)将一个给定的文件描述符加入集合之中:void FD_SET(int fd, fd_set *fdset)。
(3)将一个给定的文件描述符从集合中删除:void FD_CLR(int fd, fd_set *fdset)。
(4)检查集合中指定的文件描述符是否可以读写:int FD_ISSET(int fd, fd_set *fdset)。
目前支持的异常条件只有两个:
(1)某个套接口的带外数据的到达。
(2)某个已置为分组方式的伪终端存在可从其主端读取的控制状态信息。
第一个参数maxfdp1指定待测试的描述字个数,它的值是待测试的最大描述字加1(因此把该参数命名为maxfdp1),描述字0、1、

2...maxfdp1-1均将被测试。

2.2 具体设计与实现

2.1 总体设计流程

本设计实现的是多用户之间通信的功能。多用户之间信息转发的机制建立在怎么写作器用户信息管理的基础上,设计的一种实时通信方式。操作流程如图1所示。

2.2 实现的核心代码

本系统信息转发机制部分核心代码如2所示,怎么写作器管理128个用户连接请求,以select函数待其管理,当有用户发送请求时,select函数管理的文件描述符集合中的某一位就会

摘自:本科毕业论文范文www.udooo.com

发生变化,select返回值改变,从而建立通信通道。

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号