已阅读5页,还剩78页未读, 继续免费阅读
(计算机科学与技术专业论文)基于线程池机制的高性能dhcp服务器研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西北丁业大学硕士学位论文摘要 摘要 随着互联网的蓬勃发展,i p 地址资源越来越紧张。d h c p 服务是在现有i p v 4 协议基础上解决i p 地址资源短缺问题的有效途径。 目前,多数d h c p 服务器是单线程运行,串行处理客户请求的。其应用于大 型网络管理中,响应速度不是很快,效率不是很高。将多线程技术应用到d h c p 服务器,用线程池机制实现d h c p 服务器是当前提高d h c p 服务器效率一种很有效 的方法。 论文首先分析了b o o t p 和d h c p 的工作过程、消息格式,扩展了d h c pa p i 方法。并用d h c pa p i 方法解决了d h c p 服务器的安全性问题、客户分类问题和租 约收集问题。 接着研究了基于线程池机制的高性能d h c p 服务器的技术问题:探讨了应用 多线程技术和线程池机制中经常出现的问题;分析了多线程程序中共享数据的互 斥访问及死锁预防;提出了锁粒度的计算方法:分析了使用线程池的优点和风险; 改进了线程池大小动态调整算法。并对基于线程池机制的高性能d h c p 服务器进 行了总体设计。 论文对基于线程池机制的高性能d h c p 服务器的实现方法进行了分析探讨, 并给出了部分数据结构和关键算法。测试了基于线程池机制的高性能d h c p 服务 器的功能和性能,并和传统d h c p 服务器的性能进行了分析对比。 最后,总结了论文工作,指出了需要改进和进一步发展完善的地方。 关键词:高性能d h c p 服务器 锁粒度计算方法 多线程技术 线程池机制 线程池大小动态调整算法 西北下业太学颁卜学位论文 摘要 a b s t r a c t w i t ht h ef l o u r i s h i n gd e v e l o p m e n to fi n t e m e t ,i pa d d r e s sr e s o u r c e sc o m em o r e a n dm o r es h o n d h c ps e r v i c ei st h ee f f e c t i v ew a yo fs o l v i n gi pa d d r e s sr e s o u r c e s h o r t a g ep r o b l e m o nt h eb a s i so fe x i s t i n gi p v 4 a tp r e s e n t ,m o s td h c ps e r v e r sd e a lw i t hr e q u e s t so fc l i e n ts e r i a l l yb yt h es i n g l e t h r e a d i fi ti sa p p l i e dt ol a r g e - s c a l en e t w o r km a n a g e m e n t ,t h er e a c t i o ns p e e di sn o t q u i c ka n de f f i c i e n c yi sn o tv e r yh i g h a p p l y i n gm u l t i t h r e a dt e c h n o l o g yt od h c p s e r v e ra n dr e a l i z ei tb yt h et h r e a dp o o lm e c h a n i s mi sav e r ye f f e c t i v em e t h o dw h i c h i m p r o v e sd h c p s e r v e r sp e r f o r m a n c ea tp r e s e n t t h ep a p e rh a sp r o b e di n t ob o o t pa n dd h c pw o r k f l o wa tf i r s t ,a n dt h e ni t e x p a n d e dt h em e a s u r eo fd h c pa p i t h i sm e t h o da l s os o l v e ds e v e r a lp r o b l e m s i n c l u d i n gt h es e c u r i t y o fd h c ps e r v e r s , c l a s s i f yt h ec l i e n ta n dc o l l e c t i o no f i n f o r m a t i o n t h e ni th a ss t u d i e dh i g h p e r f o r m a n c ed h c ps e r v e ro nt h eb a s i so ft h ep o o l m e c h a n i s mo ft h et h r e a d i th a sp r o b e di n t ot h ep r o b l e m so fu s i n gm u l t i t h r e a da n d t h r e a dp 0 0 1 i tg a v et h o u g h t st ot h em u t e so fs h a r e dd a t aa n dp r e v e n t i o no f d e a dl o c k i tp u tf o r w a r dt h ea l g o r i t h mo fl o c kg r a i ns i z e a n da n a l y z e dt h a ta d v a n t a g e sa n dr i s k s o ft h et h r e a dp o o la sw e l ta sm e n dd y n a m i c p o o ls i z ea d j u s t m e n ta l g o r i t h m a n dh a s d e s i g n e do v e r a l lh i g h p e r f o r m a n c ed h c ps e r v e rb a s e do np o o lm e c h a n i s mo ft h e t h r e a d m a i nc o m p o n e n ti m p l e m e n t a t i o nm e t h o do fh i g h p e r f o r m a n c ed h c ps e r v e r b a s e do np o o lm e c h a n i s mo ft h et h r e a di nt h e s i sh a sb e e na n a l y z e da n ds o m ek e y c o d e sh a v eb e e np r o v i d e d i tt e s t e dt h ef u n c t i o na n dp e r f o r m a n c eo fh i g h p e r f o r m a n c e d h c ps e r v e rb a s e do np o o lm e c h a n i s mo ft h et h r e a d ,i th a sa n a l y z e dt h ec o n t r a s tt o t r a d i t i o n a ld h c ps e r v e ra n d p e r f o r m a n c eo fh i g h p e r f o r m a n c ed h c ps e r v e rb a s e do n p o o lm e c h a n i s mo ft h et h r e a d f i n a l l y ,i ts u m m a r i z e st h ew o r ko ft h et h e s i sa n dp o i n t so u tt h el o c a l i t yt h a t n e e d si m p r o v e m e n ta n df u r t h e rd e v e l o p m e n tt op e r f e c t k e yw o r d s :h i g h - p e r f o r m a n c ed h c ps e r v e r ,m u l t i t h r e a dt e c h n i q n e t h r e 俚d p o o lm e c h a n i s m ,d y n a m i cp o o ls i z ea d j u s t m e n ta l g o r i t h m ,a l g o r i t h mo fl o c kg r a i n s i z e 1 1 西北f 业火学坝 一学位论文 第一常绪论 第一章绪论 本章要点:本章简要介绍了论文的研究背景、项目背景和课题意义,说明了论 文主要研究内容和组织结构。 1 1 。1 研究目的 1 1 研究背景 互联网在人们的学习、工作和生活中日益发挥着重要作用;它正在改变着 人们的工作和生活方式。现在,人们的工作和生活已经和互联网紧密结合在一 起。目前的全球因特网所采用的协议族是t c p i p 协议族。i p 是t c p i p 协议族 中网络层的协议,是t c p i p 协议族的核心协议。当前i p 协议的版本号是4 ( 简 称为i p v 4 ) ,发展至今已经使用了3 0 多年。 i p v 4 的地址位数为3 2 位,也就是最多有2 的3 2 次方的电脑可以联到 f n t e r n e t 上。近十年来由于互联网的蓬勃发展,i p 地址的需求量愈来愈大,使 得i p 地址的发放愈趋严格,各项资料显示全球i p v 4 位址可能在2 0 0 5 至2 0 0 8 年 问全部发完。 i p v 6 是下一版本的互联网协议,也可以说是下一代互联网的协议。它的提 出最初是因为随着互联网的迅速发展,i p v 4 定义的有限地址空间将被耗尽,地 址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过i p v 6 重新定义地址空间。 但是,i p v 6 的推广和使用仍需要一定时间,这包括技术研究、网络建设和 操作系统支持等原因。如何在现有的i p v 4 协议基础上,解决i p 地址资源短缺问 题成了当务之急。d h c p 技术应运而生,它可以为网络主机动态分配i p 地址,提 高了i p 地址的利用率,为解决当前紧张的i p 地址资源问题提供了良好的方法。 1 1 2 国内外研究现状 国外许多组织积极开展对d h c p 技术的研究工作,i e t f 对此做了大量的工 作。1 9 8 5 年9 月,s t a n f o r du n v e r s i t y 的b i c r o f t 和s u nm c r o s y s t e m s 堕! ! 互些苎兰塑! :兰些堡兰 苎! 垡堡鲨! 堕! 塑苎生壁堡坚兰! 墨笠量型堡! 兰些 的j o h n ( ;il m o r e 在r f c 9 51 中提出了b o o t s t r a pp r o t o c o l ,标志着d t l c p 的前身 b o o t p 的诞生,b o o t p 主要为无磁盘主机分配i p 地址和提供启动映象文件名。 1 9 9 3 年l o 月,b u c k n e l lu n i v e r s i t y 的r d r o m s 在r f c l 5 4 1 中正式提出 dl t c p 技术。在原来b o o t p 的基础上,增加了在t c p i p 网络上自动分配可重用 i p 地址和可选的网络配置参数的功能。1 9 9 7 年3 月,r d r o m s 在r f c 2 1 3 i 中完 善了d f c p 技术,增加了对中继代理的支持,并增加了网络配置参数的可选项。 d h c p 技术已经基本成型。 i e t f 当前正在进行以下方面的研究工作:d h c p 服务器和d n s 服务器之扛l j 的 信息交流,d h c p l d a p 之间的集成,i p v 6 网络上d h c p 技术。1 9 9 9 年9 月,b u c k n e u n i v e r s i t y 的j a s o ng o l d s c h m i d t 和n i c ks t o n e 用j a v a 语言开发了d h c pa p i , 他们的a p i 主要是实现d h c p 的基本功能,例如发送和接收信息等,没有对d h c p 功能进行扩展。 国外许多公司也对d i - i c p 进行研究和丌发。i b m 的d h c p 服务器只限定在i b m a i x 及w i n d o w s n t 系统下运行。微软公司开发的w i n d o w s2 0 0 0 操作系统自带 d h c p 服务。微软d h c p 服务器的配置简单,但是,它的缺点有:( 1 ) 微软d h c p 服务器与d h c p 服务器的配置是彼此独立的。( 2 ) 微软d h c p 的动态更新只和微 软的d n s 服务器相集成。( 3 ) 没有统一的配置界面来配置公司所有的d n s 、d h c p 服务器。 国内对d h c p 方面的研究不多。中国工程院2 0 0 5 年1 月立项的i p v 6 网络音 视频监控摄像终端项目中提到:研制符合i p v 6 网络技术标准,支持d h c p p p p o e 等多种网络协议。南京邮电学院网络技术研究中心的毛燕琴同志提出d t l c p v 6 的 安全性改进。广东白云职业技术学院计算机系网络教研室的王海峰同志探讨了 d h c p 服务在网络中的应用。 因此,开展对d h c p 技术的研究,对于研发具有自主知识产权的d h c p 软件, 促进国产d h c p 软件在工程建设中的使用,促进我国的现代化和信息化水平具有 重要意义。 两北工业天学坝 学位论殳 第一学绪论 1 2 项目背景 课题背景项目来源于陕西红盾在线科技有限公司。该项目是一个综合网络管 理系统,采用分层的网络管理技术,对网络中各种服务器( d h c p 服务器,d d n s 服 务器,d b 服务器) 和p c 进行实时监控和管理。p ca g e n t 子系统将p c 上各种软硬 件信息收集并传送到e m ( s ) ,e m ( s ) 过滤整理后将信息传送到e m o n t a s m d l e ( t h i s ) i f ( w a i t f o r t a s k 0 ) c o n t i n u e :继续循环。 e l s e r e t u r n0 :终止线程。 要运行。 队列中没有任务 此线程已经空闲;将其状态设置为空闲。 堕! ! ! 些苎兰些i :堂些堡! 笙! 生篁量堑翌兰生:! 坚 ) e l s ei 有任务需要运行。 p t a s k = g e t t a s k 0 :取得新任务a w h il e ( ! p t a s k 一 r u n 0 ) 此处循环体为空,不断运行直到任务执行完毕。 出错处理,当出现异常情况时,跳出循环; 取消其线程,释放线程资源;防止线程泄露。 d e l e t ep t a s k :任务执行完毕,删除此任务。 ) 4 1 3 任务队列的实现 线程池允许客户提交任务( 任务即客户提交的请求数据包) 执行,这个功能 由分发请求模块来提供。分发请求模块将提交的任务放进任务队列,通知线程调 度模块有新任务。当任务队列已满,分发功能有可能堵塞。 数据结构r e q u e s t 用来存储每个任务的相关信息。数据结构r e q u e s t 里,我们 定义以下变量来记录相关信息( 如表4 1 所示) 。运行时期,这些变量将会根据 情况进行更新。性能监视模块收集任务队列的相关信息,统计并向管理员报告。 表4 1 用于每个任务的统计变量表 变量 描述 s u b m m i t e d t 任务提交时阳j a c c e p t e d t 任务接受时间 e x ct 任务执行时间 f i n i s h e dt 任务执行结束时问 下面是单个任务数据结构描述: s t r u ct r e q u e s t d h c p p a c k e tr e q u e s t :$ 客户请求数据包 s t r u t tr e q u e s t * n e x t :$ 指向下一个客户请求 t i m e s u b m m i t e d t :序任务提交时f 8 1 s 1 堕j ! ! 些查兰塑! 兰垡堡墨 量垡堡塑! ! 型塑墨! ! 堡里旦兰! 些望箜苎型兰型! 兰堕 t m ea c c e p t e d t :丰任务接受时f b i * t m ee x et :丰任务执行时间十 t m ef i n is h e dt : 任务执行结束时间丰 ) : 下面是任务队列的数据结构描述: c y p e d e fs t r u c tt a s k q u e u e t a g p t h r e a d m u t e x tr e q u e s t m u t e x :$ 互斥量 p t h r e a d c o n d t g o t r e q u e s t : 序条件变量丰 i n tn u m r e q u e s t s :序请求数量十 s t r u c tr e q u e s t * r e q u e s t s l : 第一个客户请求十 s t r u c tr e q u e s t * l a s t r e q u e s t :序最后一个客户请求$ t a s k q u e u e t : 从任务队列取任务 工作线程执行时,要从任务队列取出任务来处理。对工作队列的操作和对线 程链表的操作类似。为了实现对工作队列的互斥操作,取任务之前要锁定任务队 列,完成任务之后要解锁操作。从任务队列取任务的部分代码见a p p e n d i xd 。 任务队列增加任务 分发请求模块的i o 线程要向任务队列增加任务。当i o 线程接收到客户的请 求包后,要将任务添加到任务队列。先锁定任务队列,修改任务队列的相应数据 结构。完成操作后,解锁任务队列。以实现对任务队列的互斥访问。任务队列增 加任务的部分代码见a p p e n d i xd 。 4 1 4 线程调度模块( t h r e a ds c h e d u l i n g ) 实现 当任务队列中有新的任务时,线程调度模块搜索线程链表,首先试图在链表 中搜索一个空闲线程( i f l a g e 等于0 或一1 ) 的t h r e a d i n f o 结构,如果找不到, 就创建一个线程,并指向这个线程的t h r e a d l n f o 结构的指针。 调度程序设置所得到t h r e a d i n f o 结构,设置h e v e n t 对象( 使其变为“有信 号”) ,把状态标志位设置为l ,保证线程能立即被唤醒。 线程调度算法: 瓶北r 业人学l ! i 卜学位论迁 第四市系统耍脱1 ,测试 1 ) 取出该请求包的客户i d 号( 或子刚号+ m a c 地址) ,查找记录,判断是否 有该客户对应的线程号;若有,将该请求包任务分配给该线程处理。 2 ) 若没有对应的客户i d 号( 或子网号+ m a c 地址) ,搜索线程链表,从基本 线程开始到扩展线程结束,判断有无空闲线程。 3 ) 若有空闲线程,分配该请求包任务给空闲线程处理;同时,将线程状态 设置忙状态( f l a g e 设置为1 ) ,在记录里记录下该客户的i d 号和线程 号。 4 ) 若没有空闲线程,且线程数没有达到最大,创建扩展线程分配之;同时, 将线程状态设置忙( i f l a g e 设置为1 ) ,在记录里记录下该客户的i d 号 和线程号。若线程数达到最大,请求包任务等待。 5 ) 线程处理完淆求包任务后挂起( 基本线程将i f l a g e 设置为0 ,扩展线程 将i f l a g e 设置为一1 ) ;不同的是,扩展线程挂起一定时间后,将记录中 此线程的线程号和和对应客户i d 号的记录删除,扩展线程自动退出; 基本线程挂起一定时间后,将记录中此线程的线程号和对应客户i d 号 的记录删除,基本线程仍保持在线程链表里。 线程缓冲池在接收到新任务的时候,首先要寻找空闲线程,传入新任务,然 后执行任务,最后还要删除任务,置空闲线程的标志。寻找空闲线程、传入任务、 最后的清理工作,这些都是为了执行任务而产生的额外开销,应该使线程池带来 效率的提高大于由于使用线程池带来的额外开销。 高性能d h c p 服务器线程调度算法的特殊之处在于:服务客户时,要和客 户机进行几次交流,我们考虑将同一个客户机发送来的请求分配给同一个线程处 理,如果此线程已经消失,将其分配给另外空闲线程处理。下面以伪代码的形式 给出线程调度模块在线程的创建、销毁、任务分配以及任务执行方面的流程。 f o r ( :) p t h r e a d = g e t i d l e t h r e a d 0 :检查空闲线程队列。 i f ( p t h r e a d ! = n u l l ) f i f ( c h e c k n e w t a s k 0 ) 有新任务。 6 e t t a s k ( t 1 ) :取得一定数量的任务。 接j “线程池机制的高性能d h c p 服, 擀f j 究实班 c h e c k t a s k ( t1 ) ; 俭查任务的i d 号,以便为其分配对应线程。 c o n t i n u e :继续循环。 把任务传入线程,首先根据其t d 号寻 找对应线程,若找到,分配之;否则,分 配其它空闲线程,并记录下任务i d 号和线 程号。 l j if ( p t h r e a d = = n u l l n t h r e a d i d l e _ m a x ) 系统空闲,计时。 d e c r i d l e t h r e a d0 :系统长时间处于空闲,销毁一定数量的空闲线程。 ) 4 1 5 线程池大小调整模块( a d j u s t m e n t ) 实现 线程池大小调整部分根据一定的算法对线程数量进行调整,以实现线程池的 动态性能优化。 d h c p 服务器启动时创建固定大小的线程池( 初始化线程的个数由3 3 5 节讨论的估算法确定) ,把其中线程标记为基本线程。此后系统中被创建的线程 都将被标记为扩展线程。当请求到来时如果线程池仍然有空闲线程,则选择一个 空闲线程并将任务交给它处理,否则就创建一个新的扩展线程放入线程池中,并 将任务交给它处理:定时用改进的线程池大小动态调整算法对线程池中线程数量 第叫章系统唼观j 删吐 进行调整。 采用这种管理策略,当一段时间内客户机的请求少量增加时,线程池可以随 请求自动创建扩展线程。更为重要的是新创建的扩展线程在服务完一个任务后并 不立即结束线程,而是等待段时间,这样扩展线程就能很快地被调度程序唤醒 并服务于新的任务,从而避免了频繁的线程创建与关闭。如果一段时间内任务数 量较少,系统的扩展线程很快会因超时而结束,避免耗费服务器的资源。由f d h c p 服务器每个时间总会接收到客户请求,所以只要不关闭服务器,基本线程 总是存在与系统中,从而可以应对任务较少的情况。 当段时间内客户机的请求大量增加,线程池自动产生的线程不够使用时, 任务队列中请求的数量必然增加。这时,改进的线程池大小动态算法就会立即创 建大量线程,满足系统需要。下面用伪代码的形式描述了改进的线程池大小动态 调整算法: i n p u t :s t r i d e , p r ea i t , p r i p r ea i t , p o o l s i z e , m a x n u m , m i n n u m b e g i n s t o r ec u r r e n ta v e r a g ei d l e t i m ei nc u r r e n t a i t : i f ( ( 1c u r r e n t a i t - - p r e a i ti p r e a i t 1 ) if( c u r r e n t a i t p r e a i t ) f i f ( p r e a i t m i n n u m ) 线程数量大于最小值。 p o o l s i z e 一一= s t r i d e : e l s e i f ( p o o l s i z e m a 如uj 】) 线程数量小于最大值。 p o o l s i z e + :s t r i d e : ) e l s eif ( c u r r e n t at t p r e a t t p r e a t t p r e p r e a 【t ) f 5 5 ! ! :竖! ! ! 苎兰塑! :堂些堡墨 堡! 堡堡垫! ! 型塑塑堡堂里旦! ! 墅堂型兰! 二! i 翌 i f ( d 0 0 is i z e m a x n u m )线程数量小于最大值。 p o o l s i z e + 2 t h r s t r i d e : ) e l s ei f ( p r o p o o l z i z e :p o o l s i z e ) i f ( p o o l s z e a t t r ) ; i f ( s t a t u s ! = 0 ) r e t u r ns t a t u s ; s t a t “s2 p t h r e a da t t rs e t d e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外活动总结(15篇)
- 阜城租房合同
- 经纪人与公司合同
- 比赛经纪合同
- 会务代办合同
- 汽车租赁长租合同
- 湖南省劳动合同
- 改造浴室合同
- 枣阳租房合同
- 墓地修复合同
- GB/T 3785.1-2023电声学声级计第1部分:规范
- The call of the wild(野性的呼唤)课件
- 大学生劳动教育通论知到章节答案智慧树2023年大连海洋大学
- 两篇古典英文版成语故事画蛇添足
- 《积极心理学(第2版)》课件12第十二章 宽容
- 音乐入门基础知识
- 环保领导组组织机构及工作职责
- DB32T 4285-2022 预应力混凝土空心方桩基础技术规程
- 工资结算协议
- “两慢病”全周期健康管理平台建设方案
- 旅游景区中的修建性详细规划及深度
评论
0/150
提交评论