專利名稱:多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于一種磁盤(pán)讀寫(xiě)的方法,特別是一種多線程下執(zhí)行磁盤(pán)讀寫(xiě) 的方法。
背景技術(shù):
多線程(multi-thread)為--種操作系統(tǒng)用來(lái)提高系統(tǒng)處理效能的方法,由 于每一個(gè)待處理類別的命令均有一個(gè)線程處理,這些不同的線程可傳送至處 理器進(jìn)行處理。當(dāng)某一類待處理事件在作長(zhǎng)時(shí)間的等待性處理時(shí),操作系統(tǒng) 可切換至其它類別事件的線程執(zhí)行。或者,操作系統(tǒng)可在極短的時(shí)間間隔內(nèi) 在多個(gè)線程之間切換,以在一定時(shí)間內(nèi)處理多個(gè)事件的命令,以提高系統(tǒng)處 理效能。
現(xiàn)有技術(shù)中,也有利用多個(gè)線程處理磁盤(pán)讀寫(xiě)的待處理命令,以求提高 磁盤(pán)的存取效能。但是當(dāng)磁盤(pán)的讀寫(xiě)量不大時(shí),針對(duì)磁盤(pán)讀寫(xiě)的處理命令的 多個(gè)線程反而會(huì)有閑置的情形。由于操作系統(tǒng)在進(jìn)行多線程的切換時(shí),會(huì)包 含這些閑置的線程,因此當(dāng)輪到等待的線程,如對(duì)應(yīng)于鼠標(biāo)命令的線程時(shí), 已經(jīng)經(jīng)過(guò)許多閑置的磁盤(pán)讀寫(xiě)線程切換,反而造成處理效能降低。
因此,如何在多線程下執(zhí)行磁盤(pán)讀寫(xiě),且不因閑置的磁盤(pán)讀寫(xiě)線程造成 處理效能降低的情形,便成為相當(dāng)重要的課題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方 法,用以解決多線程下執(zhí)行磁盤(pán)讀寫(xiě)時(shí),因過(guò)多閑置的磁盤(pán)讀寫(xiě)線程而導(dǎo)致 系統(tǒng)處理效能降低的情形。
為了實(shí)現(xiàn)上述目的,本發(fā)明提出一種多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,包 含接收一磁盤(pán)讀寫(xiě)命令;暫置磁盤(pán)讀寫(xiě)命令于一讀寫(xiě)命令等待隊(duì)列;提供 讀寫(xiě)命令等待隊(duì)列中的一待處理命令數(shù);提供對(duì)應(yīng)于待處理命令數(shù)的至少一磁盤(pán)讀寫(xiě)線程;以及分配磁盤(pán)讀寫(xiě)命令到磁盤(pán)讀寫(xiě)線程的其中之一。
本方法還包含定義每一線程的一最大處理命令數(shù),以根據(jù)待處理命令數(shù) 與最大處理命令數(shù)決定磁盤(pán)讀寫(xiě)線程的數(shù)量。其中,在處理完畢磁盤(pán)讀寫(xiě)命 令時(shí),將處理完畢的磁盤(pán)讀寫(xiě)命令自讀寫(xiě)命令等待隊(duì)列中刪除,并更新讀寫(xiě) 命令等待隊(duì)列中的待處理命令數(shù)。接著,再根據(jù)更新后的該待處理命令數(shù)決 定是否消除其中一個(gè)磁盤(pán)讀寫(xiě)線程?;蛘?,根據(jù)所紀(jì)錄的處理命令數(shù)決定是 否新增另一磁盤(pán)讀寫(xiě)線程,其中所接收的磁盤(pán)讀寫(xiě)命令可分配至新增的磁盤(pán) 讀寫(xiě)線程。
為了實(shí)現(xiàn)上述目的,本發(fā)明另 一實(shí)施例中提出 一種多線程下執(zhí)行磁盤(pán)讀 寫(xiě)的方法,包含提供一讀寫(xiě)命令等待隊(duì)列中的一待處理命令數(shù);提供對(duì)應(yīng) 于待處理命令數(shù)的一期望磁盤(pán)讀寫(xiě)線程數(shù)量;以及比較期望磁盤(pán)讀寫(xiě)線程數(shù) 量與一現(xiàn)有磁盤(pán)讀寫(xiě)線程數(shù)量,以決定是否新增或刪減一磁盤(pán)讀寫(xiě)線程。
本方法包含定義每一磁盤(pán)讀寫(xiě)線程的 -最大處理命令數(shù),該期望磁盤(pán)讀 寫(xiě)線程決定于待處理命令數(shù)與最大處理命令數(shù)。其中還包含在處理完畢一磁 盤(pán)讀寫(xiě)命令,或是新接收磁盤(pán)讀寫(xiě)命令后,變更讀寫(xiě)命令等待隊(duì)列中的待處 理命令數(shù)。待處理命令數(shù)包含有未處理完成的磁盤(pán)讀取命令與新接收的磁盤(pán) 讀寫(xiě)命令。
本發(fā)明的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法可依照不同的讀寫(xiě)量,動(dòng)態(tài)地產(chǎn) 生或是消除磁盤(pán)讀寫(xiě)線程,使操作系統(tǒng)中的多線程盡量維持都是待處理的線 程,減少閑置的磁盤(pán)讀寫(xiě)線程,以避免因過(guò)多的閑置磁盤(pán)讀寫(xiě)線程拖累系統(tǒng) 的處理效能。
為使本發(fā)明的上述和其它目的、特征、優(yōu)點(diǎn)與實(shí)施例能更明顯易懂,所 附附圖的詳細(xì)說(shuō)明如下
圖1是本發(fā)明的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法一較佳實(shí)施例的流程圖; 圖2是本發(fā)明的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法另一較佳實(shí)施例的流程圖。
主要組件符號(hào)說(shuō)明
U0 180:步驟 210 260:步驟
具體實(shí)施例方式
以下將以附圖及詳細(xì)說(shuō)明清楚說(shuō)明本發(fā)明的精神,任何熟悉本領(lǐng)域的技 術(shù)人員在了解本發(fā)明的較佳實(shí)施例后,當(dāng)可由本發(fā)明所教示的技術(shù),加以改 變及修飾,其并不脫離本發(fā)明的精神與范圍。
為有效地解決現(xiàn)有技術(shù)中使用多線程執(zhí)行磁盤(pán)讀寫(xiě)時(shí),因切換時(shí)經(jīng)過(guò)的 閑置磁盤(pán)讀寫(xiě)線程過(guò)多,反而造成系統(tǒng)效能低弱的情形,本發(fā)明便提出了一 種在處理磁盤(pán)讀寫(xiě)命令時(shí),依照不同的讀寫(xiě)量動(dòng)態(tài)地產(chǎn)生或是消除磁盤(pán)讀寫(xiě) 線程,使操作系統(tǒng)中的多線程盡量維持都是待處理的線程,以提高處理器的 處理效率。
參照?qǐng)D1,其示出了本發(fā)明的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法一較佳實(shí)施
例的流程圖。應(yīng)用本發(fā)明的操作系統(tǒng)包含有一讀寫(xiě)命令分派程序,步驟110 為接收磁盤(pán)讀寫(xiě)命令,接著,步驟120中,讀寫(xiě)命令分配程序可將所接收到 的磁盤(pán)讀寫(xiě)命令暫置在一讀寫(xiě)命令等待隊(duì)列。步驟130為提供讀寫(xiě)命令等待 隊(duì)列中所紀(jì)錄的待處理命令數(shù),包含更新讀寫(xiě)命令等待隊(duì)列中的待處理命令 數(shù),使所紀(jì)錄的待處理命令數(shù)隨著所接收的磁盤(pán)讀寫(xiě)命令數(shù)量而改變。待處 理命令數(shù)包含有未處理完成的磁盤(pán)讀寫(xiě)命令,與新接收的磁盤(pán)讀寫(xiě)命令。
歩驟140則為提供對(duì)應(yīng)于待處理命令數(shù)的至少一磁盤(pán)讀寫(xiě)線程。其中, 讀寫(xiě)命令分派程序中包含有定義每一磁盤(pán)讀寫(xiě)線程的最大處理命令數(shù),以根 據(jù)所定義的最大處理命令數(shù)與所紀(jì)錄的待處理命令數(shù)提供對(duì)應(yīng)的磁盤(pán)讀寫(xiě)線 程。接著,步驟150為讀寫(xiě)命令分派程序?qū)⑺邮盏拇疟P(pán)讀寫(xiě)命令分配到所 述磁盤(pán)讀寫(xiě)線程的其中之一。
步驟160中,當(dāng)磁盤(pán)讀寫(xiě)命令處理完成之后,讀寫(xiě)命令分派程序可將該 命令由讀寫(xiě)命令等待隊(duì)列中刪除,并在步驟170中更新讀寫(xiě)命令等待隊(duì)列中 的待處理命令數(shù)。接著,進(jìn)入步驟180,根據(jù)更新后的待處理命令數(shù)決定是 否消除其中一個(gè)現(xiàn)有的磁盤(pán)讀寫(xiě)線程,以防止閑置的磁盤(pán)讀寫(xiě)線程降低系統(tǒng) 效能的情形。
步驟140中可將待處理命令數(shù)減1的值除以最大處理命令數(shù),取其整數(shù) 部位再加1,即可得到期望提供的磁盤(pán)讀寫(xiě)線程的數(shù)量。或者,也可將待處 理命令數(shù)除以最大處理命令數(shù)后的值無(wú)條件進(jìn)位至整數(shù)位,以得到期望提供的磁盤(pán)讀寫(xiě)線程的數(shù)量。須注意的是,磁盤(pán)讀寫(xiě)線程的數(shù)量也可透過(guò)其它合 理的判斷步驟決定。
由于磁盤(pán)讀寫(xiě)線程的數(shù)量為對(duì)應(yīng)于現(xiàn)有的待處理命令數(shù),這些待處理的 磁盤(pán)讀寫(xiě)命令可有效地分配到磁盤(pán)讀寫(xiě)線程中,而不會(huì)因磁盤(pán)讀寫(xiě)命令不多 而產(chǎn)生閑置的磁盤(pán)讀寫(xiě)線程。
參照?qǐng)D2,其示出了本發(fā)明的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法另一較佳實(shí) 施例的流程圖。本發(fā)明可透過(guò)讀寫(xiě)命令分派程序紀(jì)錄讀寫(xiě)命令等待隊(duì)列中的 待處理命令數(shù),該待處理命令數(shù)包含有未處理完成的磁盤(pán)讀寫(xiě)命令數(shù)量,以
及新接收的磁盤(pán)讀寫(xiě)命令。步驟210為提供讀寫(xiě)命令等待隊(duì)列中的待處理命 令數(shù)。步驟220為提供對(duì)應(yīng)待處理命令數(shù)的一期望磁盤(pán)讀寫(xiě)線程數(shù)量,步驟 230則為比較該期望磁盤(pán)讀寫(xiě)線程的數(shù)量與現(xiàn)有的磁盤(pán)讀寫(xiě)線程的數(shù)量,以 決定是否新增另一磁盤(pán)讀寫(xiě)線程,或是刪除現(xiàn)有的磁盤(pán)讀寫(xiě)線程,使現(xiàn)有磁 盤(pán)讀寫(xiě)線程數(shù)量與期望磁盤(pán)讀寫(xiě)線程相同。若是期望磁盤(pán)讀寫(xiě)線程數(shù)量等于 現(xiàn)有磁盤(pán)讀寫(xiě)線程數(shù)量,則進(jìn)入步驟260,將磁盤(pán)讀寫(xiě)命令分配至所述磁盤(pán) 讀寫(xiě)線程。
步驟210中,若是新接收一磁盤(pán)讀寫(xiě)命令,則會(huì)使讀寫(xiě)命令等待隊(duì)列中 的待處理命令數(shù)增加,導(dǎo)致步驟230中期望的磁盤(pán)讀寫(xiě)線程數(shù)量可能會(huì)大于 現(xiàn)有的磁盤(pán)讀寫(xiě)線程數(shù)量,因此,則步驟240為決定新增磁盤(pán)讀寫(xiě)線程。讀 取命令分派程序會(huì)產(chǎn)生新的磁盤(pán)讀寫(xiě)線程,新的磁盤(pán)讀寫(xiě)線程會(huì)加入原有磁 盤(pán)讀寫(xiě)線程中,以處理讀取命令等待隊(duì)列中的待處理的磁盤(pán)讀寫(xiě)命令。
而步驟210中,若是處理完畢一磁盤(pán)讀寫(xiě)命令,則處理完畢的磁盤(pán)讀寫(xiě) 命令會(huì)自讀寫(xiě)命令等待隊(duì)列中移除后,使得讀寫(xiě)命令等待隊(duì)列中的待處理命 令數(shù)減少,導(dǎo)致步驟230中期望的磁盤(pán)讀寫(xiě)線程數(shù)量可能小于現(xiàn)有的磁盤(pán)讀 寫(xiě)線程數(shù)量,因此,則步驟250中決定刪除其中一個(gè)現(xiàn)有的磁盤(pán)讀寫(xiě)線程。 讀寫(xiě)命令分派程序可在某一磁盤(pán)讀寫(xiě)線程回復(fù)處理命令完畢時(shí),下達(dá)一結(jié)束 訊號(hào)給該磁盤(pán)讀寫(xiě)線程,使該磁盤(pán)讀寫(xiě)線程進(jìn)入結(jié)束狀態(tài),以防止因系統(tǒng)中 過(guò)多的閑置線程而造成處理器空轉(zhuǎn),降低系統(tǒng)效能的情形。
由上述本發(fā)明較佳實(shí)施例可知,應(yīng)用本發(fā)明具有下列優(yōu)點(diǎn)。本發(fā)明的多 線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法可依照不同的讀寫(xiě)量,動(dòng)態(tài)地產(chǎn)生或是消除磁盤(pán) 讀寫(xiě)線程,使操作系統(tǒng)中的多線程盡量維持都是待處理的線程,減少閑置的磁盤(pán)讀寫(xiě)線程,以避免因過(guò)多的閑置磁盤(pán)讀寫(xiě)線程拖累系統(tǒng)的處理效能。
當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的 情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形, 但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、一種多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于,包含接收一磁盤(pán)讀寫(xiě)命令;暫置該磁盤(pán)讀寫(xiě)命令于一讀寫(xiě)命令等待隊(duì)列;提供該讀寫(xiě)命令等待隊(duì)列中的一待處理命令數(shù);提供對(duì)應(yīng)于該待處理命令數(shù)的至少一磁盤(pán)讀寫(xiě)線程;以及分配該磁盤(pán)讀寫(xiě)命令到所述磁盤(pán)讀寫(xiě)線程的其中之一。
2、 根據(jù)權(quán)利要求1所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含在處理完畢該磁盤(pán)讀寫(xiě)命令時(shí),將處理完畢的該磁盤(pán)讀寫(xiě)命令自該讀 寫(xiě)命令等待隊(duì)列中刪除。
3、 根據(jù)權(quán)利要求2所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含更新該讀寫(xiě)命令等待隊(duì)列中的該待處理命令數(shù)。
4、 根據(jù)權(quán)利要求3所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含根據(jù)更新后的該待處理命令數(shù)決定是否消除該至少一磁盤(pán)讀寫(xiě)線程的 其中之一。
5、 一種多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于,包含 提供一讀寫(xiě)命令等待隊(duì)列中的一待處理命令數(shù)-, 提供對(duì)應(yīng)于該待處理命令數(shù)的一期望磁盤(pán)讀寫(xiě)線程數(shù)量;以及 比較該期望磁盤(pán)讀寫(xiě)線程數(shù)量與一現(xiàn)有磁盤(pán)讀寫(xiě)線程數(shù)量,以決定是否新增或刪減一磁盤(pán)讀寫(xiě)線程。
6、 根據(jù)權(quán)利要求5所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含定義每一磁盤(pán)讀寫(xiě)線程的一最大處理命令數(shù),該期望磁盤(pán)讀寫(xiě)線程決 定于該待處理命令數(shù)與該最大處理命令數(shù)。
7、 根據(jù)權(quán)利要求5所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含處理完畢一磁盤(pán)讀寫(xiě)命令后,變更該讀寫(xiě)命令等待隊(duì)列中的該待處理 命令數(shù)。
8、 根據(jù)權(quán)利要求5所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 還包含在接收一磁盤(pán)讀寫(xiě)命令后,將該磁盤(pán)讀寫(xiě)命令暫置于該讀寫(xiě)命令等待 隊(duì)列中,并變更該待處理命令數(shù)。
9、根據(jù)權(quán)利要求5所述的多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,其特征在于, 該待處理命令數(shù)包含未處理完成的磁盤(pán)讀取命令與新接收的磁盤(pán)讀寫(xiě)命令。
全文摘要
本發(fā)明涉及一種多線程下執(zhí)行磁盤(pán)讀寫(xiě)的方法,包含提供一讀寫(xiě)命令等待隊(duì)列中的一待處理命令數(shù);提供對(duì)應(yīng)于待處理命令數(shù)的一期望磁盤(pán)讀寫(xiě)線程數(shù)量;以及比較期望磁盤(pán)讀寫(xiě)線程數(shù)量與一現(xiàn)有磁盤(pán)讀寫(xiě)線程數(shù)量,以決定是否新增或刪減一磁盤(pán)讀寫(xiě)線程。
文檔編號(hào)G06F9/46GK101650669SQ20081014625
公開(kāi)日2010年2月17日 申請(qǐng)日期2008年8月14日 優(yōu)先權(quán)日2008年8月14日
發(fā)明者盧曉芬, 陳志偉 申請(qǐng)人:英業(yè)達(dá)股份有限公司