數(shù)據(jù)處理方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及操作系統(tǒng)的數(shù)據(jù)處理技術(shù),尤其涉及數(shù)據(jù)處理方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,程序向操作系統(tǒng)(Operating system,OS)發(fā)送請求,請求操作系統(tǒng)執(zhí)行一個任務(wù),操作系統(tǒng)會為執(zhí)行程序所請求的任務(wù)分配資源并創(chuàng)建線程,將該任務(wù)的參數(shù)等載入線程,操作系統(tǒng)會將載入了任務(wù)參數(shù)的線程放置如調(diào)度隊(duì)列等待操作系統(tǒng)調(diào)度用于執(zhí)行線程的資源。
[0003]若執(zhí)行中沒有異常,當(dāng)線程執(zhí)行結(jié)束,操作系統(tǒng)會將執(zhí)行完成的線程所占用的資源釋放并將執(zhí)行結(jié)果進(jìn)行反饋;若在執(zhí)行線程中出現(xiàn)了異常,線程任務(wù)會被重新置入等待隊(duì)列,直到異常情況消除后,操作系統(tǒng)再次調(diào)度這個線程繼續(xù)執(zhí)行。
[0004]發(fā)明人在研究中發(fā)現(xiàn),操作系統(tǒng)為每個任務(wù)創(chuàng)建和釋放線程資源的開銷較大,尤其是當(dāng)所執(zhí)行的任務(wù)較多且較小時,為每個任務(wù)創(chuàng)建和釋放線程資源的開銷占總運(yùn)行時間的比重較大,使得系統(tǒng)資源的利用率降低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供數(shù)據(jù)處理方法、裝置和系統(tǒng),減少因創(chuàng)建和釋放線程資源帶來的開銷,提高系統(tǒng)資源的利用率。
[0006]本發(fā)明實(shí)施例第一方面,提供一種數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)處理系統(tǒng)中,所述數(shù)據(jù)處理系統(tǒng)包括操作系統(tǒng),所述操作系統(tǒng)對硬件線程池進(jìn)行管理,所述硬件線程池中包括硬件線程,所述方法包括:
[0007]所述硬件線程接收操作系統(tǒng)載入的需要執(zhí)行的任務(wù)代碼,所述載入的任務(wù)代碼中包括多個在代碼開始位置預(yù)先設(shè)置有小任務(wù)開始標(biāo)識的子任務(wù)代碼;
[0008]接收所述操作系統(tǒng)在硬件線程池中申請的預(yù)留的硬件線程的標(biāo)識;
[0009]當(dāng)所述硬件線程讀取到所述任務(wù)中所述小任務(wù)開始標(biāo)識,則將所述小任務(wù)開始標(biāo)識之后等待執(zhí)行的任務(wù)代碼載入到所述預(yù)留的硬件線程標(biāo)識對應(yīng)的預(yù)留的硬件線程。
[0010]結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一種可能實(shí)施方式,當(dāng)所述硬件線程讀取到所載入的任務(wù)代碼中預(yù)先設(shè)置的釋放硬件預(yù)留硬件線程的指令,則向所述操作系統(tǒng)發(fā)送釋放預(yù)留硬件線程請求。
[0011]本發(fā)明實(shí)施例第二方面,提供了另一種數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)處理系統(tǒng)中,所述數(shù)據(jù)處理系統(tǒng)包括操作系統(tǒng),所述操作系統(tǒng)對硬件線程池進(jìn)行管理,所述硬件線程池中包括硬件線程,所述硬件線程被所述操作系統(tǒng)確定為預(yù)留硬件線程;所述方法包括:
[0012]所述硬件線程接收被載入的任務(wù)代碼,其中,所述被載入的任務(wù)代碼開始位置預(yù)先設(shè)置有小任務(wù)開始標(biāo)識;所述任務(wù)代碼中包括多個在代碼開始和結(jié)束位置分別預(yù)先設(shè)置有小任務(wù)開始標(biāo)識和小任務(wù)結(jié)束標(biāo)識的子任務(wù)代碼;
[0013]所述硬件線程執(zhí)行所述被載入的任務(wù)代碼,當(dāng)讀取到被載入的任務(wù)代碼中的所述小任務(wù)結(jié)束標(biāo)識,則結(jié)束執(zhí)行,反饋執(zhí)行結(jié)果。
[0014]結(jié)合第二方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能方式,當(dāng)所述硬件線程執(zhí)行所載入任務(wù)代碼的過程中,出現(xiàn)執(zhí)行異常時,向所述操作系統(tǒng)反饋任務(wù)執(zhí)行異常的消息,以使所述操作系統(tǒng)將所述出現(xiàn)異常的子任務(wù)代碼的執(zhí)行狀態(tài)載入到所述操作系統(tǒng)預(yù)先構(gòu)建的空白數(shù)據(jù)結(jié)構(gòu)中。
[0015]第三方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理系統(tǒng)中包括操作系統(tǒng),所述操作系統(tǒng)對硬件線程池進(jìn)行管理,所述硬件線程池中包括多個硬件線程,所述方法包括:
[0016]所述操作系統(tǒng)載入需要執(zhí)行的任務(wù)代碼,讀取所述任務(wù)代碼的開始位置預(yù)先添加的預(yù)留硬件線程指令,接收所述預(yù)留硬件線程指令指示的預(yù)留硬件線程的請求;所述預(yù)留硬件線程的請求是請求所述操作系統(tǒng)為執(zhí)行所述任務(wù)代碼預(yù)留硬件線程,所述預(yù)留的硬件線程為執(zhí)行所述任務(wù)代碼獨(dú)占的硬件線程;
[0017]所述操作系統(tǒng)在硬件線程池中為執(zhí)行所述任務(wù)代碼申請預(yù)留硬件線程;
[0018]所述操作系統(tǒng)將所述任務(wù)代碼直接載入所述預(yù)留的硬件線程,以使預(yù)留的硬件線程執(zhí)行所述被載入的所述任務(wù)代碼;
[0019]獲得所述預(yù)留硬件線程的執(zhí)行結(jié)果。
[0020]結(jié)合第三方面,本發(fā)明實(shí)施例提供的一種第三方面的第一種可能方式中,所述任務(wù)代碼中包括多個子任務(wù)對應(yīng)的子任務(wù)代碼,所述操作系統(tǒng)在接收到預(yù)留硬件線程的請求后,還包括:
[0021]所述操作系統(tǒng)創(chuàng)建空白的數(shù)據(jù)結(jié)構(gòu);
[0022]所述操作系統(tǒng)將所述任務(wù)代碼直接載入所述預(yù)留的硬件線程之后,所述方法還包括:
[0023]所述操作系統(tǒng)接收所述預(yù)留的硬件線程反饋的任務(wù)代碼執(zhí)行異常的消息;將反饋所述消息的硬件線程中的異常子任務(wù)代碼的執(zhí)行狀態(tài)載入到所述空白的數(shù)據(jù)結(jié)構(gòu)中;將載入了所述出現(xiàn)異常的子任務(wù)代碼的執(zhí)行狀態(tài)的數(shù)據(jù)結(jié)構(gòu)放入所述操作系統(tǒng)的任務(wù)調(diào)度隊(duì)列中進(jìn)行執(zhí)行;
[0024]所述操作系統(tǒng)將所述任務(wù)代碼中沒有出現(xiàn)異常的等待執(zhí)行的子任務(wù)代碼載入到所述預(yù)留的硬件線程中繼續(xù)執(zhí)行。
[0025]結(jié)合第三方面或者第三方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第三方面的第二種可能的實(shí)施方式中,所述任務(wù)代碼的結(jié)束位置預(yù)先設(shè)置了釋放預(yù)留硬件線程指令,所述方法還包括:
[0026]所述操作系統(tǒng)接收到釋放預(yù)留的硬件線程的請求,根據(jù)所述請求釋放所述預(yù)留的硬件線程,所述釋放預(yù)留的硬件線程的請求為所述預(yù)留的硬件線程讀取到所述釋放預(yù)留硬件線程指令時向所述操作系統(tǒng)發(fā)送的。
[0027]第四方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,包括:編譯器在任務(wù)代碼開始位置添加預(yù)留硬件線程指令,所述預(yù)留硬件線程指令用于向操作系統(tǒng)發(fā)送預(yù)留硬件線程的請求;
[0028]所述編譯器在任務(wù)代碼結(jié)束位置添加釋放預(yù)留硬件線程指令,所述釋放預(yù)留硬件線程指令用于向操作系統(tǒng)發(fā)送釋放預(yù)留的硬件線程的請求。
[0029]第五方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理裝置,應(yīng)用于數(shù)據(jù)處理系統(tǒng)中,所述數(shù)據(jù)處理系統(tǒng)包括操作系統(tǒng),所述操作系統(tǒng)對硬件線程池進(jìn)行管理,所述硬件線程池中包括數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理裝置包括:
[0030]接收單元,用于接收所述操作系統(tǒng)載入的需要執(zhí)行的任務(wù)代碼,所述任務(wù)代碼中包括多個在代碼開始位置預(yù)先設(shè)置有小任務(wù)開始標(biāo)識的子任務(wù)代碼;
[0031]所述接收單元,還用于接收所述操作系統(tǒng)在硬件線程池中申請的預(yù)留的數(shù)據(jù)處理裝置的標(biāo)識;
[0032]第一解耦單元,當(dāng)讀取到所述任務(wù)中所述小任務(wù)開始標(biāo)識,則將所述小任務(wù)開始標(biāo)識之后等待執(zhí)行的任務(wù)代碼載入到所述預(yù)留的數(shù)據(jù)處理裝置標(biāo)識對應(yīng)的預(yù)留的數(shù)據(jù)處理裝置。
[0033]結(jié)合第五方面,本發(fā)明實(shí)施例提供了第五方面的第一種可能的實(shí)施方式,還包括釋放請求單元,用于讀取到所載入的任務(wù)代碼中預(yù)先設(shè)置的釋放所述預(yù)留的數(shù)據(jù)處理裝置的指令,則向所述操作系統(tǒng)發(fā)送釋放所述預(yù)留數(shù)據(jù)處理裝置的請求。
[0034]結(jié)合第五方面,本發(fā)明實(shí)施例提供了第五方面的第一種可能實(shí)施方式,所述在代碼開始位置預(yù)先設(shè)置有小任務(wù)開始標(biāo)識的子任務(wù)代碼的結(jié)束位置,預(yù)先設(shè)置小任務(wù)結(jié)束標(biāo)識,當(dāng)所述數(shù)據(jù)處理裝置被所述操作系統(tǒng)確定為預(yù)留的數(shù)據(jù)處理裝置:
[0035]所述接收單元,還用于接收被載入的任務(wù)代碼,其中,所述被載入的任務(wù)代碼的開始位置預(yù)先設(shè)置有小任務(wù)開始標(biāo)識;
[0036]所述數(shù)據(jù)處理裝置還包括:執(zhí)行單元,用于執(zhí)行所述被載入的任務(wù)代碼,當(dāng)讀取到被載入的任務(wù)代碼中的所述小任務(wù)結(jié)束標(biāo)識,則結(jié)束執(zhí)行,反饋執(zhí)行結(jié)果。
[0037]第六方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理裝置,應(yīng)用于數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理裝置對硬件線程池進(jìn)行管理,所述硬件線程池中包括多個硬件線程,包括:
[0038]任務(wù)載入單元,用于載入需要執(zhí)行的任務(wù)代碼;
[0039]請求接收單元,用于讀取所述任務(wù)代碼的開始位置預(yù)先添加的預(yù)留硬件線程指令,接收所述預(yù)留硬件線程指令指示的預(yù)留硬件線程的請求;所述預(yù)留硬件線程的請求是請求所述操作系統(tǒng)為執(zhí)行所述任務(wù)代碼預(yù)留硬件線程,所述預(yù)留的硬件線程為執(zhí)行所述任務(wù)代碼獨(dú)占的硬件線程;
[0040]處理單元,用于在硬件線程池中為執(zhí)行所述任務(wù)代碼申請預(yù)留硬件線程;
[0041]第二解耦單元,用于將所述任務(wù)代碼直接載入所述預(yù)留的硬件線程,以使預(yù)留的硬件線程執(zhí)行所述被載入的所述任務(wù)代碼;
[0042]結(jié)果獲取單元,用于獲得所述預(yù)留硬件線程的執(zhí)行結(jié)果。
[0043]結(jié)合第六方面,本發(fā)明實(shí)施例提供了第六方面的第一種可能的實(shí)施方式,所述任務(wù)代碼中包括多個子任務(wù)對應(yīng)的子任務(wù)代碼,還包括:
[0044]創(chuàng)建單元,用于在所述請求接收單元接收到預(yù)留硬件線程的請求時,創(chuàng)建空白的數(shù)據(jù)結(jié)構(gòu);
[0045]異常處理單元,用于接收所述預(yù)留的硬件線程反饋的任務(wù)代碼執(zhí)行異常的消息;將反饋所述消息的硬件線程中的異常子任務(wù)代碼的執(zhí)行狀態(tài)載入到所述空白的數(shù)據(jù)結(jié)構(gòu)中;將載入了所述出現(xiàn)異常的子任務(wù)代碼的執(zhí)行狀態(tài)的數(shù)據(jù)結(jié)構(gòu)放入所述操作系統(tǒng)的任務(wù)調(diào)度隊(duì)列中進(jìn)行執(zhí)行;
[0046]所述第二解耦單元,還用于將所述任務(wù)代碼中沒有出現(xiàn)異常的等待執(zhí)行的子任務(wù)代碼載入到所述預(yù)留的硬件線程中繼續(xù)執(zhí)行。
[0047]第七方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理系統(tǒng),包括操作系統(tǒng),硬件線程池,所述操作系統(tǒng)對硬件線程池進(jìn)行管理,所述硬件線程池中包括多個硬件線程,其中:
[0048]所述操作系統(tǒng),用于載入需要執(zhí)行的任務(wù)代碼,讀取所述任務(wù)代碼的開始位置預(yù)先添加的預(yù)留硬件線程指令,接收所述預(yù)留硬件線程指令指示的預(yù)留硬件線程的請求;所述操作系統(tǒng)在所述硬件線程池中的第一硬件線程申請為預(yù)留的硬件線程,所述預(yù)留的