TW498281B - Interface system and method for asynchronously updating a shared resource - Google Patents
Interface system and method for asynchronously updating a shared resource Download PDFInfo
- Publication number
- TW498281B TW498281B TW088122789A TW88122789A TW498281B TW 498281 B TW498281 B TW 498281B TW 088122789 A TW088122789 A TW 088122789A TW 88122789 A TW88122789 A TW 88122789A TW 498281 B TW498281 B TW 498281B
- Authority
- TW
- Taiwan
- Prior art keywords
- lock
- queue
- update
- work
- resource
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/523—Mode
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Description
五、發明説明( 發明背景 技術領域 本發明係關於一種介面系統和方法。更特別地是,本發 明係關於一種供f理允許非同步更新共用資源而不用工作 交換、等待或是CPU自旋之介面系統和方法。 背景技藝 計算系統提供結構和方法於保護包含在電腦記憶體中資 料結構和物件之更新。此情形典型地藉由更新料在電腦 記憶體中之共用資源而保持一互斥鎖定,加以完成(因此保 證資源之基元更新)。4匕系統一般需要為要求存取資料結 構或是物件之工作等待直到互斥鎖定被允許才更新資料結 構或是物件,因此往往需要該等待工作在可能使錯誤導入 系統中的環境下加以懸置。 結果,在相關技藝中有需要供刪除或是降低等待鎖定之 工作以改善系統效能《系統和方法。假使該工作因為某種 原因或是另外情形而免除等待時,亦值得允許更新共用資 源而不用使工作等待互斥鎖定Q該工作於等待_鎖定時, 可以不懸置而不會導入某種錯誤至系統中。 本發明之-目的為提供一種用於管理鎖定之改良式系統 和方法。 本毛明之另目的為提供一種用於管理鎖定之具有改良 效能的系統和方法。 本發明I另一目的為提供避免正式懸置或是CPU自旋的 一種用於管理鎖定之系統和方法。 本紙張尺度適财S S家標準(CNS) Α4ϋ^2ΐ()Χ297公董;_ 498281 A7 ___B7 ____ 五、發明説明(2 ) 本發明之另一目的為提供避免昂貴的鎖定競爭之耗用成 本(overhead)之一種用於管理鎖定的系統和方法。 本發明之另一目的為提供一種用於同步和非同步管理鎖 定之改良式系統和方法。 發明總結 經由本發明之系統和方法,應用程式更新有互斥鎖定之 資源時,不必將工作懸置或交換,其係藉選擇性地佇列代 表第一工作之更新請求,而由保持一所需鎖定之第二工作 執行。 本發明其他態樣和優點將由本發明目前之較佳具體實施 例的下列詳細說明與附圖結合而變得明顯。 圖式之簡單說明 圖1為鎖定的圖。 圖2解釋圖1鎖定的狀態襴位。 圖3解釋用於定義如本發明較佳具體實施例的等待工作 之等待—元素(WAIT_ELEMENT)的資料結構。 圖4解釋包含用於定義使用類型(WORK_TYPE)和工作類 型(TASKJTYPE)欄位,以及指向二維陣列函數位址之指標 (ARRAY) ό勺函數陣列。 圖5為本發明較佳具體實施例i〇ck_UpdateResource程序之 流程圖。 圖6為處理所需鎖定已經保持在其他某狀態以及不為呼 叫工作使用案例之MVS_update巨集程序的流程圖。 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐)
裝 訂
線 498281 A7 B7 五、發明説明(3 ) 圖7為假使不可使用時,用於取得在所需狀態之鎖定或 是增加等待元素至LIFO等待仵列中之lock_or_wait常式的流 程圖。 圖8為MVS_unlock常式的流程圖,該常式於一工作試圖 釋放鎖定以及發現在等待佇列上具有等待元素或是鎖定狀 態具有LOCKED位元為開啟的任何時刻呼叫。 圖9解釋用於佇列工作等待元素之總體佇列。 圖1〇解釋非同步更新功能之陣列。 圖11為do-wait程序之流程圖,線程每次需要進入等待鎖 定時執行。 圖12為用於選擇性增加等待元素至總體佇列之 add_to_global常式的流程圖。 圖13為用於選擇性由總體佇列移除等待元素之 remove_from_global 常式的流程圖。 圖14為用於選擇性回轉等待元素至空閒儲存之後置處理 return_wait常式的流程圖。 " 圖15為用於靜默總體4宁列之quisce_global常式的流程圖。 圖16為解釋事件之holding_queue的圖。 圖17為解釋function_array的圖。 圖18為queue_io常式的流程圖。 圖19為後置處理issue_io常式的流程圖。 圖20為資源更新常式schedule_io的流程圖。 圖21為schedule_first_io常式的流程圖。 圖22為解釋請求之保持佇列的圖。 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(4 ) 圖23為解釋閒置服務線程佇列的圖。 圖24為解釋客戶線程執行流程的圖。 圖25為表示服務線程執行流程的虛擬碼。 圖26為解釋更新常式queue_request的流程圖。 圖27為解釋更新常式post_service_thread的流程圖。 圖28為解釋更新常式get_next_request的流程圖。 圖29為解釋散列+表(hash_table)的圖。 圖3 0為解釋LRU結構佇列的圖。 圖31為解釋空閒結構檔案佇列的圖。 圖32為stkc_file_put常式的流程圖。 圖33為hash_put常式的流程圖。 圖34為file_put常式的流程圖。 圖35為file_postwork的流程圖。 圖36為一些佇列和串列的高階系統圖,WAIT_ELEMENTs 如本發明較佳具體實施例選擇性地介於該佇列和串列之間 移動,包含採用仔列、解鎖仔列、回轉仔列、新仔列、等 待佇列以及後置佇列。 完成本發明之最佳模式 如本發明較佳具體實施例,提供一種允許工作不可分割 但不需要同步地以先來先服務之方式依順序更新共用資源 之介面系統和方法。此系統和方法說明將以如下之方式更 新及不需要呼叫工作係實際做成更新之工作的方式。因 此,相對於呼叫工作更新可以為非同步地完成。 -7- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 裝 訂
5 五、發明説明( 在大夕數標準鎖定封裝中,含、 結構表示以及置於某心列/#鎖“工作以某種資料 例,假…. 列中。如本發明較佳具體實施 =假使所k較由現行工作保持時,將代表呼叫 而執行又更新的說明被件 钱 j而非料叫轉置於等待散 :作r = 4新將和呼叫工作非同步執行,但是該呼叫 工:Γ择 而,現行工作在(目前保持該鎖定之 乍)釋放鎖足之前,代表呼叫工作執行更新,因此保證 斤乂不可刀割地、序列地和先來先服務之方式加以形 成0 本1月之另一具體實施例,能夠使用本發明之非同步 系統和方法的應用程式數目為藉由與標準同步(先前技藝) 鎖疋設施結合加以實施而增加。 在%恥系統中的資源由一鎖定加以保護。典型地,該鎖 疋為3個包知字兀。位元組的總量與硬體有關。例如,對 IBM MVS作業系統而言,3個字元之鎖定需要歸元組之 儲存。 一應用經由下列函數呼叫將該鎖定啟始化·· lock—Init(@—〇f—l〇ck,Max—Queuing) 其中: @_of—lock為保護該資源之鎖定位址。
Max__Queuing為所允許完成資源非同步更新的最大量仔 列。假使呼叫程式想要非限制的佇列時,此數可以設定 為特殊值-1。 本纸張尺度適用中國國家標準(CNS) A4規格(210X 297公釐) 498281 A7 B7 五、發明説明(6 ) 如先前所提到,標準(先前技藝)鎖定機構亦由本發明較 佳具體實施例所支援。例如,該呼叫程式可以於寫入或是 讀取模式得到該鎖定,以及假使不能經由下列呼叫得到該 鎖定時,將懸置: lock_ObtainWrite(@_of_lock) lock_ObtainRead(@_of一lock) lock_ReleaseWrite(@_of_lock) lock_ReleaseRead(@_of一 lock) 其中z @_of_lock為保護該資源之鎖定位址。 如本發明較佳具體實施例,為允許非同步更新模式,呼 叫程式規範將被呼叫之函數其將執行各種不同更新。例 如,假使呼叫程式需要增加或是由鏈接串列移除時,二函 數:add_list和remove_list將定義為非同步更新設施。更複 雜之資料結構將具有更多定義之函數。 本發明較佳具體實施例之額外態樣允許呼叫程式定義允 許更新資源之不同類型系統工作。這是重要的,因為更新 可以由與現行工作不同類型之工作加以執行。例如,在 MVS中,具有標準工作和由具有不同規劃環境之系統請求 塊(SRBs)所代表之工作。另一例子發生在多語言應用中, 其中工作正由不同程式語言執行程式碼。此情形允許不同 工作作成資源更新但不需要執行完全相同的常式。例如, 增加至鏈接串列之操作將使執行C語言程式碼之工作與執 行組合語言程式碼之工作具有不同程式碼,而他們需要更 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) # 裝 訂
線 498281 A7 B7 五、發明説明(7 ) 新相同的串列。亦且,此後將以例子的方式說明,可以有 利於將工作分類以允許利用非同步更新設施解決問題。 本發明較佳具體實施例之介面的另一態樣使一函數能夠 在共用資源更新以及鎖定已經釋放之後加以執行。此情形 需要降低鎖定競爭。當鎖定被保持時,依據資源狀態更新 一資源可能需要頷外處理。例如,由鏈接串列移除可能需 要實際由鏈接串列移除而保持一鎖定以及之後回轉該物件 至空閒(free)儲存。鎖定競爭藉由在保護該串列之鎖定釋 放之後回轉該物件至空閒儲存而降低。 本發明較佳具體實施例其他態樣包含規範該鎖定傳遞至 更新常式之參數的能力,以及包含當鎖定不被保持時傳遞 資訊介於用以更新資源之函數以及執行後置處理之函數之 間的能力。 非同步更新設施介面結構 本發明較佳具體實施例之非同步更新設施介面結構包含 一組函數和代表資源可能更新類型之相關工作類型。這些 函數和工作類型儲存在包含函數指標之二維陣列結構中。 各函數被編號以及代表陣列之一列(row)。各工作類型被 編號以及代表陣列之一行(column)。 分配一函數陣列之常式具有下列模板: lock_allocate_function_array(work_types5 task_types) 其中: work_types為可能更新或是處理保護之資源的不同更新 或是後置處理常式數目。 -10- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐)
裝 訂
線 498281 A7 B7 五、發明説明(8 ) task_types為可能更新保護之資源工作的不同定義之工作 類型。 該lock_allocate_function—array常式回轉包含二維陣列之儲 存結構的位址。在鏈接串列例子中只有一工作類型, work_types將為3 (增加、移除和回轉至空閒儲存)以及 task_types 將為 1 〇 定義為鎖定設施之每個函數(當保持該鎖定時,該函數 被執行或是為鎖定被釋放之後執行的後置處理函數)具有 下列模板: procedure<routine_name>(sync_flag, task 一 type, prc 一 argl, arg2) 其中: routine_name為程序或是函數名稱。 sync_flag為藉由鎖定設施傳遞至該函數以指示該函數是 否正由發出更新請求之相同工作呼叫。此數具有值真 (TRUE)或是偽(FALSE)。 task_type為指示該函數何類型函數正執行此函數之指 示。因為資源更新可以為非同步執行,該更新函數可以 在與呼叫程式不同定義之工作類型上執行。 prc_argl為先前回轉碼或是引數編號1。假使該函數為當 保持鎖定所執行之資源更新函數時,則此數為第一使用 者供應之引數。假使該函數為後置處理常式時,則此數 -11 - 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 裝 訂
線 498281 丨丨 - 五、發明説明(9 為由更新函數提供之回轉值。為
上此數為4仕m 致為機益子7C ’在MVS 關值。 組'貝訊,可以包含儲存位址或是其他相 2為^使7當保持鎖定所執行之資源更新函數時, 此數疋弟二使用者供應之引數 ^ ,r 5丨敦,假使该函數為後置處理 ,吊式時,則此數只是使用者供應至常式之引數。 —這些函數定義為回轉—回轉碼,例如製作為機器硬體字 :執孩函數更新—資源(當保持該資源鎖定時,該函數加 :丁),傳遞該回轉碼prc_argu後置處理函數(亦稱為 “)’允許介於資源更新函數與後置處理函數之間的通 訊°下列特殊回轉碼定義為: 職K一N0P0STW0叫D假使該資源更新函數回轉此回轉 碼時’後置處理常式(假使規範時)將不被呼叫。此情形允 彳後置處理常式略過以及儲存函數呼叫所需之路徑長度。 WORK一D0NTUNL0CK(-2)此回轉碼告訴鎖定設施在執^資 源更新函數之後不要解鎖定該資源。正常該鎖定設施在執 行資源更新常式之後釋放該鎖定。此回轉碼將使該鎖定為 保持(意義為該呼叫碼必須確定有時為釋放)^此回轉碼允 許資源更新呼叫使用巢套鎖定,為本發明較佳具體實施^ 之一重要怨樣◊當更新資源時,經常需要獲得多於一個銷 定。此回轉碼之使用允許在非同步更新共用資源之前獲得 多重鎖定。此後說明之例子顯示此態樣之使用,為巢套鎖 定非同步之要點。 裝 訂 • 12· 498281 A7 B7 五、發明説明(10 ) 一呼叫應用規範該函數經由下列函數呼叫使用於各類型 之工作: lock__register_workunit(work_type5 task_type5 function, function_array) 其中: work_type為由程式師指定至此類型更新之數目(0, 1,…)。 task_type為指定至與該函數相關之類型工作的數目。 function為函數位址0 function_array為此函數將增加之函數陣列位址。此數為 由 lock_allocate—function—array 回轉之位址。 在鏈接串列例子中,程式師可以選擇指定0之work」ype 至增加至鏈接串列函數,指定1之work_type至由鏈接串列 移除函數,指定2之work_type至回轉至空閒儲存函數。只 具有一工作類型(0)。於是3呼叫將為lock—register—workunit 函數呼叫所需要以定義此鏈接串列例子之函數。 為使用本發明較佳具體實施例之介面結構,程式撰寫為 包含更新函數、lock_allocate_function_array常式單一呼叫以 及lock_registeir_workunit常式N次呼叫,其中N為更新類型 乘以工作類型數。之後資源可以使用下列介面加以非同步 重複更新,直到程式終止而沒有工作懸置。 資源更新為經由下列介面加以完成:
Lock—UpdateResource(@—of一 lock,@—of一 functionarray, task_type,work_type,arg 1,arg2, -13 - 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂
498281 A7 B7 五、發明説明(11 ) post一work,post一arg,rc) 其中: @—of-lock為保護資源之鎖定的位址。 @—of-functionarray為包含資源該組更新之定義函數陣列 的位址。 task—type為呼叫之工作類型。 work-type為指定至將執行之更新的數目(此與task_type指 示將執行更新資源之函數)。 argl為第一使用者供應之引數。 arg2為第二使用者供應之引數。 post 一 work為在更新函數(由work 一 type規範)之後指定至所 呼叫之後置處理常式的數目,但是不保持相關鎖定。假 使後置處理常式為所需時,呼叫程式規範 NOJFUNCTION(-l)之特殊值,意義為沒有後置處理將執 行0 post一arg為至後置處理常式之一使用者供應引數。 rc為乎Η之回轉碼。此數指示資源由呼叫工作(沒有銷 定競爭)同步更新或是正由保持鎖定(非同步)之現行工 作調度,只是以防呼叫程式想要知道此資訊。 呼叫一函數將承擔鏈接耗用成本之路徑長度。接著詞 的是鎖定資源之快速路徑介面以及假使鎖定為空閒以及 否’函數為非同步哞叫時,使呼叫程式將資源排隊㈦( 更新。此情形為程式師的額外工作,但是允許删除函數 叫《鏈接耗用成本,以及假使沒有鎖定競爭時,允許非 -14- 本纸張尺度適财@目@^7城格(⑽X297公爱)
裝 訂
498281 A7 B7 五、發明説明(l2 ) 步更新以承擔不比標準的先前技藝鎖定更多的路徑長度。 (當然,當沒有鎖定競爭時,非同步更新將較同步更新處 理更快速)。· 這些快速路徑介面顯示如下: lock_Resource(@_of_lock,of一functionarray, task一type,workjype,argl,arg2, post—work,post—arg,rc) lock_Resource 介面使用和上述 lock—UpdateResource 所定義 相同之引數,具有一額外回轉碼如下: WORK_INLINE意義為鎖定以互斥模式獲得,但是更新函 數不執行,因為並沒有鎖定競爭。該呼叫程式則在函數 呼叫之後排隊地更新資源。 unlock一Resource(@—of」ock,@—of—functionarray,task」ype, post—work,post_arg,rc) unlock_Resource介面將資源解鎖定以及假使鎖定以沒有 競爭而釋放時回轉WORK_INLINE。呼叫程式之後將必須 排隊地執行後置處理碼。否則後置處理工作為另一工作 佇列以執行。 現在參考附圖,本發明非同步資源更新設施之較佳具體 實施例和同步資源更新設施結合加以說明。藉由在此事務 中組合同步和非同步設施,將提供較大彈性。如將對那些 熟知相關技藝之人士明顯的是可以提供非同步設施而不用 同步資源更新。 資料結構 -15- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 498281 A7 B7 五、發明説明(I3 ) 參考圖1,鎖定100由3個機器字元:狀態(state)i〇i、等 待仵列(waitq)102和最大仵列(maxqueued)103加以定義。在 IBM MVS作業系統中,每字元具有4個位元組。狀態1〇1包 含定義鎖定狀態之位元。等待佇列102為等待佇列404 (圖 36 )、等待工作之LIFO佇列(同步之先前技藝之鎖定等待程 式)或是資源更新(非同步更新)的定錨點。最大佇列103規 範在非同步更新呼叫將形成為等待之前所允許之最大數目 佇列更新請求。最大佇列值為-1指示不限制。 參考圖2,狀態101包含一 32位元之字元,包含E 121、W 122、L 123、P 124和R 125值,其中在E 121中的一位元指 示該鎖定100保持為互斥(寫);在W 122中的一位元指示該 等待佇列不為空白;在L 123中的一位元指示該鎖定保持為 較高優先順序狀態;在P 124中的一位元指示該非同步更新 請求必須等待而非佇列更新,因為最大佇列已經達到或是 超越。攔位R 125包含保持該鎖定之閱讀機計數。 參考圖3,等待工作由等待_元素(WAIT_ELEMENT)資料 結構1 0 5加以定義,包含次一(next) 106、前一(prev) 107、 ecb 108、動作(acti〇n)i〇9、類型(type)llO、工作函數 (workfun)lll、workprc 112、工作引數(workarg)113、workrc Π 4、函數指標(funp) 115、後置工作(postwork) 116和後置引 數(postarg)i π欄位。當儲存在串列或佇列中時,次一 106和 前一 107為等待_元素1〇5之前向和後向指標。當一工作形成 為等待時,ecb 1〇8在MVS中為設定為WAIT之一字元。動 作109具有下列值的其中之一值:〇btAINLOCL(1),指示 -16- 本紙張尺度適用中國國家標準(CNS) A4規格(21〇X297公釐) 498281 A7 B7 五、發明説明(Η ) 該工作想要得到一鎖定以及假使鎖定由另一工作保持時將 等待;RELEASEL0CK(2),指示該工作想要釋放一鎖定; D0WNGRADE(3),指示該工作想要將該鎖定降級; UPGRADE(4),指示該工作想要更新該鎖定以及假使需要 時將等待;W0RKUNIT(5),指示該等待_元素105不為一工 作而是資源之佇列工作。類型110規範獲得或是釋放之鎖 定類型,其中EXCLUSIVE(x80000000)指示寫入模式以及 READ(l)指示讀取模式。工作函數111規範函數號碼,為指 向函數陣列之索引,當保持一鎖定時執行以更新一資源。 workprc 112為資源更新常式之一函數引數號碼1。工作 引數113為資源更新常式之一函數引數號碼2。workrc 114為 資源更新常式之回轉值。函數指標115為指向函數陣列130 之指標,為由lock_allocate_function_array分配之結構。後置 工作116為後置處理函數號碼。後置引數117為後置處理函 數引數。 參考圖4,函數陣列130包含work_type 131、工作類型 (task_type)132 和陣列指標(arrayp)133。work_type 131 規範陣 列中之更新函數總列數;工作類型132規範函數陣列中之 工作類型總行數;以及陣列指標133提供指向二維函數位 址陣列之指標或是二維函數位址陣列之位址。 本發明較佳具體實施例使用IBM系統/390比較和交換(CS) 及比較雙字和交換(CDS)硬體指令。這些指令分別以Μ P系 統之多處理器(ΜΡ)安全方式更新4或是8位元組。在其他硬 體平台上之製作將使用等效指令。這些指令取儲存中之一 -17- 本紙張尺度適用中國國家標準(CNS) Α4規格(210 X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(I5 ) 字元或是雙字元之舊值、新值和位址;該舊值和儲存中之 字元(或是雙字元)比較以及假使為相等時,新值則儲存該 處,否則該指令失效。仍然具有該製作之另一替代方案。 所有該製作之共同態樣為將需要更新函數被呼叫之等待_ 元素105加以佇列之能力,因此加強更新和後置處理常式 之執行。 參考圖5,陳述lock—UpdateResource程序140。在步驟141 中,CS指令被呼叫以由空乏至互斥更新狀態欄位101。在 步驟142中,決定CS指令是否成功。假使不成功時,在步 驟143中,MVS_更新160被呼叫以處理競爭。否則,在步驟 144中,呼叫用以更新資源常式,以及儲存更新資源常式 回轉碼(rc)。在步驟145中,CS指令被用以由互斥至空乏更 新狀態欄位101。在步驟146中,決定在步驟142中的CS指令 是否成功,以及假使不成功時在步驟148中Μ V S _解鎖定 190被呼叫以處理競爭。否則,在步驟147中,決定是否後 置處理常式被規範。假使規範時,在步驟149中,決定是 否在步驟144中儲存之更新資源回轉碼等於 WORK_NOPOSTWORK,以及假使不等於時,在步驟150 中,呼叫後置處理常式。 先前定義之快速路徑巨集lock_Resource和unlock_Resource 類似於直插巨集lock_UpdateResource 140之製作。 參考圖6,MVS_更新巨集程序160處理該鎖定已經保持 在其他狀態之案例以及因此該呼叫工作不能得到該鎖定。 該巨集取和lock_UpdateResource巨集相同的參數。在步驟 -18- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 498281 A7 B7 五、發明説明(l6 ) 161中,儲存為等待—元素(WAIT—ELEMENT)而獲得,之後 和呼叫程式規範之資訊如函數數、工作類型、引數歸檔。 在步驟162中,呼叫鎖定_或是_等待(lock_or_wait)175增加 等待_元素105至等待佇列404或是使鎖定為互斥。動作 (action))攔位109設定為WORKUNIT。在步驟163中,決定是 否鎖定—或是—等待(lock_or_wait)常式175將等待_元素105佇 列。假使不佇列時,在步驟164中,呼叫更新資源常式, 以及儲存回轉碼(rc)。在步騾165中,CS指令用以將狀態欄 位101由互斥更新至空乏(0)。步驟166決定該CS指令是否成 功,以及假使不成功時,在步驟167中,MVS_解鎖定190被 呼叫以處理該競爭。否則,’在步騾168中,決定是否一後 置處理常式被規範,假使規範時,步驟169決定是否步驟 164之更新資源回轉碼(rc)設定為WORK_NOPOSTWORK。假 使不規範時,步驟171呼叫後置處理常式以及由更新步驟 164傳遞回轉碼(rc)。假使在步驟169中決定之回轉碼決定為 WORK 一 NOPOSTWORK時,在步驟170中該等待_元素回轉至 空閒儲存。 參考圖7,鎖定_或是_等待常式175將使鎖定為在所需狀 態或是以LIFO方式增加等待元素1〇5至等待佇列404。鎖定— 或是-等待175具有下列離形: lock_or—wait(@—〇f」〇ck,wait,type,action) 其中= @—of—lock為鎖定之位址。 @_wait為等待一元素結構之位址。 -19- 本紙張尺度適用中國國家榡準(CNS) A4規格(21〇 X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(I7 ) type為將獲得鎖定之類型(互斥、讀取或是鎖定)。 action為獲得鎖定(OBTAINLOCK)、 釋放鎖定 (RELEASELOCK)、WORKUNIT 等等。 類型設定為鎖定(LOCKED)指示一特殊狀態,高於互斥 (EXCLUSIVE),防止其他工作更新鎖定狀態攔位10卜 在步騾176中,狀態欄位101和等待佇列攔位102分別儲存 在舊狀態(〇ldstate)423和舊佇列(oldqueue)424。步驟177決定 是否鎖定位元121為舊狀態423。假使是,等待_元素1〇5增 加至等待佇列404之頭(head)以及儲存在新佇列 (newqueue)403。在步驟181中,新狀態421設定為等於舊狀 態423,以及在步驟183中,等待位元122設定為等於新狀態 421。在步驟184中,CDS命令被用以更新在舊狀態423之鎖 定為新狀態42 1的值。步驟185決定CDS命令是否成功’以 及假使成功時,在步驟186中該回轉指示被設定為心1示$ 待—元素105被佇列在等待佇列404中。假使不成功時’處理 回轉至步驟177。假使,在步驟177中,決定鎖定位元121不 被設定為舊狀態423,步驟1 7 8決定鎖定是否可以依擄:為$ 狀態423之鎖定位元1〇1獲得為所需狀態。假使不能時’ 理回轉至步驟179 ;否則在步驟1 80中新狀態421依據舊狀 態423和輸入類型(將為互斥)被設定,以及在步驟182中新 佇列403設定為等於舊佇列424。處理則繼續至步驟184 ’ ’ 使用CDS命令將鎖定由舊佇列424更新為新佇列403 ’ ^ 在步驟186中回轉一指示為等待—元素105之狀態已經更新°
裝 訂
線 -20-
本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 498281 A7 B7
五、發明説明(IS 通常,經由鎖定—或是—等待175之回路在步驟179增加等 待一元素105至等待佇列404或是在步驟182中更新鎖定狀態 欄位ιοί為呼叫程式所需狀態。在步騾186中,回轉該步騾 所做之指示。通常,假使步驟177決定L〇CKED位元在狀態 欄位中為開啟時’該等待—元素必須被佇列。假使不為開 啟時,則呼叫程式能夠使鎖定為所需模式以及在步騾i78 中狀®被檢視以觀察該鎖定是否可以所需模式獲得。例 如,假使鎖定已經鎖定為讀取時,則期待使鎖定為互斥 (EXCLUSIVE)之工作必須仔列該等待—元素1Q5。 參考圖8,MVS一解鎖定190在一工作試圖釋放一鎖定之 任何時間被呼叫以及發現具有等待—元素在等待佇列4〇4上 或是具有LOCKED位元開啟之該鎖定狀態。大量工作實際 在解鎖定常式中,因為必須處理解佇列等待—元素以及處 理它們。MVS_解鎖定離形如下: MVS-lock(@—of—l〇ck,type,function一array,task一type, post—work,prc,post一arg) 其中: @_of_lock為將釋放鎖定之位址。 type為將執行之解鎖定類型(互斥(EXCLUSIVE)、降級 (DOWNGRADE)或是讀取(READ))。 function_array為包含與鎖定相關之資源函數的函數陣列 位址。 task_type為呼叫之工作類型。 post_work為後置處理函數數。 -21 - 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂 498281 A7 ___ B7五、發明説明(l9 ) prc為資源更新常式之回轉碼。 post_arg為後置處理函數引數。 MVS_解鎖定190處理正常的同步鎖定和解鎖定以及解鎖 定當執行一資源更新常式時保持之鎖定。MVS解鎖定190反 覆地回路直到瞭解已經完成處理。 參考圖36,如本發明較佳具體實施例,等待—元素1〇5為 選擇性地在一些佇列和串列之間移動,包含採取佇列 400、解鎖定佇列401、回轉佇列402、新佇列403、等待佇 歹丨J (wait queue)404和後置佇歹丨J 405 0這些佇列由採取頭 (takenHead)410 、採取尾(takenTail)411 、解鎖定頭 (unlockHead)412 、解鎖定尾(unl〇ckTail)413 、回轉頭 (returnHead)414、回轉尾(returnTail)415、新尾(newTail)416 、等待佇列(waitq)l〇2、後置頭(p〇stHead)417和後置尾 (postTail)418所固定,如解釋。 採取佇列400包含MVS_解鎖定(MVS_unlock)190已經由等 待佇列404取出但尚未處理之等待—元素ι〇5全部。此佇列 400由採取頭410和採取尾411雙重鏈接,而因此由頭至尾 (FIFO順序)或是由尾至頭(LIF〇順序)遍歷。 新尾416為由鎖定等待佇列欄位102取得之佇列定錨複製 的變數。新尾416為LIFO新佇列403的頭。 解鎖定彳宁列401,由解鎖定頭412和解鎖定尾413固定,為 解鎖定或是降級請求之仵列。
裝 訂
k -22- 本紙張尺度適财S S家榡準(CNS) A#規格(别x 297公爱) 498281 A7 B7 五、發明説明() 後置佇列405,由後置頭417和後置尾418固定,為代表需 要被唤醒之等待工作或是說明當鎖定被保持而將執行之後 置處理常式的等待_元素佇列。 回轉彳宁列402,由回轉頭414和回轉尾415固定,為完全處 理和需要回轉至空閒儲存之等待_元素串列。 參考圖8,MVS_解鎖定190—致獲得等待_元素之儲存以 及依據類型、(互斥(EXCLUSIVE)、讀取(READ))和動作(釋 放鎖定(RELEASELOCK)或是降級(DOWNGRADE))加以啟始 化。 在步驟192中,鎖定_或是_等待175被呼叫以依據動作使 鎖定在LOCKED狀態或是增加等待_元素至等待佇列404。 步驟193決定是否鎖定_或是_等待175佇列等待_元素 105。假使不佇列時,在步驟194中,採取頭410和採取尾 411啟始化為0(空乏);在步驟195中,等待—元素105被增加 至回轉佇列402,以及回轉頭4 1 4和回轉尾4 1 5合適地調 整;以及在步驟196中,該鎖定被釋放或是降級至所需狀 態,以及該狀態更新以反應鎖定釋放。在步驟197中,鎖 定狀態和等待佇列定錨102分別儲存為舊狀態423和舊佇列 424。 步驟198決定是否舊佇列424為空乏,以及假使不是空乏 時,在步驟199中,新尾416設定為等於舊佇列424;在步驟 201中,新佇列403設定為空乏;以及在步驟204中,新狀態 421設定為等於舊狀態423 ;以及處理繼續至下方步驟210。 假使在步驟198決定舊佇列424不是空乏時,則在在步驟200 -23- 本纸張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂
線 五、發明説明(21 ) 一" ------ - 中新尾416设足為等於空乏;以及在步騾202中,新佇列 403設定為等於採取尾411。 步騍203決定疋否採取尾411為空乏,以及假使為空乏 時,在步驟206中,新狀態421設定為等於舊狀態423 ;以及 在步驟208中,鎖定和等待位元在新狀態421中被關閉。處 理繼績至下方步驟2〇9。假使步驟2〇3決定採取尾“I不為空 乏時,在步驟205中,新狀態421設定為等於舊狀態423;以 及在步驟207中,新狀態421中的鎖定位元被關閉;以及處 理繼續至步驟209。 在步驟209中,防止(prevent)位元在新狀態421中被關閉, 以及處理繼續至步驟210。在步驟21〇中,CDS命令被呼叫 以設定鎖定狀態和等待佇列1〇2舊值等於舊狀態423或是舊 佇列4 2 4以及新值等於新狀態42丨或是新佇列4〇3。 步驟2H決定CDS命令呼叫是否成功,以及假使不成功 時,處理回轉至步驟198。假使CDS命令呼叫成功時,步驟 212決定是否新尾416為空乏,以及假使不為空乏處理在回 路經過新佇列403所有入口,增加獲得鎖定和工作單元等 待一元素土採取佇列400尾端,增加任何降級或是釋放鎖定 請求至解鎖定仵列401,以及增加任何升級請求至採取仲 列400。當在此步驟213中時,在採取佇列4〇〇中的請求數被 。十數’以及在步驟214中假使請求數超越鎖定之最大彳宁列 103時,狀態101中的防止位元124被開啟以強制工作單元同 步執行。步驟215回路經過解鎖定佇列4〇1所有入口,處理 該請求(降級或是釋放),以及更新鎖定狀態1〇1以反應釋放 -24- 498281 A7 B7 五、發明説明(22 ) 或是降級;以及處理之入口(等待_元素)被移至回轉佇列 402。在步驟216中,解鎖定頭被設定為空乏,以及在步驟 217中,解鎖定尾被設定為空乏。步驟218決定在鎖定狀態 101中的互斥位元121和閱讀機計數125是否為空乏;以及I 使不為空乏時,處理繼續至下方步驟220 ;假使為空乏 時,步驟219回路經過採取佇列400以呼叫制定在其佇列之 等待_元素中的更新資源常式,儲存在等待_元素中的相關 回轉碼直到達到非工作單元(而是鎖定獲得請求)之等待_ 元素為止;任何其餘之等待_元素為增加至後置處理佇列 405 ;假使更新常式回轉WORK—DONTUNLOCK時,此回路 終止以及互斥位元121在鎖定狀態101設定以確定其餘之鎖 定保持為次一非同步鎖定請求。 步驟200回路經過採取佇列400,假使制定之鎖定類型和 在仵列之等待_元素中的鎖定類型不衝突時,唤醒任何等 待工作;假使具有衝突時,則回路結束。任何處理之等待 _元素增加至後置佇列405的頭以及處理回轉至步驟197。 假使步驟212決定新尾416不為空乏時,步驟221回路經過 後置佇列405,唤醒任何等待工作,由後置佇列405移除鎖 定等待程式之等待_元素以及增加至回轉佇列402。步驟222 決定是否MVS_解鎖定190以後置處理常式呼叫(後置工作不 等於N〇_FUNCTION);假使不是時,處理繼續至下方之步 驟225 ;假使是時,步驟223決定是否傳遞至MVS_解鎖定之 prc等於WORK—NOPOSTWORK ;假使等於時,處理進行至 -25- 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐) 498281 A7 B7 五、發明説明(23 ) 步驟225 ;以及假使不等於時,在步驟224中傳遞輸入至 MVS_解鎖定之後置處理常式被呼叫。 步騾225回路經過後置佇列405,假使具有制定之常式以 及更新資源函數不回轉WORK_NOPOSTWORK時,執行工作 單元之任何後置處理常式,以及將處理之工作單元(等待_ 元素)由後置佇列405移至回轉佇列402。步驟226回轉在回 轉佇列402中的所有等待_元素至空閒儲存。 例子 本發明較佳具體實施例之非同步更新設施可應用至許多 類型資源和應用。特別適合於那些需要更新但是執行工作 不需要等待更新結果之資源的案例。在該較佳具體實施例 中,工作被授與使用非同步更新函數或是獲得相同資源之 標準同步鎖定的能力。此情形大大地擴張可能性。 該術語工作(task)或是線程(thread)為用以代表電腦系統 中的執行單元。IBM MVS作業系統等待函數使一工作等 待,以及POST函數唤醒等待工作。 例子1.維持鎖定等待程式之串列 如上文所述,本發明之非同步設施與同步鎖定設施合併 在較佳具體實施例中。 同步鎖定函數之設計沒有顯示,但是在DFS/MVS環境 中,該鎖定設施使用低階MVS作業系統以使工作等待鎖 定。DFS為P0SIX應用。假使DFS取得一程式異常,POSIX 設施不被設計為處理等待這些低階MVS作業系統設施 (WAIT/P0ST)。因此DFS鎖定套裝程式不僅依據鎖定本身, -26- 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐)
裝 訂
498281 A7 B7 五、發明説明(24 ) 而佇列等待_元素,亦且在總體串列中當程式異常發生時 可以加以檢視,以及所有等待工作可以被噢醒以及報告異 常。 . 參考圖9,當一工作等待鎖定時,如上述利用鎖定—或是 _等待常式175將其等待—元素佇列在該鎖定,以及亦在等 待之前增加其等待—元素至總體串列或是佇列230中,以及 在等待之後將其由總體串列230移除。假使一標準同步鎖 定被使用時,總體事列230之競爭將使該工作等待,因此 工作可能等待其必須等待單一鎖定之任何時間的二倍。此 情形不是效能所期望。 因此本發明較佳具體實施彳列之非同步更新設施可用以增 加至總體串列230或是由總體串列230移除。所需要做的非 同步更新函數為add」o_global,為增加等待—元素232、 233、235至總體串列230 ; remove_from_global,由總體串列 230移除等待—元素;return_wait,回轉一等待-元素至空閒 儲存;以及quiesce_global,由總體串列230移除所有等待— 元素以及唤醒等待程式和設定PREVENT旗標,所以沒有更 多線程允許為等待。總體串列230為雙鏈接串列,由總體 頭(globalHead)231 和總體尾(gl〇balTail)234 固定。 參考圖10,單一定義之工作類型globalFuns 236建立非同 步更新函數之4x1陣列237。 參考圖11,每次當線程需要進入等待鎖定時執行do-wait 240。步驟241執行該程序: -27- 本紙張尺度適用中國國家榡準(CNS) A4規格(21〇 X 297公釐) 498281 A7 B7 五、發明説明(25 ) lock_UpdateResource(&globalLock,globalFuns,ALL—TASKS, add—to_global,0,((int)waitp),NO—FUNCTION,0,rc); 步驟242等待ecb;以及在接收時,步驟243執行該程序: lock—UpdateResource(&globalLock,globalFuns,ALL_TASKS, remove—from_global,0,((int)waitp),return_wait,0, rc) o 以此方式,等待鎖定100之工作實際上將只在WAIT呼叫 時懸置本身。增加工作至總體串列230以及由總體串列230 移除工作(等待_元素)以保證不使呼叫工作等待之方式加 以完成。在 Lock_UpdateResource 140 之第一呼叫 241 中, add_to_global常式245為更新常式而waitp為傳遞至 add_to_global常式245之等待_元素105位址。不需要後置處 理常式。在第二呼叫243中,remove_from_global 250為由總 體串列230移除入口(等待_元素232、233或是235其中之一) 之常式,return_wait為經回轉等待—元素至空閒儲存的後置 處理常式。 參考圖 12,add_to_global 常式 245(waitp=arg)包含步驟 246 決定防止旗標是否為空乏;假使為空乏,步驟248後置正 處理之等待—元素之ecb欄位108中的錯誤碼;以及,假使不 為空乏,步驟247增加等待_元素(在此案例中,工作232指) 總體串列230的頭。 參考圖 13,remove_from_global 常式 250(waitp=arg)包含步 驟251決定防止旗標124是否為空乏。假使為空乏,回轉碼 (rc)設定為0 ;假使不為空乏,此等待—元素(如233)由總體 串列230移除。在步驟254中,回轉碼(rc)回轉至呼叫程式。 -28- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(26 ) 參考圖 14,return_wait 常式 260(waitp=prc)包含步驟 261 決 定waitp是否為空乏。假使不為空乏,指向為waitp之等待— 元素回轉至空閒儲存。Return_wait 260 為 remove_from_global 250之後置處理常式,以及remove_from_global 250經由其回 轉碼溝通等待—元素位址,輸入至return_wait (由資源更新 設施自動執行)為prc。Return_wait 260回轉等待_元素至空 閒儲存。由於Return_wait 260為後置處理常式,當保持鎖定 時,該空閒儲存回轉不被執行。此情形顯示後置處理常式 之益處,以及由資源更新常式傳遞回轉值至後置處理常 式。 參考圖15,quiesce_global 265唤醒所有等待程式以及在步 驟267中告訴它們該程式由於防止旗標124在步驟266中設定 為1方式之錯誤而終止。在步騾268中指標231和234被清 、 除,所以總體串列230為空白。 例子2.管理I/O裝置保持佇列 此例子係關於由S.T. Marcotte於1999年10月29日申請之 美國專利申請案案號為第S/N 09/240,719號"System and Method for Application Influence of I/O Service Order Post I/O Request”中說明的系統,該案受讓人檔案號為EN998137。 Marcotte說明具有保持佇列之I/O佇列系統在佇列未決I/O裝 置之上’假使發出至該裝置之1/0數大於可由利用由此說 明之I/O驅動程式的應用調整之Max_Issued。 參考圖16,在此例子中,事件272、273、275之保持佇 列270由保持頭(holdHead)271和保持尾(holdTail)274提供為 -29- 本紙張尺度適用中國國家榡準(CNS) A4規格(21〇 X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(27 ) 與最大—發出(max_issued)計數287 、現行_發出 (current-issued)計數 288 和裝置 _ 鎖定(device_lock)289 固定。 max_issued儲存將傳送至該裝置之最大數目I/O操作,以及 current__issued 288儲存實際上已經發送至該裝置之I/O事件 數。假使currentjssued 288等於或是大於maxjssued 287時, 則I/O操作(事件)增加至保持佇列270而非直接傳送至該裝 置。當I/O完成時,假使current_issued 288將降低至 max_issued 287之下時,該I/O驅動程式執行程式碼以由取 出保持佇列270第一 I/O (事件272 )。 縱使current jssued 288超越max_issued 287時,呼叫應用可 以略過保持佇列270,因此給予應用幾乎佇列之總控制。 另夕卜,current_issued 288超越max_issued 287時,該呼叫應用 稍後可以將I/O (事件)由保持佇列270移至該裝置,允許該 呼叫應用在I/O已經發出之後重新排序。 保持仔列 270、Max_Issued 287 和 Current__Issued 288 可以使 用本發明較佳具體實施例之非同步資源更新設施加以管 理。在此系統中,當I/O在裝置上完成時,作業系統(MVS) 迅速處理稱為SRB之特殊工作,I/O驅動程式為以C語言碼 撰寫以及使用C語言工作,而處理I/O完成之系統SRB程式 碼以組合語言撰寫以及具有和C語言不同的執行環境。因 此在此解答中,二種工作類型(C語言工作和SRB工作)被 定義,因此解釋具有多定義工作類型100之優點。I/O驅動 程式使用這些非同步更新設施管理I/O保持佇列而不必懸 -30- 本紙張尺度適用中國國家標準(CNS) A4規格(21〇 X 297公釐) 498281 A7 B7 五、發明説明(28 ) 置以獲得同步鎖定。此方式達成較佳效能以及刪除懸置系 統I/O完成SRB之必要性。 事件資料結構為用以表示一未決I/O。此事件資料結構 說明有關I/O操作之相關資訊以及假使一工作需要等待I/O 在繼續其處理之前完成時具有一 ECB等待。因此工作可能 需要等待I/O,但是從不須等待更新I/O佇列。在此特定具 體實施例中,Max_issued被設定為2,提供最佳效能。所提 供之資源更新常式包含queue_io 280、issue_io 290、 schedule」。300和schedule_first」o 310。這些組成成份此後 分別參考圖18、19、20和21更完整地說明。 queuejo 280為呼叫以導入新I/O操作至I/O系統之常式。 假使呼叫程式尚未詢問仵列略過或是Current_Issued 288為 小於Max_Issued 287時,將增加I/O至保持件列。 issue_io 290為發出I/O至作業系統裝置之後置處理常式。 schedulejo 300為呼叫以將I/O由保持佇列270移至裝置 (無論 Current-Issued 288 或是 Max_Issued 287 的值),或是藉 由將I/O從保持佇列270移移除而不傳送至裝置以消除 1/0(事件)。 schedule—first」。310為當I/O完成(意義為具有至少一 I/O 傳送至裝置)時所呼叫之常式以及依據Current_Issued或是 Maxjssuecl的值由保持佇列270取得第一 I/O。 參考圖17,此例子為,函數—陣列(function_array)279為 4x2之函數陣列,4更新類型(280, 290, 300和310)乘2工作 類型(C工作或是SRB )。 -31 - 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(29 ) 通常,當一應用需要發出新I/O時,將發出下列非同步 資源更新呼叫: lock_UpdateResource(&adevice->lock, ioFuns, CTASK, queue—io, 0, ae,issue」o, ae,rc); 其中ae為代表I/O操作之事件結構的位址,程式碼在C工 作上執行,以及後置處理常式issuejo將發出I/O至裝置。 當一應用想要消除一 I/O,或是確定I/O為在至裝置途中 時,發出下列呼叫(此情形例如允許應用藉由將I/O由佇列 中間移動而干擾I/O順序): lock—UpdateResource(&devp->lock,ioFuns,CTASK, schedule_io, 0, ae,issue_io, ae, rc); 再次,ae為事件結構的位址,程式碼在C工作上執行, 以及事件被標示為消除是否已經被請求(在該案例中,I/O 從未被傳送至裝置)。 當一 I/O完成時,系統排程將檢查I/O保持佇列之SRB以 及可能排第一 I/O至裝置(如上述依據Maxjssued 287和 Current一Issued 288 )。發出下列呼叫: lock_UpdateResource(&devp->lock, ioFuns, SRB, schedule—first_io, 0, ae,issue_io, ae,rc); 參考圖18-21,此例子具體實施例中,更新程序280, 290, 300和3 10被執行。例如,可以藉由將此4常式組合語言和 C版本編碼至應用程式而完成。由於此為非同步,C程式 碼版本或是SRB程式碼可以被呼叫以執行這些常式。 •32-
裝 訂
線 本紙張尺度適用中國國家標i^(CNS) A4規格(210X297公釐) 498281 A7 _ B7 五、發明説明(3〇 ) 參考圖18,queue_io常式280(ae=arg)包含步驟281,其中 測試緊接(immediate)位元是否在此事件中設定或是 Current_Issued 288 是否小於 Max_Issued 287。假使其中之一 情形為真,在步驟282中事件中的忙碌(busy)位元被設定以 指示事件正傳送至I/O裝置;在步驟284中Current_Issued 288 增加;以及在步驟285中ae回轉至呼叫程式應用。假使測 試281不為真,則在步驟283中此事件增加至保持佇列270 尾;以及在步驟286中WORK_NOPOSTWORK回轉碼回轉至 呼叫程式應用。 因此queue—io 280只更新^[宁列270及/或Current—Issued計數 288。實際上不排程I/O (用許多路徑長度)而是傳遞事件結 構位址至後置處理常式issuejo 290。假使只增加一 I/O至保 持佇歹270 ’則藉由回轉WORK—NOPOSTWORK而縮短 issue_io 290 路徑。 參考圖19,issue一io常式290(ae=prc)為一後置處理常式。 當保持鎖定時不執行,所以在裝置佇列上鎖定競爭降低 (大大地)。步驟291決定是否消除位元在此事件(如273 )中 設定;假使為消除時,在步驟292中I/O標示為完成而具有 消除錯誤;以及假使不為消除時,該作業系統在步驟292 被呼叫以傳送由此事件273代表之I/O至I/O裝置。 參考圖20,schedule一io 300為使用其二引數(事件結構位 址ae和指示是否呼叫程式想要消除I/O而非發出I/O之消除 旗標prc )之資源更新常式。假使1/0已經傳送至裝置時,則 不需要做任何事,但是假使尚未傳送至裝置時,為由保持 -33 - ^紙張尺度適用中國國gg(CNS) A4規格(210X297公釐) 〜 498281 A7 B7 五、發明説明(3l ) 抒列移除以及假使消除不為所需時Current_Issued 288被增 加。再次,假使沒有發出I/O時issuejo 290被略過。步騾 3〇1決定是否一 busy位元在由ae (如275 )所指向之事件(如 275 )中設定;假使是,則不需要做任何事,以及步驟308 回轉WORK__NOPOSTWORK ;假使不是,步驟302設定該 busy位元;步騾303從保持佇列270移除事件275 ;步驟304 決定是否消除—旗標(cancel_flag)為真。假使cancel_flag為 真,步驟306設定在事件275中的busy位元以及步驟307回 轉ae至呼叫程式;假使cancel_flag不為真,current_issued 288在回轉ae之前增加。 參考圖21,schedule_first_io 310包含步驟311,該步驟決 定是否保持仵列270為空白或是是否current_issued 288大於 max_issued 287。假使其中之一狀況為真,步驟313減低 current」ssued 288 以及步驟 316 回轉 WORK_NOPOSTWORK 至 呼叫程式。假使二狀況為偽,步驟3 12由保持佇列270移除 第一事件;步驟3 14設定在事件結構中的busy位元;以及 步驟315回轉移除之事件結構位址至呼叫程式。 例子3.以非同步鎖定管理服務線程池
參考圖22至28,存在有限工作池,可以服務客戶線程之 工作請求,工作為某種原因或是其他原因(特定於應用)必 須在服務線程上執行,以及請求將以先來先服務方式加以 處理。在此例子中,客戶線程可以等待或是不等一請求結 束(意義為請求可以同步或是非同步)。可以具有任何數目 之客戶或是服務線程,由應用決定。例如,特定於在IBM -34- 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂
線 A7 -----------__ 五、發明説明(32 )" —----- DFS/MVS產品中,使用者工作呼叫⑽以發出檔案請求。 Q為k些^案,青求因為各種*㈤原目*能在呼叫工作之下 執行,所以服務工作必須選擇使用者檔案請求並且加以執 行。因此,存在有限服務線程池,以及某數目之使用者工 作(近似於呼叫DFS 一次之使用者處理數目)需要在服務工 作上調度。 在此例子中,足義一鎖定以及提供客戶請求323-325之閒 置服務線程328串列326和請求佇列32〇。請求佇列32〇由 Qhead 321和Qtail 322加以固定,以及服務線程328由閒置 (ldle)327加以固定。各服務結構328代表一閒置服務工作, 以及亦可以指向附接於該服療工作之現行請求。 貝料結構323包含有關客戶請求之資訊以及資料結構328 代表一服務線程。服務工作於檢查請求佇列32〇以及發現 為空白時增加其服務結構328至閒置串列326。當一客戶請 求進入時,首先檢查閒置攀列326以察看是否具有可使用 之服務線程328,假使沒有時,則將請求佇列於請求佇列 320中。更新佇列320不需要任何工作懸置或是交換。在客 戶和服務線程之間具有一工作交換,但那是需要的。更新 至佇列320不會伴隨任何工作懸置,不像先前技藝之放置 高流量懸置鎖定在佇列周圍的方法。 在此例子中,具有二類型之工作··客戶工作和服務工 作。在此案例中,提供多工為使用於多於先前例子中不同 語言或是執行環境,但是為實際非同步更新常式所需以確 定適當的功能。實際上程式碼為相同所以雖然函數陣列為 •35- 本纸張尺度適用中國國家標準(CNS) A4規格(210X297公爱) 498281 A7 B7 五、發明説明(33 ) 3x2,二類型工作(客戶和服務)之函數在此例子中為相 等,為此後與附圖24-28結合說明之處理如何製作的方式。 該資源更新常式如下: queue_request 340假使有一請求可使用時,由客戶工作呼 叫以調度一請求至服務線程328上,或是增加請求至請求 佇列320。 post_service_thread 348假使一閒置服務線程由 queue_request 340發現時,唤醒睡眠服務線程328。此為不 在鎖定之下執行之後置處理常式,以將鎖定競爭最小化。 get_next_request 350移除在FIFO請求佇列320中的最老(第 一)請求323 (假設請求為增加至佇列尾端)。此請求323將 在一服務線程結束處理一請求之後以及在回到睡眠狀態之 前加以執行(假使服務線程將發現具有更多在請求佇列320 上的工作將執行)。請求323檢查以察看是否在呼叫服務線 程上同步執行以避免不必要的等待呼叫。 在此例子中具有3更新常式和2工作類型,形成一 3x2函 數陣列329以處理更新。 參考圖24,客戶線程之執行流程包含為此請求獲得儲存 之步驟330 ;以及執行該程序之步驟331 ; lock_UpdateResource(&lock, qFuns, CLIENT, queue_request, 0, request pQSt_service_thread,0, rc); 假使此客戶線程想要等待則在步驟332中等待請求->ecb以 及接收到時,在步驟330中獲得此請求之空閒儲存。 -36- 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(34 ) 參考圖25,服務線程之流程由步驟335之程式碼加以解 釋。服務線程328永久執行直到程式結束,以及依據包含 此線程服務方塊位址之呼叫加以執行。步驟335包括: DO forever : service->request = 0 service->ecb = 0 rc = lock 一 UpdateResource(&lock, qFuns, SERVICE, get_next_request,0, service,post_service_thread,0, rc) if rc != WORK_SYNC OR service->request is 0 WAIT on service->ecb <Process service->request> 在步驟335之程式碼中,顯示lock_UpdateResource回轉碼 (rc)之重要性。假使get_next_request為在呼叫線程(服務工 作)上執行時,則檢查以察看是否具有請求;假使沒有時 則進入至睡眠(等待)狀態;否則,執行該請求。而此情形 不為所需,所以減少不必要等待。 參考圖 26,該更新常式 queue__request 340(request=arg)包含 步驟341,該步驟決定是否閒置串列328為空白;假使為空 白時,在步驟343中此請求325增加至請求佇列320尾端; 以及在步驟346中WORK—NOPOSTWORK回轉至呼叫程式。 假使閒置串列328不為空白時,在步驟342中一服務結構 328由閒置串列326移除;在步驟344中此請求位址儲存在 服務結構中;以及在步驟345中移除之服務結構位址回轉 至呼叫程式。總結說來,假使沒有閒置服務線程328時此 -37- 本纸張尺度適用中國國家標準(CNS) A4規格(21〇x 297公釐)
裝 訂
線 498281 A7 ______ B7 五、發明説明(35 ) 常式340增加請求至請求佇列320以及回轉告訴非同步更新 設施不執行一後置處理常式之WORK_NOPOSTWORK。假使 發現一閒置服務線程328時,該線程將被移除且後置處理 常式post_service_thread 348將由非同步更新設施呼叫。 參考圖27,該更新常式post_ service_thread (service=prc)348 在步驟349後置在該服務結構中的ecb以唤醒該服務線程 328 〇 參考圖 28,該更新常式 get_next_request(service=arg)350 首 先在步驟351決定是否請求佇列320為空白。假使佇列320 為空白,此服務結構增加至閒置串列326且 WORK—NOPOSTWORK回轉至呼叫程式。假使佇列320不為 空白,在步驟352中次一請求由佇列320移除;以及在步驟 354中移除之請求位址儲存在該服務結構中。步驟355決定 是否 sync.flag=WORK_SYNC AND task—type=SERVICE ;假使 成立時’在步驟357中WORK_NOPOSTWORK回轉至呼叫程 式;否則在步驟3 5 6中服務結構位址被回轉。由非同步更 新設施自動傳遞至更新常式之二參數Sync_flag和task_type 被使用。get_next_request 350碼檢查以察看是否在一服務線 程(非客戶工作)上執行,以及假使為是且正同步執行時, 略過呼叫後置處理常式post_service_thread 348,因為恰好由 仵列320抓到第一請求。該請求位址儲存在服務結構中。 該服務線程檢查lock_UpdateResource回轉碼以及在此案例中 將看到該工作為同步完成且將避免不必要的等待呼叫(為 有些昂貴)。 -38- 本紙張尺度適财® s家標準(CNS) M規格(21G><297公爱)
裝 訂
498281 A7 B7 五、發明説明< 36 ) 總 結說來 ,非同 步更新設施刪除更新閒置 串列或是請求 佇列 之已經 發生的 等待,任何時刻具有串列 競爭時具有 正 式懸 置(先前技藝)被用以保護那些串列。由 於那些侍 列 為 每一 請求皆 更新, 競爭可能非常頻繁地發生 〇 例 子4.回轉物件至共用池 此 最終例 子顯示 組合非同步資源更新設施 與標準同 步 鎖 定之 使用以 降低鎖 定競爭和鎖定之工作等待 〇 通 常,具 有一類 問題是其中某類型資源池和需要該 池物 件的 工作不 能繼續 處理直到得到該物件。在 此案例中 , 需 要同 步處理 之正式 懸置類型鎖定必須被使用 。然而, 當 此 工作 以物件 完成時,同步處理不需要將該: 物件回轉 至 該 池, 而本發 明非同 步資源更新設施可以被使 用。在此 情 況 中, 非同步 資源更新和標準鎖定機構組合, 執行同步 資 源 更新 以減低 鎖定競 爭和工作等待。 在 DFS/MVS 環境 中,客戶為允許由DFS檔 案伺服器 快取 檔案 狀態和 資料。 它們藉由獲得代表快取資料之權利 的 字 符元 而執行 此工作 。在DFS/MVS檔案伺服器 中,存在 程 式 碼以 快取字 符元, 各檔案可以具有超過一字 符元,以 及 各 客戶 可以具有超j 避一具有字符元之檔案 。特定地 是 DFS/MVS 具 有SMB 客戶之字符元高速緩衝記 憶體,具 有 代 表一 檔案之 結構和 代表一字符元之結構。該 檔案結構保持 在局 限大小 之池中 ,以及當所有檔案結構為 現行指定 至 檔 案時 ,LRU 再使用 設計藉由使用最新使用之 設計而被 用 以 再指 定一檔 案結構 至不同檔案。 -39- 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐) 498281 A7 B7 五、發明説明(37 ) 參考圖29-31,該SMB字符元高速緩衝記憶體360具有一 散列表361,該表被用以依據檔案識別符快速發現一檔案 結構(stkc_file)362。亦具有一芝閒串列370之樓案結構 372,該檔案結構不被指定至任何檔案以及LRU結構佇列 363之檔案結構366-368為現行指定,但是假如必要時可以 再指定至任何檔案識別符《佇列363由LRUqhead 364和 LRUqtail 365加以固定。 該stkc_file結構366、372代表檔案,以及在DFS中的檔案 由其識別符(一系列數字)加以識別。一 SMB字符元高速緩 衝記憶體維持一映射和高速緩衝記憶體檔案,各stkc_file 結構具有保持於該檔案之一串列字符元及代表現代參考該 檔案之工作數的參考計數(refcount)襴位。 散列表361為用於依據DFS檔案識別符之stkc_file快速尋 找。散列表各行具有一鎖定以保護散列表行之存取,以及 具有總體fileLock用於更新r e f c 〇 u n t攔位、LRU佇列363和 空閒串列佇列370。 用於尋找(獲得)一既定檔案識別符之stkc—file結構366、 372的程式碼不在此處說明,因為使用同步鎖定技術。以 stkc_file結構完成用於指示一工作之非同步程式碼加以說 明。 當各工作參考至stkc_file時,stkc_file refcount增加,以及 當各工作完成參考至檔案時減少。stkc_file_put常式依據下 列規則減少refcount以及採取動作: IF refcount 現在為 0 : -40- 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 498281 A7 B7 五、發明説明(38 )
IF具有符記為該檔案保持THEN 增加該檔案至LRU佇列 ELSE 將該檔案由散列表移除以及增加至空閒_列。 假使該高速緩衝記憶體沒有檔案之符記時,則沒有理由 快取檔案識別符之stkc_file。假使具有符記時,則簡單地 保持檔案在LRU佇列中,因為該檔案可以再指定至另一檔 案識別符。假使refcount不為0,具有其他工作使用 stkc_file,所以沒有採取動作。因為此處理可以更新散列 表361,包含stkc_file之該串列的散列行鎖定必須被鎖定, 以及因為空閒串列370或是LRU佇列363可能被更新,所以 fileLock必須被保持。因此需要二鎖定,此例子顯示本發明 非同步更新設施之使用以獲得更新資源和另外刪除工作懸 置可能性所需要之二鎖定。 只有一工作類型(全部為C工作),但是有二函數陣列。 hashFuns只包含一更新常式。 hash_put 3 80為指示工作以stkc_file完成之主常式。此為 一外部常式,當執行時只具有散列表鎖定。 file_put 3 85為指示工作以stkc_file完成之内部常式。當執 行時散列表和主fileLock鎖定被保持。 file_postwork 395為用以釋放散列行鎖定之常式。 特殊回轉碼W0RK—D0NTUNL0CK由hash_put使用以保證 假使file_put常式385正在另一線程上非同步執行時不被釋 放。File_postwork 395為用以確定散列行鎖定被釋放以避免 -41 - 本紙張尺度適用中國國家標準(CNS) A4規格(210X 297公釐)
裝 訂
線 498281 A7 B7 五、發明説明(39 ) 死鎖(deadlock)。因此巢套之非同步鎖定正執行而沒有工作 懸置。 參考圖32,stkc_file_put接收輸入filep,代表放回之 stkc_file位址。在步驟376中,stkc_file中的檐案i d被散列以 得到散列行;且槽號被儲存。步騾377執行下列函數: lock_UpdateResource(&hash_table[slot].lock,hashFuns, ALL—TASKS,hash—put,0, filep,NO—FUNCTION, 0, rc); 此函數在首先決定何散列表行包含檔案之後執行。 參考圖33,散列—put(filep=arg)380在步驟381中執行: lock—UpdateResource(&fileLock, fileFuns, ALLTASKS, file_put,0, filep,file_postwork,0, rc); 以及在步驟382中回轉WORK_NOPOSTWORK。因此, hash_put執行file_put之常式(隱含當fileLock保持時, file—put執行)以及回轉一 WORK—NOPOSTWORK指示至非同 步更新設施而不釋放鎖定,因為file_postwork將執行此工 作。假使file_put為在一分離工作上執行時,此為必要;假 使為在一分離工作上執行時,則當hash_put回轉時必須保 證鎖定仍然保持於將執行file_put之另一工作。 參考圖34,file_put(filep=arg)常式385在步驟386中教列樓 案識別符以及儲存槽號;以及在步驟387中減少檔案參考 計數。步驟388決定是否檔案參考計數現在為0,且假使不 為0,在步驟393中回轉散列槽號至呼叫程式,以及跳出。 假使檔案參考計數不為〇,在步驟389中決定是否符記為此 檔案保持,以及假使為保持時,在步驟391中增加此檔案 -42- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐) 裝 訂
線 498281 A7 B7 五、發明説明(40 ) 至LRU佇列363尾端。假使符記不為此檔案保持,步驟390 由散列行移除檔案以及步騾392增加檔案至空閒串列370。 步驟393回轉散列槽號,以及跳出。 file__put常式385執行所有必要工作。該常式亦回轉散列 槽號,以致file_postwork 395知道何散列行鎖定將釋放。當 file_put 385正執行時,非同步更新設施保證散列行和 fileLock為保持互斥。當file_put 385回轉時,fileLock被釋 放。 參考圖 35,當不保持 fileLock 時 filejpostwork(slot=prc)395 被執行,以及在步騾396中釋放散列表行鎖定。 總結說來,此例子顯示WORK—DONTUNLOCK回轉碼之需 要以及顯示複雜巢套之非同步資源更新常式如何可以被執 行。 例子5.追蹤表 一追蹤表可以經由非同步鎖定加以更新。追蹤表為當工 作執行其工作時反覆地更新。假使具有高流量鎖定時,在 追蹤表上之競爭將變大且效能將降低。藉由使用本發明非 同步資源更新設施,程式師可以藉由制定Max_Queued值在 追蹤表之lock_Init呼叫上而設計一追蹤設施以放置一界限 在追蹤表鎖定所允許之佇列上以確定線程不會過載(如果 實際上發生時將很少)。 在先前技藝之上的優點 本發明之一優點為提供一種用於管理鎖定之改良式系統 和方法。 -43- 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐)
裝 訂
線 X-- 明説 明發
A B 本發明之另一優點立P # 委占為棱供一種用於管理鎖定之具有改良 欢此的系統和方法。 -:月《另一優點為提供避免正式懸置或是CPU自旋的 於管理鎖定之系統和方法。 之# 、另仪點為提供避免昂貴的鎖定競爭耗用成本 :用於管理鎖定的系統和方法。 A、月又另一優點為提供一種用於同步和非同步管理銷 疋<改炎式系統和方法。 , 另一具體實施例 而 疇 固 磁 如 在 二、知斤人貝地疋’雖然本發明具體實施例已經為解釋目的 祝明’但是各種不⑽正可以在不脫離本發明精神和範 从力以H特別是’提供—程式餘存或記憶體裝置如 ^或是㈣傳輸媒體,磁性或是光學接線,磁帶或是 碟’或是類似物用於儲存由如本發明方法及/或其元件 本發明系統的結構控制電腦操作之機器可讀取的信號為 本發明範疇内。 另外,該方法之步驟可以在_般電腦之任何電腦如IBM 系統390、AS/400、pc或是類似電腦中執行,β及依據至 V 或是至^ 一部为,牙王式模組或物件由任何程式語言 另 類 如C++、java、pi/丨、Fortran或是類似語言產生。以及 外,各該步驟或是-檔案或是物件或是製作各該步驟的漱 似物可以由特殊目的硬體或是為該目的設計之電路模組加 以執行。 -44, 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 498281 A7 B7 五、發明説明(42 ) 因此,本發明保護範疇只由下列申請專利範圍及其等效 條款加以限制。 -45- 本纸張尺度適用中國國家標準(CNS) A4規格(210X297公釐) 裝 訂
線
Claims (1)
- D8 六、申請專利範圍 1· 一種更新一資源士 '、, …万法,其允許包含一非同步鎖定設 施之應用經由銷泠 、 ’ 更新一資源而不用工作懸置或是 工作交換,包括下列步驟: 仔列Μ求以更新由一第一工作依據該資源之鎖定 而請求之資源;以及 釋放該鎖定之前操作該 尚包括下列步驟: 該資源鎖定之一第二工作, 第二工作以執行該請求。 2. 如申請專利範圍第1項之方法: :供至少二更新常式之多數常式供更新該資源,包 含第一更新常式和第二更新常式; 孩罘二工作在釋放該鎖定之前執行該第一更新常 式;以及 在琢第二工作已經釋放該鎖定之後,選擇性地執行 該第二更新常式; 因此降低鎖定競爭。 3·如申請專利範圍第2項之方法,尚包括下列步驟·· 由該第二工作傳遞一回轉碼至該非同步鎖定設施。 4·如申請專利範圍第3項之方法,該回轉碼為用於略過令 第二更新常式執行之work—nopostwork回轉碼。 5·如申請專利範圍第3項之方法,該回轉碼為用於非门步 鎖定複雜套巢之work_dontunlock回轉碼。 6·如申請專利範圍第2項之方法,尚包括下列步驟: 制定用於執行該更新常式之多數工作類型; -46-本紙張尺度適用中國國家標準(CNS) A4規格(21〇χ297公釐) 498281 A8 B8 C8 D8 六、申請專利範園 因此選擇性地使多程式語言環境和多執行環境之環 免把夠作用以及選擇性地使工作分割為邏輯類別。 〖·種更新一資源之方法’其允許包含一非同步鎖定設 施之XL用、’’二由選擇性同步或是非同步鎖定以更新資源 而不用工作懸置或是工作交換,包括下列步驟: 選擇丨生仔列一請求以更新一由一第一工作依據該資 源之鎖定而請求之資源;以及 保持該資源鎖定之一第二工作,釋放該鎖定之前選 擇性操作該第二工作以執行該請求。 8.如申叫專利範圍第2項之方法,尚包括下列步騾: 由孩應用傳遞至少一使用者參數至該更新常式。 9·如申請專利範圍第丨項之方法,尚包括下列步驟: 由4非同步鎖定設施傳遞一 sync—flag參數至執行該 請求之工作,該參數規範該工作是否正依據呼叫線程 或是非同步依據另一線程而執行。 10·如申請專利範圍第6項之方法,尚包括下列步騾: 選擇性傳遞一 task—type參數至執行該更新常式之工 作,該task—type參數規範正依據該參數而執行之工作的 工作類型。 11·如申請專利範圍第2項之方法,尚包括下列步驟: 選擇性執行l〇ck_Res〇urce巨集或是unl〇ck—Res〇urce巨 集,以及-47-498281 A8 B8 C8以以模式而;^競爭回應該巨集而獲得或是釋放 D轉work_inhne回轉碼指導呼叫程式排隊執 行後置處理碼。 12·如申料利範圍第1項之方法,尚包括下列步驟: 回應最大供應之應用’限制佇列在該鎖定上之非同 步更新請求數。 13·如申請專利範圍第1項之方法,尚包括下列步驟: …由多數工作件列多數更新請求在該鎖定上而用於由 该第一工作依佇列順序加以依順序執行。 14· 一種可由一機器讀取之程式儲存裝置,明白地使由機 器可執行之指令程式具體化,以執行允許包含非同步 鎖定設施之應用經由鎖定以更新資源而不用工作懸置 或是工作交換之方法步驟,該方法步驟包括下列步 驟: 佇列一凊求以更新由第一工作依據該資源之鎖定而 請求之資源;以及 在該資源上保持該鎖定之第二工作,釋放該鎖定之 前操作該第二工作以執行該請求。 15· —種製造物品,包括: 黾月包可使用媒體’具有由此具體化之電腦可讀取程 式碼裝置以用於執行允許包含非同步鎖定設施之應用 經由鎖定以更新資源而不用工作懸置或是工作交換, 在製造物品中之該電腦可讀取程式裝置包括: -48 - 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐)申請專利範電腦可讀取程式碼裝置’用於使t腦將㈣一請求 產生效應以更新由第—工作依據該資源之鎖定所請求 資源;以及 電腦可讀取程式碼裝置,用於使電腦在該資源上保 持及鎖疋的第一工作釋放該鎖定之前產生操作該第二 工作以執行該請求。 16· 一種用於使共用資源能夠非同步更新之介面系統,包 括: 用於足義資源更新請求之多數資料結構;以及 等待仲列,用於佇列說明等待由現行工作而非呼 4工作執仃之更新請求的資料結構,同時保持該共用 資源之互斥鎖定。 Π.如申請專利範圍第16項之介面系統,尚包括: 一採取佇列,用於佇列由該等待佇列移除但尚未處 理之資料結構; 一解鎖定佇列,用於佇列解鎖定或是將鎖定降級之 請求的資料結構; 一回轉佇列,用於佇列已經處理以及需要回轉至空 閒儲存之請求的資料結構;以及 一後置佇列’用於佇列需要喚醒或是說明後置處理 苇式將執行而該鎖定不被保持之請求的資料結構。 18.如申請專利範圍第16項之介面系統,該鎖定包括·· 一狀態參數襴位,用於儲存定義該鎖定狀態的狀態 位元; •49- 本紙張尺度適用中國國家標準(CNS) A4規格(210X297公釐)用於固定另一等待佇列之等待佇列欄位;以及 .一最大佇列攔位.,用於制定在非同步更新呼叫將形 成為等待之前所允許之最大數目佇列更新請求。 19·如申請專利範®第16項之介面系統,該鎖定之狀態參 數包括: 第一標記(Ε),規範該鎖定是否保持為互斥; 第二標記(W),規範該等待佇列是否為空白; 第二標記(L),規範該鎖定是否保持為最高優先順序 狀態; 第四標記(Ρ),規範所允許之該最大數目佇列更新請 求是否已經超越;以及 第五標記(R),規範該鎖定之該更新請求數目。 20.如申凊專利範圍第16項之介面系統,該資料結構包 括: 久一攔位’用於儲存指向仔列中之次一資料結構的 前向指標; 削一攔位’用於儲存指向仵列中之前一資料結構的 後向指標; 等待欄位,用於規範該資料結構是否代表形成為等 待之工作; 動作欄位’用於規範請求之動作,該動作為獲得鎖 定、釋放鎖定、降級鎖定、升級鎖定以及工作單元的 其中之一動作; 類型欄位,用於規範獲得或是釋放鎖定的類型; -50- 本紙張尺度適用中國國家標準(CNS) Α4規格(210Χ 297公釐)4函數欄位,用於在函數陣列中存取將執行之函 數而保持一鎖定以更新資源; 工作處理欄位,用於儲存該資源更新常式之第一函 數引數; 工作引數欄位,用於儲存該資源更新常式之第二函 數引數; 工作回轉碼搁位,用於儲存該資源更新常式之回轉 值; 函數指標攔位,用於存取函數陣列; 後置工作攔位,用於在該函數陣列中識別後置處理 函數;以及 後置引數欄位,用於儲存後置處理引數。 -51 - 本紙張尺度適用中國國家標準(CNS) A4規格(210 X 297公釐)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/275,792 US6449614B1 (en) | 1999-03-25 | 1999-03-25 | Interface system and method for asynchronously updating a share resource with locking facility |
Publications (1)
Publication Number | Publication Date |
---|---|
TW498281B true TW498281B (en) | 2002-08-11 |
Family
ID=23053818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW088122789A TW498281B (en) | 1999-03-25 | 1999-12-23 | Interface system and method for asynchronously updating a shared resource |
Country Status (7)
Country | Link |
---|---|
US (1) | US6449614B1 (zh) |
EP (1) | EP1039384A3 (zh) |
JP (1) | JP4042945B2 (zh) |
CN (1) | CN1175341C (zh) |
CA (1) | CA2292040C (zh) |
SG (1) | SG97863A1 (zh) |
TW (1) | TW498281B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10007551B2 (en) | 2007-10-25 | 2018-06-26 | Microsoft Technology Licensing, Llc | Techniques for switching threads within routines |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6978312B2 (en) * | 1998-12-18 | 2005-12-20 | Microsoft Corporation | Adaptive flow control protocol |
US6782440B2 (en) * | 2000-07-26 | 2004-08-24 | T.N.S. Holdings, Inc. | Resource locking and thread synchronization in a multiprocessor environment |
US8631092B2 (en) * | 2000-08-24 | 2014-01-14 | Red Hat, Inc. | Embedded protocol objects |
US6904456B2 (en) * | 2001-02-20 | 2005-06-07 | Microsoft Corporation | Lock-free cache management |
US7424496B1 (en) * | 2002-03-20 | 2008-09-09 | Applied Micro Circuits Corporation | Asymmetric coherency protection |
US7093230B2 (en) * | 2002-07-24 | 2006-08-15 | Sun Microsystems, Inc. | Lock management thread pools for distributed data systems |
US6981097B2 (en) * | 2003-03-14 | 2005-12-27 | Wisconsin Alumni Research Foundation | Token based cache-coherence protocol |
US7010655B1 (en) | 2003-03-24 | 2006-03-07 | Veritas Operating Corporation | Locking and memory allocation in file system cache |
US7865485B2 (en) * | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7693847B1 (en) * | 2004-07-13 | 2010-04-06 | Teradata Us, Inc. | Administering workload groups |
US8977651B2 (en) * | 2004-04-14 | 2015-03-10 | Hewlett-Packard Development Company, L.P. | Method and apparatus for multi-process access to a linked-list |
US7610585B2 (en) * | 2004-06-03 | 2009-10-27 | Intel Corporation | Thread synchronization methods and apparatus for managed run-time environments |
US7689992B2 (en) * | 2004-06-25 | 2010-03-30 | International Business Machines Corporation | Sharing lock mechanism between protocol layers |
US7567963B2 (en) * | 2004-06-28 | 2009-07-28 | Intel Corporation | Thread synchronization with lock inflation methods and apparatus for managed run-time environments |
US7904612B2 (en) * | 2004-07-08 | 2011-03-08 | International Business Machines Corporation | Ticket mechanism for sharing computer resources |
JP4007358B2 (ja) * | 2004-10-07 | 2007-11-14 | コニカミノルタビジネステクノロジーズ株式会社 | ジョブ実行装置およびその制御方法、画像形成装置、ならびにコンピュータプログラム |
US20060098659A1 (en) * | 2004-11-05 | 2006-05-11 | Silicon Graphics Inc. | Method of data packet transmission in an IP link striping protocol |
US7774462B2 (en) * | 2004-11-12 | 2010-08-10 | International Business Machines Corporation | Apparatus, system, and method for establishing an agency relationship to perform delegated computing tasks |
US7818746B2 (en) * | 2005-03-30 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method for benchmarking using a multi-threaded load generator |
US7975271B2 (en) * | 2005-03-30 | 2011-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock |
US7797704B2 (en) * | 2005-03-30 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | System and method for performing work by one of plural threads using a lockable resource |
US8370317B2 (en) * | 2005-09-22 | 2013-02-05 | Microsoft Corporation | Synchronizing shared resources in a collection |
US20070078852A1 (en) * | 2005-10-04 | 2007-04-05 | Microsoft Corporation | Synchronizing shared resources in a collection |
US20070094669A1 (en) * | 2005-10-25 | 2007-04-26 | Microsoft Corporation | Shared resource acquisition |
US7987452B2 (en) * | 2005-12-15 | 2011-07-26 | International Business Machines Corporation | Profile-driven lock handling |
US8832705B1 (en) * | 2005-12-28 | 2014-09-09 | Emc Corporation | Ordered mutual exclusion |
US20080082761A1 (en) * | 2006-09-29 | 2008-04-03 | Eric Nels Herness | Generic locking service for business integration |
US7921075B2 (en) * | 2006-09-29 | 2011-04-05 | International Business Machines Corporation | Generic sequencing service for business integration |
US9274857B2 (en) | 2006-10-13 | 2016-03-01 | International Business Machines Corporation | Method and system for detecting work completion in loosely coupled components |
US9514201B2 (en) * | 2006-10-13 | 2016-12-06 | International Business Machines Corporation | Method and system for non-intrusive event sequencing |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
US8458724B2 (en) * | 2007-06-15 | 2013-06-04 | Microsoft Corporation | Automatic mutual exclusion |
ATE511147T1 (de) * | 2008-04-25 | 2011-06-15 | Siemens Ag | Verfahren und system zur änderung eines entriegelten datensatzes einer datenbank anhand von interaktionsprozessen |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US20100333071A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
CN102053861B (zh) * | 2009-10-30 | 2014-03-12 | 国际商业机器公司 | 并行程序中死锁检测的方法和*** |
US9176783B2 (en) | 2010-05-24 | 2015-11-03 | International Business Machines Corporation | Idle transitions sampling with execution context |
US8843684B2 (en) | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8510739B2 (en) | 2010-09-16 | 2013-08-13 | International Business Machines Corporation | Shared request grouping in a computing system |
US8695079B1 (en) * | 2010-09-29 | 2014-04-08 | Amazon Technologies, Inc. | Allocating shared resources |
CN102043668B (zh) * | 2010-12-10 | 2013-05-22 | 成电汽车电子产业园(昆山)有限公司 | 一种嵌入式实时操作***中任务多次激活的方法 |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
JP5731332B2 (ja) * | 2011-09-07 | 2015-06-10 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | トランザクションの処理時間を算出する装置及び方法 |
US9378045B2 (en) * | 2013-02-28 | 2016-06-28 | Oracle International Corporation | System and method for supporting cooperative concurrency in a middleware machine environment |
US8954409B1 (en) * | 2011-09-22 | 2015-02-10 | Juniper Networks, Inc. | Acquisition of multiple synchronization objects within a computing device |
US10095562B2 (en) | 2013-02-28 | 2018-10-09 | Oracle International Corporation | System and method for transforming a queue from non-blocking to blocking |
US9110715B2 (en) | 2013-02-28 | 2015-08-18 | Oracle International Corporation | System and method for using a sequencer in a concurrent priority queue |
US8689237B2 (en) | 2011-09-22 | 2014-04-01 | Oracle International Corporation | Multi-lane concurrent bag for facilitating inter-thread communication |
US9892031B2 (en) * | 2011-11-07 | 2018-02-13 | Sap Se | Lock-free scalable free list |
CN102629221B (zh) * | 2012-02-28 | 2014-11-19 | 华为技术有限公司 | 用于分布式共享存储的任务同步方法、装置及*** |
US9542277B2 (en) * | 2014-09-30 | 2017-01-10 | International Business Machines Corporation | High availability protection for asynchronous disaster recovery |
CN104657222B (zh) * | 2015-03-13 | 2017-11-21 | 浪潮集团有限公司 | 一种面向smp调度***的优化方法 |
US10649766B2 (en) * | 2015-06-05 | 2020-05-12 | Unisys Corporation | Dynamic replacement of software components |
CN108023908B (zh) * | 2016-10-31 | 2020-04-24 | 腾讯科技(深圳)有限公司 | 数据更新方法、装置及*** |
US10733003B2 (en) * | 2016-11-03 | 2020-08-04 | Salesforce.Com, Inc. | Cost efficient and on-demand pool of running instances in a virtual machine environment |
CN107423454B (zh) * | 2017-09-22 | 2021-01-12 | 苏州浪潮智能科技有限公司 | 一种分布式文件***中文件锁的处理方法、装置及设备 |
CN111930502A (zh) * | 2020-07-31 | 2020-11-13 | 苏州交驰人工智能研究院有限公司 | 一种服务器管理方法、装置、设备及存储介质 |
EP3964959A1 (en) * | 2020-09-03 | 2022-03-09 | ARM Limited | Data processing |
CN113778617B (zh) * | 2021-08-10 | 2024-06-18 | 万翼科技有限公司 | 容器水平伸缩方法、装置、电子设备及存储介质 |
CN114185612B (zh) * | 2021-11-30 | 2023-08-08 | 北京百度网讯科技有限公司 | 一种数据更新的方法、装置、设备及存储介质 |
CN114553891B (zh) * | 2022-01-27 | 2024-03-15 | 深圳金融电子结算中心有限公司 | 同步请求转异步处理的方法、***、终端设备及存储介质 |
CN117707720A (zh) * | 2023-08-07 | 2024-03-15 | 荣耀终端有限公司 | 一种进程调度方法、装置及电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3689151D1 (de) | 1986-12-30 | 1993-11-11 | Ibm | Nicht-sperrender Warteschlangenmechanismus. |
JPH0261728A (ja) * | 1988-08-26 | 1990-03-01 | Nec Corp | プログラム間の共有データ処理方式 |
JP2575543B2 (ja) | 1990-04-04 | 1997-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 同時アクセス管理方法 |
JPH06342396A (ja) | 1990-07-02 | 1994-12-13 | Internatl Business Mach Corp <Ibm> | 共有データのアクセスを直列化する方法及び装置 |
JPH04260947A (ja) * | 1991-01-31 | 1992-09-16 | Mitsubishi Electric Corp | 共用ファイルのアクセス処理方法 |
US5285528A (en) | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
JPH07191944A (ja) * | 1991-09-11 | 1995-07-28 | Internatl Business Mach Corp <Ibm> | 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法 |
US5355477A (en) | 1991-12-23 | 1994-10-11 | International Business Machines Corporation | Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning |
JPH05250188A (ja) * | 1992-03-05 | 1993-09-28 | Hitachi Ltd | プロセスのプライオリティ制御方式 |
JP2566717B2 (ja) * | 1992-03-30 | 1996-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 条件付きオペレーション提供装置及び方法 |
US5339427A (en) * | 1992-03-30 | 1994-08-16 | International Business Machines Corporation | Method and apparatus for distributed locking of shared data, employing a central coupling facility |
US5774731A (en) | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
JP2654612B2 (ja) * | 1995-02-23 | 1997-09-17 | 日本電気株式会社 | 排他ウエイト削減制御方法 |
US5734909A (en) | 1995-09-01 | 1998-03-31 | International Business Machines Corporation | Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment |
US5758339A (en) | 1996-05-31 | 1998-05-26 | International Business Machines Corporation | Method of identifying shared and unshared information using system chapters, a sysplex chapter, a table of contents, and a header |
US5862376A (en) * | 1996-06-24 | 1999-01-19 | Sun Microsystems, Inc. | System and method for space and time efficient object locking |
US5832484A (en) * | 1996-07-02 | 1998-11-03 | Sybase, Inc. | Database system with methods for parallel lock management |
AU731871B2 (en) * | 1996-11-04 | 2001-04-05 | Sun Microsystems, Inc. | Method and apparatus for thread synchronization in object-based systems |
US5790851A (en) * | 1997-04-15 | 1998-08-04 | Oracle Corporation | Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment |
JPH1165863A (ja) * | 1997-08-26 | 1999-03-09 | Hitachi Ltd | 共有資源管理方法 |
US6065086A (en) * | 1998-02-17 | 2000-05-16 | International Business Machines Corporation | Demand based sync bus operation |
US6189007B1 (en) * | 1998-08-28 | 2001-02-13 | International Business Machines Corporation | Method and apparatus for conducting a high performance locking facility in a loosely coupled environment |
-
1999
- 1999-03-25 US US09/275,792 patent/US6449614B1/en not_active Expired - Fee Related
- 1999-12-10 CA CA002292040A patent/CA2292040C/en not_active Expired - Lifetime
- 1999-12-23 TW TW088122789A patent/TW498281B/zh not_active IP Right Cessation
-
2000
- 2000-03-10 SG SG200001385A patent/SG97863A1/en unknown
- 2000-03-14 JP JP2000070381A patent/JP4042945B2/ja not_active Expired - Fee Related
- 2000-03-23 EP EP00302371A patent/EP1039384A3/en not_active Withdrawn
- 2000-03-24 CN CNB001047477A patent/CN1175341C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10007551B2 (en) | 2007-10-25 | 2018-06-26 | Microsoft Technology Licensing, Llc | Techniques for switching threads within routines |
Also Published As
Publication number | Publication date |
---|---|
CA2292040A1 (en) | 2000-09-25 |
CN1268688A (zh) | 2000-10-04 |
EP1039384A3 (en) | 2007-05-16 |
US6449614B1 (en) | 2002-09-10 |
JP4042945B2 (ja) | 2008-02-06 |
EP1039384A2 (en) | 2000-09-27 |
CA2292040C (en) | 2004-03-30 |
JP2000284978A (ja) | 2000-10-13 |
CN1175341C (zh) | 2004-11-10 |
SG97863A1 (en) | 2003-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW498281B (en) | Interface system and method for asynchronously updating a shared resource | |
EP0145889B1 (en) | Non-spinning task locking using compare and swap | |
US4509119A (en) | Method for managing a buffer pool referenced by batch and interactive processes | |
EP0563624B1 (en) | Method and apparatus for performing conditional operations on externally shared data | |
JP2514299B2 (ja) | プロセスレベルプログラミングのための割込み処理の直列化方法 | |
US5317739A (en) | Method and apparatus for coupling data processing systems | |
US7100161B2 (en) | Method and apparatus for resource access synchronization | |
US6189007B1 (en) | Method and apparatus for conducting a high performance locking facility in a loosely coupled environment | |
US7395383B2 (en) | Realtime-safe read copy update with per-processor read/write locks | |
US4394725A (en) | Apparatus and method for transferring information units between processes in a multiprocessing system | |
US4399504A (en) | Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment | |
JP4956418B2 (ja) | コンピュータ装置用のオペレーティング・システムの、またはそれに関する改良 | |
JPH0324696B2 (zh) | ||
US10579413B2 (en) | Efficient task scheduling using a locking mechanism | |
US11294737B2 (en) | Self-managed lock access | |
US6185650B1 (en) | High performance locking facility | |
US6253274B1 (en) | Apparatus for a high performance locking facility | |
US7793023B2 (en) | Exclusion control | |
US6088757A (en) | Computer program means and device for conducting high performance locking facility in a loosely coupled environment | |
JPH06110846A (ja) | 排他制御方式 | |
EP0889396A1 (en) | Thread synchronisation via selective object locking | |
JP2804478B2 (ja) | タスク制御方式及びオンライン・トランザクション・システム | |
US20080263545A1 (en) | Signal delivery to a process in a process group | |
CN118260051A (zh) | 线程访问控制设备、方法与计算设备 | |
JPH03288933A (ja) | データ資源に対するアクセスを制御する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |