国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多核分片xml并行解析方法

      文檔序號(hào):6568321閱讀:421來源:國知局
      專利名稱:多核分片xml并行解析方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于計(jì)算機(jī)信息分析與數(shù)據(jù)處理領(lǐng)域,具體涉及一種多核分片XML并行解析方法。
      背景技術(shù)
      XML(Extensible Markup Language)是 hternet 上數(shù)據(jù)表示和數(shù)據(jù)交換的標(biāo)準(zhǔn), 是由互聯(lián)網(wǎng)聯(lián)合組織(W3C)指定的。XML提供了將數(shù)據(jù)庫外的物理數(shù)據(jù)轉(zhuǎn)換成與之相關(guān)的元數(shù)據(jù)的統(tǒng)一標(biāo)準(zhǔn)。越來越多的數(shù)據(jù)使用XML的標(biāo)準(zhǔn)進(jìn)行表示和存儲(chǔ)。從數(shù)據(jù)庫的角度來看,在這些大量的XML文檔中所包含的數(shù)據(jù)可以進(jìn)行抽取和分析。那么如何對(duì)XML文檔內(nèi)容進(jìn)行高效率的查詢變得越來越重要。XML技術(shù)廣泛地應(yīng)用在分布式計(jì)算、Web Service, SOA等現(xiàn)代信息技術(shù)中,XML解析是XML處理的基本手段,但傳統(tǒng)單線程的XML讀寫方式不能充分利用多處理器和多核心處理器的優(yōu)勢(shì),因此XML處理效率不高。如何充分利用當(dāng)今計(jì)算機(jī)多處理器、多核心處理器以及大內(nèi)存的優(yōu)勢(shì),提高XML 訪問速率和處理效率是本發(fā)明的主要?jiǎng)?chuàng)新點(diǎn)。本發(fā)明所涉及的現(xiàn)有技術(shù)包括l.XML DOM 解析技術(shù)XML DOM是用于XML的標(biāo)準(zhǔn)對(duì)象模型、用于XML的標(biāo)準(zhǔn)編程接口。DOM中立于平臺(tái)和語言,是W3C的標(biāo)準(zhǔn)。XML DOM定義了所有XML元素的對(duì)象和屬性,以及訪問它們的方法 (接口)。因此,XML DOM是用于獲取、更改、添加或刪除XML元素的標(biāo)準(zhǔn)。XML DOM把XML文檔視為一棵節(jié)點(diǎn)樹(node-tree)。樹中的所有節(jié)點(diǎn)彼此之間都有關(guān)系。這種樹結(jié)構(gòu)被稱為節(jié)點(diǎn)樹,可通過這棵樹訪問所有節(jié)點(diǎn)??梢孕薷幕騽h除它們的內(nèi)容,也可以創(chuàng)建新的元素。這顆節(jié)點(diǎn)樹展示了節(jié)點(diǎn)的集合,以及它們之間的聯(lián)系。這棵樹從根節(jié)點(diǎn)開始,然后在樹的最低層級(jí)向文本節(jié)點(diǎn)長(zhǎng)出枝條。節(jié)點(diǎn)樹中的節(jié)點(diǎn)彼此之間都有等級(jí)關(guān)系。父、子和同級(jí)節(jié)點(diǎn)用于描述這種關(guān)系。父節(jié)點(diǎn)擁有子節(jié)點(diǎn),位于相同層級(jí)上的子節(jié)點(diǎn)稱為同級(jí)節(jié)點(diǎn)(兄弟或姐妹)。在節(jié)點(diǎn)樹中,頂端的節(jié)點(diǎn)成為根節(jié)點(diǎn), 根節(jié)點(diǎn)之外的每個(gè)節(jié)點(diǎn)都有一個(gè)父節(jié)點(diǎn)。節(jié)點(diǎn)可以有任何數(shù)量的子節(jié)點(diǎn)。葉子是沒有子節(jié)點(diǎn)的節(jié)點(diǎn),同級(jí)節(jié)點(diǎn)是擁有相同父節(jié)點(diǎn)的節(jié)點(diǎn)。因?yàn)閄ML數(shù)據(jù)是按照樹的形式進(jìn)行構(gòu)造的, 所以可以在不了解樹的確切結(jié)構(gòu)且不了解其中包含的數(shù)據(jù)類型的情況下,對(duì)其進(jìn)行遍歷。大多數(shù)瀏覽器都內(nèi)建了供讀取和操作XML的XML解析器。解析器把XML轉(zhuǎn)換為編程語言可存取的對(duì)象。2.多線程并行與互斥技術(shù)每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動(dòng)態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。
      當(dāng)有多個(gè)線程并行運(yùn)行時(shí),采用線程池對(duì)多線程進(jìn)行管理。線程池是一種多線程處理形式,處理過程中將任務(wù)添加到隊(duì)列,然后在創(chuàng)建線程后自動(dòng)啟動(dòng)這些任務(wù)。線程池線程都是后臺(tái)線程。每個(gè)線程都使用默認(rèn)的堆棧大小,以默認(rèn)的優(yōu)先級(jí)運(yùn)行,并處于多線程單元中。如果某個(gè)線程在托管代碼中空閑(如正在等待某個(gè)事件),則線程池將插入另一個(gè)輔助線程來使所有處理器保持繁忙。如果所有線程池線程都始終保持繁忙,但隊(duì)列中包含掛起的工作,則線程池將在一段時(shí)間后創(chuàng)建另一個(gè)輔助線程,但線程的數(shù)目永遠(yuǎn)不會(huì)超過最大值。超過最大值的線程可以排隊(duì),但他們要等到其他線程完成后才啟動(dòng)。在多線程環(huán)境下,采用信號(hào)量完成線程的互斥和同步。信號(hào)量是在多線程環(huán)境下使用的一種設(shè)施,是可以用來保證兩個(gè)或多個(gè)關(guān)鍵代碼段不被并發(fā)調(diào)用。在進(jìn)入一個(gè)關(guān)鍵代碼段之前,線程必須獲取一個(gè)信號(hào)量;一旦該關(guān)鍵代碼段完成了,那么該線程必須釋放信號(hào)量。其它想進(jìn)入該關(guān)鍵代碼段的線程必須等待直到第一個(gè)線程釋放信號(hào)量。為了完成這個(gè)過程,需要?jiǎng)?chuàng)建一個(gè)信號(hào)量(VI),然后將獲取信號(hào)量(Acquire Semaphore VI)以及釋放信號(hào)量(Release Semaphore VI)分別放置在每個(gè)關(guān)鍵代碼段的首末端,確認(rèn)這些信號(hào)量 (VI)引用的是初始創(chuàng)建的信號(hào)量。3.多處理器分配和負(fù)載均衡技術(shù)多處理器任務(wù)分配和負(fù)載均衡是在多處理器核心的環(huán)境下,對(duì)處理任務(wù)進(jìn)行動(dòng)態(tài)分配和調(diào)試,從而提高處理器利用率,實(shí)現(xiàn)多線程并行的高速XML解析。多處理器系統(tǒng)的調(diào)度模型主要包括處理器模型、任務(wù)模型及調(diào)度算法三部分。處理器模型描述處理器結(jié)構(gòu)和處理能力等信息,任務(wù)模型描述調(diào)度等待處理的任務(wù)所需要的相關(guān)信息。設(shè)一個(gè)多處理器系統(tǒng)由m個(gè)處理器(P1, P2, L Pm)及K個(gè)資源(Res = r1 r2, L, rk),處理能力CiG = 1,2, L m)表示處理器Pi在單位時(shí)間內(nèi)處理任務(wù)的能力,多處理器系統(tǒng)的處理能力TPC定義為
      mTPC = Y4C1
      i=\多處理器系統(tǒng)采用集中式調(diào)度機(jī)制,由調(diào)度器將所有任務(wù)分配到各處理器執(zhí)行; 每個(gè)處理器都有各自的調(diào)度隊(duì)列,處理器從該調(diào)度隊(duì)列中選擇任務(wù)進(jìn)行處理;調(diào)度器與各處理器之間的通信通過調(diào)度隊(duì)列來實(shí)現(xiàn)。對(duì)多處理器系統(tǒng),使用調(diào)度成功率、平均響應(yīng)時(shí)間、處理器利用率、調(diào)度長(zhǎng)度作為評(píng)價(jià)調(diào)度算法的性能指標(biāo)。1)調(diào)度成功率(Success Rate, SR)指被算法調(diào)度成功的任務(wù)集數(shù)N'與被調(diào)度的任務(wù)集數(shù)N之比
      N'SR = -2)平均響應(yīng)時(shí)間(Average Response Time, ART)指集中所有任務(wù)開始處理的時(shí)間與到達(dá)時(shí)間的平均差。設(shè)任務(wù)Si的到達(dá)時(shí)間為ti;開始處理的時(shí)間為Sti,則其響應(yīng)時(shí)間為= 8、-、。設(shè)任務(wù)集中的任務(wù)數(shù)為n,則任務(wù)的平均響應(yīng)時(shí)間為
      η γ ART = Yj^
      !=ι η一個(gè)任務(wù)集的平均響應(yīng)時(shí)間ART越小,即等待時(shí)間越短,則調(diào)度算法的性能越好。3)調(diào)度長(zhǎng)度(khedule Length, SL)指從最早的任務(wù)到達(dá)時(shí)間開始,到最后一個(gè)任務(wù)的完成時(shí)間之差。完成時(shí)間(finish time)為ft⑴=st (i)+pt⑴,其中pt (i)為任務(wù)st(i)的處理時(shí)間,則調(diào)度長(zhǎng)度為SL = max (ft (i)) -min (t (i))在調(diào)度成功的前提下,較小的調(diào)度長(zhǎng)度意味著任務(wù)被較早處理完畢,且處理器的平均利用率較高。4)處理器利用率(Utilization Rate, UR)指處理器執(zhí)行任務(wù)占用的時(shí)間和與調(diào)度長(zhǎng)度之比。設(shè)任務(wù)集S中有h個(gè)任務(wù)被處理器Pj (j = 1,2,L,m)響應(yīng),則Pj的利用率為
      權(quán)利要求
      1. 一種多核分片XML并行解析方法,其特征在于包括如下步驟 第一步、構(gòu)造多線程并行1)使用FORK-JOIN結(jié)構(gòu)來描述如何創(chuàng)建并發(fā)線程;2)將FORK出來的線程放入線程池,由線程池負(fù)責(zé)線程的生命周期管理;3)在多線程環(huán)境下,采用mutex變量作為互斥信號(hào)量,實(shí)現(xiàn)多線程環(huán)境下的資源訪問的同步和互斥;第二步、創(chuàng)建主線程,由主線程初始化全局變量,用于進(jìn)行子線程同步及記錄查詢結(jié)果;第三步、多核并行處理器分配,用于完成進(jìn)程和線程到處理器節(jié)點(diǎn)的分配1)任務(wù)分配模型的建立設(shè)多核并行處理器包含Nn。de個(gè)處理節(jié)點(diǎn)A,A,L Dn^1,每個(gè)處理器包含N。_個(gè)處理器核C15L Cu港分配的并行程序有Npra。個(gè)進(jìn)程忍,f,L Pn一,進(jìn)程Pi包含Mi個(gè)線程^proc-IT TLT 并行程序的總線程個(gè)數(shù)^=Y4Mk-,1O-1I-L 1Mi-I,k=0設(shè)待分配的并行程序?yàn)橐粋€(gè)無向圖G= (V,E),其中V是節(jié)點(diǎn)的集合{VJ,節(jié)點(diǎn)Vi對(duì)應(yīng)一個(gè)二元組<Ti; Pi),其中Ti是節(jié)點(diǎn)對(duì)應(yīng)的線程號(hào),Pi為該線程所屬的進(jìn)程號(hào);E是無向邊的集合{Eu};連接節(jié)點(diǎn)Vi和Vj的邊Eij e E,表示線程Ti和Tj間的通信或共享數(shù)據(jù),邊的權(quán)值Wu表示兩個(gè)線程通信或共享數(shù)據(jù)的頻繁程度;2)進(jìn)行兩輪操作,第一輪操作完成進(jìn)程到處理節(jié)點(diǎn)的分配,第二輪操作完成處理節(jié)點(diǎn)內(nèi)線程到處理器核的分配,每一輪操作包含多次迭代過程a)對(duì)第一輪操作,初始的任務(wù)關(guān)系圖以進(jìn)程為單位進(jìn)行初步劃分,第一輪操作的結(jié)束條件是圖中復(fù)合節(jié)點(diǎn)個(gè)數(shù)<處理節(jié)點(diǎn)個(gè)數(shù),結(jié)束時(shí)圖中每個(gè)復(fù)合節(jié)點(diǎn)為一個(gè)子圖,對(duì)應(yīng)一個(gè)處理節(jié)點(diǎn),包含在子圖中的線程分配給該處理節(jié)點(diǎn);b)對(duì)第一輪操作劃分出的每個(gè)子圖進(jìn)行第二輪操作,第二輪操作的結(jié)束條件是圖中復(fù)合節(jié)點(diǎn)個(gè)數(shù)<處理器核個(gè)數(shù),結(jié)束時(shí)圖中每個(gè)復(fù)合節(jié)點(diǎn)對(duì)應(yīng)一個(gè)處理器核,包含在其中的線程分配給該處理器核;第四步、多核XML分片1)使用DOM將XML文檔載入到內(nèi)存,得到XML的樹型結(jié)構(gòu);2)對(duì)XML進(jìn)行子片劃分采用(χ,y)表示一個(gè)XML子片,其中χ代表子片的起點(diǎn),y代表子片的終點(diǎn),定義一個(gè)空閑子片為未被處理器占用的XML子片,其中該子片中的所有結(jié)點(diǎn)都未被任何一個(gè)處理器或子線程處理;3)一個(gè)子片S(x, y)和另一子片S' (χ',y')采用以下公式進(jìn)行分配 FP (S, S' ) =max((x-x' ) g(x-y) g(y-y' )g(x' -y'))第五步、分片XML解析結(jié)果歸并 1)分片XML解析結(jié)果統(tǒng)一存放設(shè)XML分片數(shù)為n,則采用數(shù)組part [η]對(duì)各個(gè)XML片進(jìn)行存放,其中part[i]=第i 個(gè)XML分片解析結(jié)果,0 ^ i <n2)對(duì)part [η]進(jìn)行歸并。
      2.根據(jù)權(quán)利要求1所述的多核分片XML并行解析方法,其特征在于在所述FORK-JOIN 結(jié)構(gòu)中,一個(gè)FORK語句產(chǎn)生一個(gè)新的并發(fā)線程路徑,并且并發(fā)線程在其結(jié)尾使用JOIN語句;當(dāng)原線程和新產(chǎn)生的線程都達(dá)到JOIN語句后,代碼繼續(xù)以順序的方式執(zhí)行。
      3.根據(jù)權(quán)利要求1所述的多核分片XML并行解析方法,其特征在于所述互斥信號(hào)量的工作原理為當(dāng)請(qǐng)求一個(gè)使用mutex來表示的資源時(shí),進(jìn)程需要先讀取mutex的值,以判斷相應(yīng)的資源是否可用當(dāng)mutex的值大于0時(shí),表明有資源可以請(qǐng)求;等于0時(shí),說明現(xiàn)在無可用資源,進(jìn)程會(huì)進(jìn)入睡眠狀態(tài)直至有可用資源時(shí),當(dāng)進(jìn)程不再使用一個(gè)互斥信號(hào)量控制的共享資源時(shí),mutex的值增1。
      4.根據(jù)權(quán)利要求3所述的多核分片XML并行解析方法,其特征在于對(duì)所述mutex的值進(jìn)行的增減操作均為原子操作。
      5.根據(jù)權(quán)利要求1所述的多核分片XML并行解析方法,其特征在于所述全局變量至少包括信號(hào)量、子線程狀態(tài)集和結(jié)果集。
      6.根據(jù)權(quán)利要求1所述的多核分片XML并行解析方法,其特征在于所述多次迭代過程是指從輸入的初始任務(wù)關(guān)系圖開始,每次選擇具有最大權(quán)值的邊,合并該條邊的兩個(gè)復(fù)合節(jié)點(diǎn)并生成一個(gè)新的復(fù)合節(jié)點(diǎn),且新的復(fù)合節(jié)點(diǎn)中所包含的線程個(gè)數(shù)必須小于一個(gè)閾值;重復(fù)“選擇-合并”過程,直到任務(wù)關(guān)系圖中復(fù)合節(jié)點(diǎn)的個(gè)數(shù)等于處理節(jié)點(diǎn)或處理器核的個(gè)數(shù)。
      7.根據(jù)權(quán)利要求6所述的多核分片XML并行解析方法,其特征在于第一、二輪操作使用的閾值分別按以下公式計(jì)算
      8.根據(jù)權(quán)利要求1所述的多核分片XML并行解析方法,其特征在于所述歸并為兩兩歸并模式,歸并趟數(shù)為「log2 ,其中N #表示子片的數(shù)量。
      全文摘要
      本發(fā)明公開了一種多核分片XML并行解析方法,通過多核處理器利用多線程技術(shù),根據(jù)XML的大小將XML分片,即將XML文檔分解成為若干相對(duì)獨(dú)立和完整的XML片段,各個(gè)片段使用外鍵關(guān)聯(lián);采用分治策略對(duì)各XML片段進(jìn)行并行解析,最后完成結(jié)果合并,最終形成一個(gè)完整的XML解析結(jié)果。通過多核并行解析,可大大提高XML的解析速度和效率。本發(fā)明可應(yīng)用在對(duì)XML性能要求較高,或XML文檔較為龐大的系統(tǒng)中,如分布式系統(tǒng)、Web Service和云計(jì)算平臺(tái)等。
      文檔編號(hào)G06F17/30GK102495722SQ20111031704
      公開日2012年6月13日 申請(qǐng)日期2011年10月18日 優(yōu)先權(quán)日2011年10月18日
      發(fā)明者唐雪飛, 李應(yīng)洪, 汪海良, 陳科 申請(qǐng)人:成都康賽電子科大信息技術(shù)有限責(zé)任公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1