CN1490720A - 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 - Google Patents
一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 Download PDFInfo
- Publication number
- CN1490720A CN1490720A CNA021375607A CN02137560A CN1490720A CN 1490720 A CN1490720 A CN 1490720A CN A021375607 A CNA021375607 A CN A021375607A CN 02137560 A CN02137560 A CN 02137560A CN 1490720 A CN1490720 A CN 1490720A
- Authority
- CN
- China
- Prior art keywords
- dhcp
- address
- record
- dhcp server
- vxworks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法。本发明所作改进:一是修改DHCP Server的启动方式,使之独立于VxWorks内核,启动时机由应用程序控制;二是同时采用数据库方式永久存储地址记录,实现动态更新内存地址池中的内容。本发明的效果是:本发明解决了VxWorks自带DHCP Server中启动不方便,更新地址记录功能不完善等问题。它使DHCP Server独立于VxWorks内核。采用数据库永久存储地址记录。能动态更新内存地址池中的内容。使DHCP Server更易维护和管理。
Description
技术领域
本发明涉及一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法,具体是一种基于VxWorks操作系统,实现动态主机配置协议服务器由应用程序启动和动态更新内存地址池的方法,特别适用于需要通过动态主机配置协议(DHCP)完成自举的无盘工作站的网络系统。
背景技术
VxWorks操作系统是美国WindRiver公司在20世纪80年代推出的一种嵌入式实时操作系统。近年来VxWorks实时操作系统的应用越来越广,是通信系统常用的嵌入式操作系统之一。VxWorks操作系统支持TCP/IP网络协议栈,用户通过接口函数的调用,可以方便地实现许多应用协议。这些协议内嵌在VxWorks操作系统内核中,代码不能修改。
动态主机配置协议(DHCP)是VxWorks操作系统支持的应用层协议之一。DHCP协议采用客户机/服务器(Client/Server)方式,由两部分构成:DHCP Server和DHCP Client。DHCP Client启动之后,没有自己的IP地址,需要通过协议交互,向DHCP Server申请IP地址。DHCP Server根据一定规则向发出请求的客户机分配IP地址。
VxWorks操作系统给DHCP Server提供了钩子函数,方便用户开辟自己的永久存储空间以存储地址记录。系统启动之后,DHCP Server从永久存储空间读取数据,放入到内存地址池。用户可以通过钩子函数将有关配置信息写入永久存贮空间和内存地址池。
但是,VxWorks操作系统内嵌的DHCP Server在启动时与VxWorks内核捆绑在一起,一方面,在应用程序中,DHCP Server往往会用到文件系统或者数据库,而文件系统或者数据库一般在内核启动完成之后才会启动,内嵌的DHCP Server启动方式缺乏灵活性。另一方面,在系统运行过程中,根据用户需求需要不断更新DHCP server内存地址池,但目前VxWorks操作系统仅仅提供了增加记录的功能,无法删除、更新内存地址池记录。
发明内容
本发明的目的在于提供一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法。
本发明针对上述VxWorks内嵌DHCP Server的不足,作两方面的改进。一是修改DHCP Server的启动方式,使之独立于VxWorks内核,启动时机由应用程序控制;二是同时采用数据库方式永久存储地址记录,实现动态更新内存地址池中的内容。
本发明是这样实现的:一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法,其特征是包括以下步骤:
制作VxWorks操作系统内核:在制作VxWorks内核时,不加入DHCP Server组件,使DHCP Server组件与VxWorks内核相对独立;
编写DHCP Server钩子函数:钩子函数将永久地址存储区和内存地址池关联起来,VxWorks操作系统通过钩子函数,保证数据库和内存地址池中记录的一致性;
在VxWorks操作系统内核和数据库启动之后,调用应用程序,启动DHCP Server;
动态更新DHCP Server的内存地址池:通过操作VxWorks操作系统用以存储内存地址池信息的HASH表,实现对记录增加、记录删除、记录修改的动态更新。
所述在制作VxWorks操作系统的内核时,将与DHCP Server相关的头文件提取出来,通过编码封装成一个DHCP Server的应用程序;
在VxWorks操作系统启动后,先初始化数据库系统,再启动DHCPServer;
DHCP Server从数据库中读取地址记录到内存地址池中。
所述VxWorks系统提供了两个钩子函数接口,通过钩子函数,DHCPServer将DHCP地址信息和租借信息从数据库中写入或读出,以保证数据库和内存区的同步。
所述DHCP Server应用程序用于DHCP Server的启动,包括以下步骤:
绑定DHCP Server到指定的网络接口设备上,所述网络接口设备必须支持标准的以太网数据桢格式,能收发广播包;
将钩子函数的指针传递给VxWorks操作系统;
启动dhcpStart线程,用于处理DHCP Client发来的请求;
dhcpStart线程初始化DHCP Server内存地址池,调用钩子函数,将永久地址存储区的内容导入内存地址池。
所述方法进一步包括以下步骤:
制作VxWorks操作系统内核,不包含DHCP Server;
编写钩子函数,建立数据库和内存数据区的关联关系;
系统启动之后,自动启动VxWorks内核;
内核启动之后,首先初始化数据库;
应用程序调用系统函数,启动DHCP Server;
启动后,系统调用钩子函数,将数据库中的所有记录读取到内存地址池中;
系统运行过程中,动态更新内存地址池,包括内存地址池记录的增加、删除和修改;
修改内存地址池的同时,应用程序调用钩子函数,同时更新数据库记录,以保持同步。
所述动态更新DHCP Server的内存地址池是通过操作HASH链表中的数据结构hash_member和dhcp_resource来实现:
增加一条地址记录时,申请新的hash_member和dhcp_resource,将地址记录的内容放入dhcp_resource中,然后通过hash_member加入至地址链表中;
删除一条地址记录时,应用程序根据地址纪录的关键字从地址记录中找到需要删除的地址记录,找到该地址记录在的hash_member后,将此hash_member从地址链表中删除,并释放此hash_member和dhcp_resource所占内存,以避免内存泄漏。
更新一条地址记录时,或找到该条记录,将dhcp_resource中的相应内容修改,或找到该条记录,删除该条记录所对应的hash_member和dhcp_resource,释放对应内存,再增加修改后的记录至地址链表中。
本发明的效果:解决了VxWorks自带DHCP Server中启动不方便,更新地址记录功能不完善等问题。它使DHCP Server独立于VxWorks内核。采用数据库永久存储地址记录。能动态更新内存地址池中的内容。使DHCP Server更易维护和管理。
附图说明
图1是DHCP Server运行流程图;
图2是内存地址池的存储示意图。
具体实施方式
DHCP SerVer独立于VxWorks内核的启动主要分为以下三个步骤:
首先,制作VxWorks内核的制作。在制作VxWorks内核时不加入DHCP Server组件。使DHCP Server与VxWorks内核相对独立。
第二,编写DHCP Server钩子函数。钩子函数将永久地址存储区和内存地址池关联起来。VxWorks系统通过它,保证数据库和内存地址池中记录的一致性。
第三,在VxWorks操作系统内核和数据库启动之后,调用应用程序,启动DHCP Server。
DHCP Server内存地址池的动态更新包括增加记录、删除记录和修改记录,本发明深入研究了内存地址池信息的存储形式,发现VxWorks采用HASH表方式存储信息;通过操作HASH表,实现记录的动态更新。
VxWorks操作系统中自带的DHCP Server是与内核绑定在一起的。一般必须在内核制作时,将DHCP Server的网络组件加入;并且,DHCPServer的启动随内核一起启动。这样有一个很大的缺点是,当永久地址存储空间要在内核启动之后才能载入时,DHCP Server在启动时就无法从数据库中读取地址记录到内存地址池中。
本发明的改进在于在制作VxWorks内核时,不要绑定DHCP Server组件。而是将与DHCP Server相关的头文件提取出来,通过编码封装成一个DHCP Server的应用程序。这样VxWorks系统启动后,可以先初始化数据库系统等相关工作,再启动DHCP Server。此时DHCPServer就可以从数据库中读取地址记录到内存地址池中。
VxWorks操作系统提供了两个钩子函数接口。通过钩子函数,DHCPServer可以将DHCP地址信息和租借信息从数据库中写入或读出,保证数据库和内存区的同步。
本发明采用数据库存储方式的好处是读出写入方便,避免了复杂的字符处理。另外,数据库的维护与查询也很规范。
DHCP Server应用程序负责DHCP Server的启动,实现步骤如下:
绑定DHCP Server到指定的网络接口设备上。网络接口设备必须支持标准的以太网数据桢格式,能收发广播包。
请将钩子函数的指针传递给VxWorks操作系统。
启动dhcpStart线程。它负责处理DHCP Client发来的请求。此线程的主函数由VxWorks提供。以动态连接库的方式提供给用户。
dhcpStart线程初始化DHCP Server内存地址池,调用钩子函数,将永久地址存储区的内容导入内存地址池。
本发明的一项重要内容是实现对DHCP Server内存地址池的动态更新。VxWorks操作系统对DHCP Server的内存地址池只提供了增加功能。如果系统内存地址池有一条地址记录有误,如参数不对,或者要删除地址池里的一条记录,唯一的办法就是重启VxWorks,这势必造成系统的中断。
对DHCP Server的内存地址池进行了深入的剖析可知:发现内存地址池是以HASH链表方式存储的,系统有一条缺省记录在链表中,它是内存地址池的链表头,不允许删除。此后,用户增加的地址记录就会增加到这个链表中。但系统只提供了增加记录到地址池的功能。不能删除和更改。在弄清其地址链表结构后,就可以对内存地址池直接进行操作,如增加、删除和修改。这样就保证了能在不重启VxWorks的情况下,动态更新维护内存地址池,满足客户端的DHCP请求。
下面结合附图对本发明作进一步详细描述:
图1是DHCP Server运行流程图,分别说明如下:
步骤1-1:制作VxWorks操作系统内核,不包含DHCP Server;
步骤1-2:编写钩子函数,建立数据库和内存数据区的关联关系;
步骤1-3:系统启动之后,自动启动VxWorks内核;
步骤1-4:内核启动之后,首先初始化数据库
步骤1-5:应用程序调用系统函数,启动DHCP Server;
步骤1-6:启动后,系统调用钩子函数,将数据库中的所有记录读取到内存地址池中;
步骤1-7:系统运行过程中,动态更新内存地址池,包括地址池记录的增加、删除和修改;
步骤1-8:修改内存地址池的同时,应用程序调用钩子函数,同时更新数据库记录,以保持同步。
图2是内存地址池的存储示意图。DHCP Server的内存地址池采用HASH链表方式存储。其中有两个非常重要的数据结构,hash_member和dhcp_resource。hash_member中有两个成员:指向下一个ha sh_member的指针、指向dhcp_resource的指针。dhcp_resource用来存储每条地址记录,其中包括了可能提供给DHCPClient的各种参数。
当需要增加一条地址记录时,就可以申请新的hash_member和dhcp_resource。将地址记录的内容放入dhcp_resource中。然后通过hash_member加入至地址链表中。
当需要删除一条地址记录时,应用程序根据地址纪录的关键字从地址记录中找到需要删除的地址记录。找到该地址记录在的hash_member后,就可以将此hash_member从地址链表中删除,并释放此hash_member和dhcp_resource所占内存。以避免内存泄漏。
当需要更新一条地址记录时,有两种方法。一是找到该条记录,将dhcp_resource中的相应内容修改。另一种方法是找到该条记录,删除该条记录所对应的hash_member和dhcp_resource,释放对应内存。再增加修改后的记录至地址链表中。
Claims (6)
1一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法,其特征是该方法包括以下步骤:
制作VxWorks操作系统内核:在制作VxWorks内核时,不加入DHCP Server组件,使DHCP Server组件与VxWorks内核相对独立;
编写DHCP Server钩子函数:钩子函数将永久地址存储区和内存地址池关联起来,VxWorks操作系统通过钩子函数,保证数据库和内存地址池中记录的一致性;
在VxWorks操作系统内核和数据库启动之后,调用应用程序,启动DHCP Server;
动态更新DHCP Server的内存地址池:通过操作VxWorks操作系统用以存储内存地址池信息的HASH表,实现对记录增加、记录删除、记录修改的动态更新。
2如权利要求1所述实现动态主机配置协议服务器启动和更新的方法,其特征是所述在制作VxWorks操作系统的内核时,将与DHCPServer相关的头文件提取出来,通过编码封装成一个DHCP Server的应用程序;
在VxWorks操作系统启动后,先初始化数据库系统,再启动DHCPServer;
DHCP Server从数据库中读取地址记录到内存地址池中。
3如权利要求1所述实现动态主机配置协议服务器启动和更新的方法,其特征是所述VxWorks系统提供了两个钩子函数接口,通过钩子函数,DHCP Server将DHCP地址信息和租借信息从数据库中写入或读出,以保证数据库和内存区的同步。
4如权利要求1所述实现动态主机配置协议服务器启动和更新的方法,其特征是所述DHCP Server应用程序用于DHCP Server的启动,包括以下步骤:
绑定DHCP Server到指定的网络接口设备上,所述网络接口设备必须支持标准的以太网数据桢格式,能收发广播包;
将钩子函数的指针传递给VxWorks操作系统;
启动dhcpStart线程,用于处理DHCP Client发来的请求;
dhcpStart线程初始化DHCP Server内存地址池,调用钩子函数,将永久地址存储区的内容导入内存地址池。
5如权利要求1所述实现动态主机配置协议服务器启动和更新的方法,其特征是该方法包括以下步骤:
制作VxWorks操作系统内核,不包含DHCP Server;
编写钩子函数,建立数据库和内存数据区的关联关系;
系统启动之后,自动启动VxWorks内核;
内核启动之后,首先初始化数据库;
应用程序调用系统函数,启动DHCP Server;
启动后,系统调用钩子函数,将数据库中的所有记录读取到内存地址池中;
系统运行过程中,动态更新内存地址池,包括内存地址池记录的增加、删除和修改;
修改内存地址池的同时,应用程序调用钩子函数,同时更新数据库记录,以保持同步。
6如权利要求1所述实现动态主机配置协议服务器启动和更新的方法,其特征是所述动态更新DHCP Server的内存地址池是通过操作HASH链表中的数据结构hash_member和dhcp_resource来实现:
增加一条地址记录时,申请新的hash_member和dhcp_resource,将地址记录的内容放入dhcp_resource中,然后通过hash_member加入至地址链表中;
删除一条地址记录时,应用程序根据地址纪录的关键字从地址记录中找到需要删除的地址记录,找到该地址记录在的hash_member后,将此hash_member从地址链表中删除,并释放此hash_member和dhcp_resource所占内存,以避免内存泄漏;
更新一条地址记录时,或找到该条记录,将dhcp_resource中的相应内容修改,或找到该条记录,删除该条记录所对应的hash_member和dhcp_resource,释放对应内存,再增加修改后的记录至地址链表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021375607A CN1323352C (zh) | 2002-10-17 | 2002-10-17 | 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021375607A CN1323352C (zh) | 2002-10-17 | 2002-10-17 | 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1490720A true CN1490720A (zh) | 2004-04-21 |
CN1323352C CN1323352C (zh) | 2007-06-27 |
Family
ID=34147069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021375607A Expired - Fee Related CN1323352C (zh) | 2002-10-17 | 2002-10-17 | 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1323352C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964356B (zh) * | 2005-11-10 | 2010-10-13 | 国际商业机器公司 | 数据处理方法和系统 |
CN103455424A (zh) * | 2013-09-18 | 2013-12-18 | 哈尔滨工业大学 | 基于VxWorks操作系统的动态内存泄漏检测方法及装置 |
CN108874882A (zh) * | 2018-05-04 | 2018-11-23 | 广州四九游网络科技有限公司 | 一种thinkphp框架的数据处理方法 |
CN112231176A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 一种简便的VxWorks操作系统系统日志记录方法 |
CN112231013A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 实现嵌入式VxWorks系统更改IP地址后建立target server的方法 |
CN114374734A (zh) * | 2021-12-17 | 2022-04-19 | 北京电子工程总体研究所 | 一种基于VxWorks动态自适应网络配置方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100319292B1 (ko) * | 1999-12-02 | 2002-01-05 | 윤종용 | 빠른 부팅 속도를 갖는 컴퓨터 시스템 및 그 방법 |
-
2002
- 2002-10-17 CN CNB021375607A patent/CN1323352C/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964356B (zh) * | 2005-11-10 | 2010-10-13 | 国际商业机器公司 | 数据处理方法和系统 |
CN103455424A (zh) * | 2013-09-18 | 2013-12-18 | 哈尔滨工业大学 | 基于VxWorks操作系统的动态内存泄漏检测方法及装置 |
CN103455424B (zh) * | 2013-09-18 | 2015-12-02 | 哈尔滨工业大学 | 基于VxWorks操作系统的动态内存泄漏检测方法及装置 |
CN108874882A (zh) * | 2018-05-04 | 2018-11-23 | 广州四九游网络科技有限公司 | 一种thinkphp框架的数据处理方法 |
CN112231176A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 一种简便的VxWorks操作系统系统日志记录方法 |
CN112231013A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 实现嵌入式VxWorks系统更改IP地址后建立target server的方法 |
CN112231176B (zh) * | 2020-10-14 | 2023-03-03 | 天津津航计算技术研究所 | 一种简便的VxWorks操作系统系统日志记录方法 |
CN112231013B (zh) * | 2020-10-14 | 2023-06-02 | 天津津航计算技术研究所 | 实现嵌入式VxWorks系统更改IP地址后建立target server的方法 |
CN114374734A (zh) * | 2021-12-17 | 2022-04-19 | 北京电子工程总体研究所 | 一种基于VxWorks动态自适应网络配置方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1323352C (zh) | 2007-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1290005C (zh) | 设备驱动程序安装方法及外围设备 | |
US7765189B2 (en) | Data migration apparatus, method, and program for data stored in a distributed manner | |
US8627029B2 (en) | Methods for managing files according to application | |
US20100138479A1 (en) | Software operating system and the software-operating method thereof | |
US9336218B2 (en) | Managing a binary object in a database system | |
CN1878301A (zh) | 一种视频监控数据存储管理方法及系统 | |
US7591019B1 (en) | Method and system for optimization of anti-virus scan | |
CN1222951C (zh) | 闪速存储器的实时处理方法 | |
WO2008119286A1 (fr) | Procédé et système de gestion des données | |
CN1786959A (zh) | 用于基于文件优化快照操作的方法 | |
CN1477518A (zh) | 管理文件系统滤波器驱动器的文件名的系统和方法 | |
US20120102159A1 (en) | Resource conflict avoidance system and method | |
CN101030146A (zh) | 一种实现固件更新的方法和系统 | |
CN1540524A (zh) | 存储区域网络中分布式虚拟化存储的方法 | |
TW201025114A (en) | File system for storage device which uses different cluster sizes | |
CN1545048A (zh) | 一种用二维表实现的树的存储、访问的方法 | |
WO2023226314A1 (zh) | 应用的缓存可伸缩处理方法、装置、设备及介质 | |
CN1851692A (zh) | 一种图片数据存储和读取方法 | |
CN1687899A (zh) | 将应用程序动态下载到用户识别模块的方法、系统及模块 | |
CN115129494A (zh) | 一种基于Windows内核的事件日志采集方法及系统 | |
CN1490720A (zh) | 一种基于VxWorks操作系统实现动态主机配置协议服务器启动和更新的方法 | |
US20220342888A1 (en) | Object tagging | |
CN1908937A (zh) | 一种闪存中的flash文件的管理方法及系统 | |
CN1664791A (zh) | 一种虚拟存储模型及其方法 | |
CN112464044A (zh) | 一种文件数据块变化信息监控管理系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070627 Termination date: 20131017 |