專利名稱:在數(shù)字數(shù)據(jù)處理系統(tǒng)中管理進程的事件日志的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)字數(shù)據(jù)處理,并具體涉及用于記錄在數(shù)字計算機系統(tǒng)內(nèi)的軟件進程的執(zhí)行期間發(fā)生的事件的數(shù)據(jù)結(jié)構(gòu)的管理。
背景技術(shù):
在二十世紀后半葉,開始了一種被稱為信息革命的現(xiàn)象。盡管信息革命是范圍比任何一種事件或機器更寬廣的歷史發(fā)展,但是沒有一種單一設(shè)備能夠比數(shù)字電子計算機更好地代表信息革命。計算機系統(tǒng)的發(fā)展確實成為了一場革命。每年,計算機系統(tǒng)發(fā)展更快,存儲更多數(shù)據(jù),并向它們的用戶提供更多應(yīng)用。
現(xiàn)代計算機系統(tǒng)通常包括下述形式的硬件,即,一個或多個用于處理指令的中央處理單元(CPU)、用于存儲指令和其他數(shù)據(jù)的存儲器、以及傳遞信息、與外部世界通信所必須的其他支持硬件等。從計算機硬件的立場來看,多數(shù)系統(tǒng)基本以相同方式工作。處理器能夠執(zhí)行有限的一組非常簡單的操作,例如算術(shù)、邏輯比較以及數(shù)據(jù)從一個位置移動到另一個位置。但是每個操作執(zhí)行得非常快。指引計算機執(zhí)行海量的這些簡單操作的程序造成計算機正在進行復雜操作的錯覺。通過執(zhí)行基本相同的一組非常簡單的操作但是快得多地執(zhí)行,能夠使得用戶感知為計算機系統(tǒng)的新的或改進的能力。因此,對計算機系統(tǒng)的持續(xù)改進需要使得這些系統(tǒng)甚至更快。
計算機系統(tǒng)執(zhí)行逐日的任務(wù)的總速率(也被稱為Athroughput≌)可通過對計算機=s的硬件設(shè)計進行各種改進來增加,其用各種方式來增加每單位時間執(zhí)行的簡單操作的平均數(shù)量。系統(tǒng)的總速度也可通過對系統(tǒng)設(shè)計(并尤其對系統(tǒng)上執(zhí)行的軟件的設(shè)計)進行算法改進來增加。對軟件的許多算法改進不是通過增加每單位時間執(zhí)行的操作的平均數(shù)量而是通過減小執(zhí)行給定任務(wù)必須執(zhí)行的操作的總數(shù)來增加吞吐量。算法改進也可通過最優(yōu)地管理硬件資源的同時使用來增加吞吐量,從而避免資源過多的空閑以及對資源的過度爭用。許多這樣的改進各自的效果較微小,但是許多小改進對系統(tǒng)性能的累積效應(yīng)可大大增加系統(tǒng)吞吐量。
實際上,所有大型計算機系統(tǒng)都包含多任務(wù)操作系統(tǒng),其管理系統(tǒng)資源在為用戶執(zhí)行應(yīng)用的多個任務(wù)或進程之間的分配。例如,這樣的操作系統(tǒng)管理對一個或多個CPU的分派、對存儲器地址空間的分配、對實存儲器的若干部分(Apage≌)的分配等。在操作系統(tǒng)的功能之間的是軟件進程的初始化和終止。
軟件進程的初始化通常需要創(chuàng)建和初始化用于保持進程狀態(tài)的某些數(shù)據(jù)結(jié)構(gòu)以及其他信息。在進程終止時,這些數(shù)據(jù)結(jié)構(gòu)通常不再需要,并且通過使用各種技術(shù)中的任一種將這些數(shù)據(jù)結(jié)構(gòu)占據(jù)的地址空間進行再循環(huán)和重用。對所述數(shù)據(jù)結(jié)構(gòu)的保持通常由操作系統(tǒng)執(zhí)行。
在許多操作系統(tǒng)內(nèi),這些數(shù)據(jù)結(jié)構(gòu)包括用于記錄在進程執(zhí)行期間發(fā)生的某些事件的特殊數(shù)據(jù)結(jié)構(gòu)。這些事件記錄可用于進程本身的執(zhí)行,但是通常出于診斷目的而被保持。即,通過記錄由于進程的執(zhí)行而發(fā)生的事件序列,能夠推理不希望的行為的原因。這種信息可用于分析程序性能和資源利用、調(diào)試錯誤狀態(tài)等。
在進程執(zhí)行期間,通常想要以便于操作系統(tǒng)和/或執(zhí)行進程使用的形式來保持事件記錄,并使記錄事件所需的存儲空間的量最小化。例如,事件記錄可被編碼為代表事件類型、事件發(fā)生的程序位置和進程狀態(tài)的其他方面的數(shù)字。這些編碼便于操作系統(tǒng)或執(zhí)行進程來提供和存儲,但是它們相對地難以被人類用戶所理解。為了以可被人類用戶容易了解的方式來提供事件數(shù)據(jù),系統(tǒng)通常將在程序執(zhí)行期間保持的事件記錄數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成為被格式化為人類可讀的輸出的事件日志。轉(zhuǎn)換通常在進程執(zhí)行結(jié)束時執(zhí)行,但是對于某些進程可在執(zhí)行期間被定期地執(zhí)行。在程序執(zhí)行期間保持的事件記錄數(shù)據(jù)結(jié)構(gòu)通常在生成了人類可讀日志之后被刪除。
在正常操作條件下,從運行時事件記錄數(shù)據(jù)結(jié)構(gòu)生成被格式化成人類可讀輸出的事件日志會造成小的但可管理的系統(tǒng)的額外工作負荷。但是,在某些情況下,生成人類可讀的事件日志會造成嚴重負擔。具體地,大量進程可能由于某種系統(tǒng)異?;蛳到y(tǒng)關(guān)閉而幾乎在同時終止。如果大量進程需要生成各自的人類可讀的事件日志,則同時生成許多事件日志會導致對某些關(guān)鍵資源的爭用以及響應(yīng)的顯著延遲。此外,生成許多事件日志會臨時增加對存儲器的需求,這是因為運行時事件記錄和人類可讀事件日志會同時存在。當發(fā)生了嚴重的系統(tǒng)異常時,爭用、增加的存儲器需求以及生成事件日志的延時可能會具有加劇異?;蛴绊懺\斷和從異常中恢復的能力的伴隨結(jié)果。例如,當系統(tǒng)由于存儲器使用接近容量而關(guān)閉時,生成人類可讀事件日志的額外的存儲器需求使得存儲器需求超過容量,這是非常不理想的結(jié)果。
傳統(tǒng)的操作系統(tǒng)允許用戶提前指定是否將生成人類可讀事件日志,甚至指定是否在存在某些預定條件的情況下應(yīng)生成這種日志。但是,難以預計這種日志可用的所有可能的條件。用戶常常指定應(yīng)在所有情況下生成日志從而在需要的時候可用到事件日志。
因此,存在對用于生成人類可讀事件日志的改進技術(shù)、尤其是將減小響應(yīng)于幾乎同時終止許多進程而生成大量事件日志的負擔的需求,所述需求還未被必然地認識到。
發(fā)明內(nèi)容
在創(chuàng)建了每一個保持用于執(zhí)行進程的事件記錄的數(shù)據(jù)結(jié)構(gòu)的進程終止之后,這種事件記錄數(shù)據(jù)結(jié)構(gòu)被以持久的形式保持。優(yōu)選地通過自動進程最終刪除所述事件記錄數(shù)據(jù)結(jié)構(gòu),該自動進程在預定的時間段之后將事件記錄數(shù)據(jù)結(jié)構(gòu)使用的存儲空間解除分配或清除。即便需要生成被格式化成人類可讀形式的日志的話,也是在進程完成之后并在事件記錄刪除之前根據(jù)用戶需求來生成。
通過在進程終止之后以持久方式保持運行時事件記錄數(shù)據(jù)結(jié)構(gòu),可延遲從事件記錄生成人類可讀日志的決定。在許多情況下,將不需要這樣的日志,并且在到期時將刪除所述運行時事件記錄而不需要生成人類可讀日志。此外,當大量進程幾乎同時終止時,即使最終需要任何人類可讀日志,仍不必立即生成所述日志。從而避免由同時生成許多人類可讀日志所導致的爭用和資源利用問題??稍谏院笊蓪嶋H需要的日志(通常是全部日志的小子集)。
可參照附圖最好地理解本發(fā)明的關(guān)于其結(jié)構(gòu)和操作的細節(jié),在附圖中同樣的標號指示同樣的部分,在附圖中圖1是根據(jù)本發(fā)明的優(yōu)選實施例的用于執(zhí)行進程并管理被執(zhí)行的進程的事件日志的計算機系統(tǒng)的主要硬件部件的高層框圖。
圖2是根據(jù)優(yōu)選實施例的用于執(zhí)行進程并管理被執(zhí)行的進程的事件日志的計算機系統(tǒng)的主要軟件部件的概念性圖示。
圖3是根據(jù)優(yōu)選實施例的典型的持久作業(yè)信息數(shù)據(jù)結(jié)構(gòu)的概念性表示,該數(shù)據(jù)結(jié)構(gòu)包括事件日志和可由該事件日志得到的對應(yīng)的作業(yè)日志。
圖4是描述了根據(jù)優(yōu)選實施例的用于執(zhí)行作業(yè)并在事件日志內(nèi)記錄事件的進程的高層流程圖。
圖5是示出根據(jù)優(yōu)選實施例的用于在作業(yè)完成之后定制作業(yè)日志的單獨的和異步的進程的流程圖。
圖6是示出根據(jù)優(yōu)選實施例的從事件日志中生成作業(yè)日志的單獨的和異步的進程的流程圖。
圖7是示出根據(jù)優(yōu)選實施例的用于將不再需要的事件日志解除分配的單獨的和異步的進程的流程圖。
具體實施例方式
如文中使用的,Aprocess≌或Asoftware process≌是執(zhí)行一組指令(例如計算機程序、過程或功能)的單個實例,并具有與其相關(guān)聯(lián)的狀態(tài)。代表相同程序、過程或功能的執(zhí)行的各個實例的多個進程可同時為活動的,每個進程具有它自己的相應(yīng)狀態(tài),該狀態(tài)獨立于其他這樣的進程的狀態(tài)。進程可產(chǎn)生多個執(zhí)行路徑或線程,但是許多進程僅包含單個執(zhí)行線程。Aprocess≌在某些系統(tǒng)環(huán)境內(nèi)可被稱為Ajob≌、Atask≌或某些其他名稱,并且除了在此被上下文另外限制之外,術(shù)語Aprocess≌通常包含任何或全部這樣的構(gòu)造,無論其被如何命名。但是,由于優(yōu)選實施例的IBM i/SeriesTM計算機系統(tǒng)通常使用術(shù)語Ajob≌,該術(shù)語在文中已被廣泛使用,所以在Aprocess和Ajob之間沒有區(qū)別。
參照附圖,其中在若干附圖內(nèi)相同標號指示相同部分,圖1是根據(jù)本發(fā)明的優(yōu)選實施例的用于執(zhí)行進程并管理被執(zhí)行的進程的事件日志的計算機系統(tǒng)100的主要硬件部件的高層表示。CPU 101是至少一個通用可編程處理器,其執(zhí)行指令并處理來自主存儲器102的數(shù)據(jù)。主存儲器102優(yōu)選地為使用多種存儲技術(shù)中的任一種的隨機存取存儲器,其中數(shù)據(jù)從存儲裝置加載或被另外加載,用以被CPU 101處理。
一條或多條通信總線105提供用于在CPU 101、主存儲器102和各種I/O接口單元111-114之間傳遞數(shù)據(jù)的數(shù)據(jù)通信路徑,該I/O接口單元也被稱為I/O處理器(IOP)或I/O適配器(IOA)。I/O接口單元支持與多種存儲裝置和I/O設(shè)備的通信。例如,終端接口單元111支持附接一個或多個用戶終端121-124。存儲接口單元112支持附接一個或多個直接存取存儲設(shè)備(DASD)125-127(其通常是旋轉(zhuǎn)磁盤驅(qū)動存儲設(shè)備,但是它們可選擇地可以為其他設(shè)備,包括被配置成對于主機表現(xiàn)為單個大型存儲設(shè)備的盤驅(qū)動器陣列)。I/O設(shè)備接口單元113支持附接多種其他類型的I/O設(shè)備(例如打印機128和傳真機129)中的任何一個,應(yīng)該理解,可以使用其他類型或附加類型的I/O設(shè)備。網(wǎng)絡(luò)接口114支持到用于與一個或多個其他數(shù)字設(shè)備進行通信的外部網(wǎng)絡(luò)130的連接。網(wǎng)絡(luò)130可以是本領(lǐng)域內(nèi)已知的各種局域網(wǎng)或廣域網(wǎng)中的任何一種。例如,網(wǎng)絡(luò)130可以是以太網(wǎng)局域網(wǎng),或者其可以是因特網(wǎng)。另外,網(wǎng)絡(luò)接口114可支持到多個網(wǎng)絡(luò)的連接。
應(yīng)理解,圖1旨在示出系統(tǒng)100的代表性的高層主要部件,各個部件的復雜性可高于圖1內(nèi)所示的部件,可以提供不同于圖1內(nèi)所示的那些部件或除了那些部件之外的部件,并且這些部件的數(shù)量、類型和配置可改變,大型計算機系統(tǒng)的部件通常比圖1所示的部件更多。這種額外的復雜性或額外的變型的若干具體示例在文中公開,應(yīng)理解,它們僅是示例而不必僅是這樣的變型。
盡管為了說明在圖1內(nèi)僅示出單個CPU 101,但是如本領(lǐng)域內(nèi)已知的,計算機系統(tǒng)100可包含多個CPU。盡管主存儲器102在圖1內(nèi)示出為單個單塊實體,但是如本領(lǐng)域內(nèi)已知的,存儲器102實際上可以是分布式的和/或分層級的。例如,存儲器可存在于多級高速緩沖存儲器內(nèi),并且這些高速緩沖存儲器可從功能上被進一步劃分,從而一個高速緩沖存儲器保持指令而另一個高速緩沖存儲器保持由處理器使用的非指令數(shù)據(jù)。存儲器還可以是分布式的并與不同CPU或CPU組相關(guān)聯(lián),如各種所謂的非一致存儲器訪問(NUMA)計算機體系結(jié)構(gòu)中的任一種中所知的。盡管通信總線105在圖1內(nèi)示出為單個實體,但是實際上,在各種系統(tǒng)部件之間的通信通常通過總線、接口等的復雜分級結(jié)構(gòu)實現(xiàn),其中較高速的路徑被用于CPU 101和存儲器102之間的通信,而較低速的路徑被用于I/O接口單元111-114之間的通信??偩€105可設(shè)置成多種形式中的任何一種,例如分層次的點到點鏈路、星狀或網(wǎng)狀構(gòu)造、多個分級總線、并行和冗余路徑等。例如,如在NUMA體系結(jié)構(gòu)內(nèi)已知的,通信路徑設(shè)置在結(jié)點基上??偩€可使用例如工業(yè)標準PCI總線或任何其他的適當?shù)目偩€技術(shù)。盡管已知多種I/O接口單元,其使總線105與運行到各種I/O設(shè)備的各種通信路徑相分離,但是可選擇地,能夠?qū)⒛承┗蛉縄/O設(shè)備直接連接到一個或多個系統(tǒng)總線。
圖1內(nèi)所示的計算機系統(tǒng)100具有多個附接終端121-124,例如可以是典型的多用戶Amainframe≌計算機系統(tǒng)。通常,在附接設(shè)備的實際數(shù)量大于圖1所示的數(shù)量的情況下,但是本發(fā)明并不局限于任何特定大小的系統(tǒng)。訪問計算機系統(tǒng)100的用戶工作站或終端也可通過網(wǎng)絡(luò)130附接到系統(tǒng)100并與系統(tǒng)100通信。計算機系統(tǒng)100可選擇地為單用戶系統(tǒng),通常僅包含單個用戶顯示器和鍵盤輸入。此外,盡管本發(fā)明在此出于說明目的而被描述為被包括在單個計算機系統(tǒng)中,但是本發(fā)明可選擇地可使用相互通信的計算機系統(tǒng)的分布式網(wǎng)絡(luò)來實現(xiàn),其中在此所述的不同功能或步驟在不同計算機系統(tǒng)上執(zhí)行。
盡管已說明和示出各種高層的系統(tǒng)部件,但是應(yīng)理解,典型的計算機系統(tǒng)包含許多其他的未示出的部件,這些部件對于本發(fā)明的理解并不是必不可少的。在優(yōu)選實施例內(nèi),計算機系統(tǒng)100是基于IBM i/SeriesTM體系結(jié)構(gòu)的計算機系統(tǒng),應(yīng)理解,本發(fā)明可在其他計算機系統(tǒng)上實現(xiàn)。
圖2是存儲器102內(nèi)的系統(tǒng)100的選擇性的重要的軟件部件的概念性圖示。操作系統(tǒng)201是提供各種低層軟件功能(例如如本領(lǐng)域內(nèi)已知的設(shè)備接口、存儲頁的管理、多個任務(wù)的管理和分派等)的可執(zhí)行代碼和狀態(tài)數(shù)據(jù)。具體地,操作系統(tǒng)201保持用于多個作業(yè)的包括事件記錄數(shù)據(jù)結(jié)構(gòu)的某些狀態(tài)數(shù)據(jù)結(jié)構(gòu),并且在適當?shù)那闆r下生成人類可讀的事務(wù)日志數(shù)據(jù),如這里所說明的。
參照圖2,操作系統(tǒng)201包括系統(tǒng)初始化功能202、分派功能203、實存儲器分頁功能204、虛擬存儲器分配功能205、作業(yè)狀態(tài)管理功能206和作業(yè)日志生成功能207。系統(tǒng)初始化功能202、分派功能203、實存儲器分頁功能204和虛擬存儲器分配功能205在概念上分別示出為單個塊而沒有另外的細節(jié);作業(yè)狀態(tài)管理功能206和作業(yè)日志生成功能207以有限的細節(jié)示出。但是,應(yīng)理解,這些功能實際上為具有各自的內(nèi)部代碼和狀態(tài)數(shù)據(jù)結(jié)構(gòu)的復雜實體,它們并沒有全部在圖2的示圖內(nèi)示出。還應(yīng)理解,操作系統(tǒng)201包括本領(lǐng)域內(nèi)已知的許多其他功能,這些功能過多而無法提及。
操作系統(tǒng)201包括各種狀態(tài)數(shù)據(jù),并且具體包括用于記錄系統(tǒng)內(nèi)活動的作業(yè)的狀態(tài)的狀態(tài)數(shù)據(jù)。為每個作業(yè)保持相應(yīng)的一組操作系統(tǒng)作業(yè)狀態(tài)數(shù)據(jù)結(jié)構(gòu)221-224。通過圖2內(nèi)的示例示出四個操作系統(tǒng)作業(yè)狀態(tài)數(shù)據(jù)結(jié)構(gòu)221-224,應(yīng)理解,任何時候在系統(tǒng)上存在的實際數(shù)量可改變,并且該數(shù)量通常會大得多。此作業(yè)狀態(tài)數(shù)據(jù)221-224可包括數(shù)據(jù),例如作業(yè)標識符、用戶、權(quán)限、存儲器分配、當前執(zhí)行狀態(tài)和操作系統(tǒng)所需的各種其他數(shù)據(jù)。某些操作系統(tǒng)作業(yè)狀態(tài)數(shù)據(jù)(在此被稱為Ajob執(zhí)行狀態(tài)數(shù)據(jù)≌)是臨時的,并且在作業(yè)終止時消失(被解除分配、再循環(huán)或刪除),但是操作系統(tǒng)作業(yè)狀態(tài)數(shù)據(jù)的子集(在此被稱為Apersistent作業(yè)信息≌225-229)包括一個或多個相應(yīng)的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是持久的并且可在作業(yè)終止后無限期存在(但是它們通常被單獨的異步進程定期清除)。在操作系統(tǒng)作業(yè)狀態(tài)的持久作業(yè)信息部分內(nèi)包括的數(shù)據(jù)中存在事件記錄數(shù)據(jù)(在此被稱為Aevent日志數(shù)據(jù)結(jié)構(gòu)≌或Aevent日志≌)232-235,其記錄在相應(yīng)作業(yè)的執(zhí)行期間已發(fā)生的事件。對應(yīng)于各個作業(yè)的作業(yè)狀態(tài)數(shù)據(jù)結(jié)構(gòu)221-224在圖2內(nèi)被概念性示出為單塊實體,其包括對應(yīng)的持久作業(yè)信息225-228和事件日志數(shù)據(jù)結(jié)構(gòu)232-235。但是,應(yīng)理解,此表示并不是暗示所有作業(yè)狀態(tài)數(shù)據(jù)被保持在連續(xù)的存儲位置。作業(yè)狀態(tài)數(shù)據(jù)通常被保持在多個數(shù)據(jù)結(jié)構(gòu)內(nèi),并且可存在標識作業(yè)狀態(tài)數(shù)據(jù)的各個部分的引用,例如指針。具體地,事件日志數(shù)據(jù)結(jié)構(gòu)優(yōu)選地占據(jù)單獨范圍的存儲地址。
在優(yōu)選實施例內(nèi),在作業(yè)已完成并且作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)已被解除分配或被再循環(huán)以便被其他作業(yè)所使用之后,某些事件日志數(shù)據(jù)結(jié)構(gòu)可存在于操作系統(tǒng)內(nèi)作為持久作業(yè)信息的一部分。圖2示出包含各自的事件日志數(shù)據(jù)結(jié)構(gòu)236-238的三個持久作業(yè)信息數(shù)據(jù)結(jié)構(gòu)229-231,它們沒有與任何作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)相關(guān)聯(lián)。在優(yōu)選實施例內(nèi),事件日志數(shù)據(jù)結(jié)構(gòu)232-239是持久數(shù)據(jù)結(jié)構(gòu),這意味著它們在系統(tǒng)斷電和重新初始化時仍可存在。
作業(yè)狀態(tài)數(shù)據(jù)管理功能206分配、初始化和解除分配用于多個作業(yè)中的每一個的相應(yīng)的操作系統(tǒng)作業(yè)狀態(tài)數(shù)據(jù)結(jié)構(gòu)221-224,所述數(shù)據(jù)結(jié)構(gòu)包括事件日志232-239。具體地,在對應(yīng)的作業(yè)已完成并且作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)結(jié)構(gòu)已被解除分配或再循環(huán)之后長期存在的事件日志使用事件日志清除功能208來定期地解除分配。在此更詳細地說明作業(yè)狀態(tài)數(shù)據(jù)管理功能206的某些操作。
每個事件日志數(shù)據(jù)結(jié)構(gòu)232-239包含在對應(yīng)的作業(yè)的執(zhí)行期間發(fā)生的事件的記錄。事件可包括例如過程或功能調(diào)用、中斷、錯誤狀態(tài)、跟蹤或遇到的斷點等。如本領(lǐng)域內(nèi)已知的,用戶、系統(tǒng)管理員或其他人可使用許多方法中的任何一種來指定事件應(yīng)記錄在事件日志中的事件或狀態(tài)的類型,并且此指定可隨著作業(yè)的不同而改變。當對應(yīng)的作業(yè)執(zhí)行時事件被添加到事件日志,并且每個事件日志內(nèi)的數(shù)據(jù)相應(yīng)地被保持為便于被操作系統(tǒng)使用而不必是人類用戶易讀的格式。在某些情況下,事件日志數(shù)據(jù)結(jié)構(gòu)內(nèi)的事件記錄的人類可讀形式(被稱為Ajob日志≌241-242)通過作業(yè)日志生成程序207生成。圖2示出兩個作業(yè)日志241-242,應(yīng)理解該數(shù)量可變。作業(yè)日志生成程序包括生成功能代碼212、一個或多個作業(yè)日志服務(wù)器210-211(圖2內(nèi)示出其中兩個)以及作業(yè)日志服務(wù)器隊列209。作業(yè)日志服務(wù)器隊列209包含對將要生成作業(yè)日志的事件日志的引用。作業(yè)日志服務(wù)器210-211是用于從在作業(yè)日志服務(wù)器隊列209上排隊的事件日志引用中生成作業(yè)日志的專用操作系統(tǒng)作業(yè)。
除了各種操作系統(tǒng)實體之外,系統(tǒng)100通常包含一個或多個用戶應(yīng)用213-215(圖2內(nèi)示出其中三個)。這種用戶應(yīng)用可全部在計算機系統(tǒng)100上執(zhí)行,或者可通過網(wǎng)絡(luò)訪問遠程系統(tǒng)上的功能。這種用戶應(yīng)用可包括例如個人記錄、記帳、代碼開發(fā)和編譯、郵件、記日歷、web瀏覽或數(shù)千個用戶應(yīng)用中的任何一個。系統(tǒng)100還包括用于保持用戶數(shù)據(jù)251-256(圖2內(nèi)示出六個)的多種用戶數(shù)據(jù)對象,但是應(yīng)理解這種實體的實際數(shù)量可改變,并且具體而言用戶數(shù)據(jù)對象的數(shù)量通常大得多。用戶數(shù)據(jù)對象251-256包含由用戶應(yīng)用程序本身所保持的數(shù)據(jù),并且將與操作系統(tǒng)狀態(tài)數(shù)據(jù)221-224區(qū)分開,該操作系統(tǒng)狀態(tài)數(shù)據(jù)由操作系統(tǒng)保持以便跟蹤執(zhí)行作業(yè)等。
各種軟件實體在圖2內(nèi)示出為單獨的實體或被包含在其他實體內(nèi)。但是,應(yīng)理解,此表示僅用于說明,并且特定模塊或數(shù)據(jù)實體可以是單獨的實體,或者是公共模塊或模塊包的一部分。此外,盡管在圖2的概念性表示內(nèi)示出某個數(shù)量和類型的軟件實體,但是應(yīng)理解,這些實體的實際數(shù)量可改變,并且具體地,在復雜系統(tǒng)環(huán)境內(nèi)這些實體的數(shù)量和復雜性通常大得多。
盡管圖2的軟件部件被概念性示出為駐留于存儲器102內(nèi),但是應(yīng)理解,通常,計算機系統(tǒng)的存儲器過小而不能同時保持所有程序和數(shù)據(jù),并且該信息通常存儲在數(shù)據(jù)存儲設(shè)備125-127(包括一個或多個海量存儲設(shè)備,例如旋轉(zhuǎn)磁盤驅(qū)動器)內(nèi),并且根據(jù)需要由操作系統(tǒng)將該信息分頁到存儲器內(nèi)。此外,應(yīng)理解,圖2的概念性表示不是暗示任何具體的存儲器組織模型,并且系統(tǒng)100可使用單個地址空間虛擬存儲器,或者可使用重疊的多個虛擬地址空間。
圖3是根據(jù)優(yōu)選實施例的典型的持久作業(yè)信息數(shù)據(jù)結(jié)構(gòu)301的概念性表示,該結(jié)構(gòu)包括事件日志數(shù)據(jù)結(jié)構(gòu)303和可從該事件日志數(shù)據(jù)結(jié)構(gòu)303得到的對應(yīng)的作業(yè)日志302。持久作業(yè)信息301在概念上在非常高的層次示出,其僅示出與本發(fā)明相關(guān)的某些部件,但是應(yīng)理解持久作業(yè)信息301可包括未示出的額外的狀態(tài)數(shù)據(jù)。持久作業(yè)信息包括事件日志303、唯一地標識該持久作業(yè)信息對應(yīng)的作業(yè)的作業(yè)標識符311、標識對應(yīng)的作業(yè)完成執(zhí)行時的時間和日期的完成時間戳312、和指定將采取的關(guān)于從事件記錄中生成作業(yè)日志的動作的作業(yè)日志選項318,如在此進一步說明的。
事件日志303包含頭部304和一個或多個事件條目305-306(圖3內(nèi)示出其中兩個事件條目,應(yīng)理解該數(shù)量可改變且通常更大)。對于某些作業(yè),事件記錄的數(shù)量將超過對該事件日志的虛擬存儲器分配。在此情況下,事件記錄通常覆蓋并重寫事件日志內(nèi)較舊的事件記錄。如果希望當事件記錄被重寫時保留作業(yè)內(nèi)的所有事件記錄,則可在填充事件日志時觸發(fā)從事件記錄中生成作業(yè)日志。
與在作業(yè)執(zhí)行期間發(fā)生的特定事件相反,事件日志頭部304包括多種數(shù)據(jù),該數(shù)據(jù)可用于標識對應(yīng)的作業(yè)本身的狀態(tài)、事件日志的格式或類似的參數(shù)。事件日志301中的每個事件記錄或條目305-306記錄了在對應(yīng)的作業(yè)執(zhí)行期間發(fā)生的單個對應(yīng)的事件。事件記錄包含以便于操作系統(tǒng)使用的方式的若干用于數(shù)據(jù)條目的字段。這些字段沒有被格式化成人類可讀的輸出(但是,初步了解該字段以及它們的含義的人員能夠以所述字段被存儲在事件日志內(nèi)的原始形式讀所述字段)。例如,事件條目305-306內(nèi)的字段可包括事件序列313、事件代碼314和可變數(shù)量的事件參數(shù)315-317(示出其中三個)。事件序列313是與事件相對于其他事件的按照年代順序排列的相對順序有關(guān)的值。其可以是例如時間戳、指令計數(shù)器、隨著每個事件遞增的序列號或其他類似的量。事件代碼314是代表事件類型的經(jīng)編碼的值。事件參數(shù)315-317代表關(guān)于事件的額外的信息(例如,某些關(guān)鍵程序變量的狀態(tài)、發(fā)生事件的代碼位置等)。參數(shù)的數(shù)量可取決于事件類型或其他因素而變化。
作業(yè)日志302是得自事件日志301的記錄,并且將表現(xiàn)為從中得出該作業(yè)日志的對應(yīng)的事件日志內(nèi)的人類可讀格式的信息。通常,作業(yè)日志302大于從中得出該作業(yè)日志的對應(yīng)的事件日志,但是在極少情況下可能不是這樣。作業(yè)日志302包含不可讀的頭部307、文本頭部308和一個或多個文本事件描述309-310(圖3內(nèi)示出其中兩個,應(yīng)理解該數(shù)量可變且通常較大),每個文本事件描述309-310對應(yīng)于其中得出作業(yè)日志302的事件日志301中的相應(yīng)的事件記錄305-306。
頭部307包含保持作業(yè)日志記錄302所必需的任何數(shù)據(jù),該頭部不會被顯示給用戶。例如,不可讀的頭部可包含作業(yè)標識符、作業(yè)日志記錄的長度、所使用的文本格式變換和類似信息。文本頭部308包含將顯示給人類用戶的文本信息,以及作為整體的相應(yīng)的作業(yè)和/或事件記錄的描述。每個文本事件描述309-310包含在作業(yè)執(zhí)行期間發(fā)生的對應(yīng)的事件的描述。文本事件描述根據(jù)某些預先建立的轉(zhuǎn)換規(guī)則從事件日志內(nèi)的對應(yīng)的事件記錄中得出。例如,事件代碼314可以是對事件代碼表(未示出)內(nèi)的事件的文本描述和格式進行索引的數(shù)字代碼,所述文本描述被包括在文本事件描述309-310內(nèi)。參數(shù)315-317可類似地引用其他文本信息,或者可以被包括在來自事件代碼的文本描述內(nèi)以填充該描述內(nèi)的空白。
根據(jù)本發(fā)明的優(yōu)選實施例,在至少一個操作模式內(nèi),當作業(yè)完成時延遲從對應(yīng)的事件日志生成作業(yè)日志。除了事件日志數(shù)據(jù)結(jié)構(gòu)持續(xù)存在之外,作業(yè)的狀態(tài)執(zhí)行數(shù)據(jù)可被解除分配。以此方式持續(xù)存在的事件日志數(shù)據(jù)結(jié)構(gòu)被單獨的、異步的清除功能定期清除。作業(yè)完成和清除之間的時間間隔被選擇為足夠長以便用戶可確定創(chuàng)建作業(yè)日志的期望,并且如果用戶這樣希望的話則下令創(chuàng)建一個作業(yè)日志。如果用戶在事件日志被解除分配之前下令創(chuàng)建作業(yè)日志,則可從事件日志中適當?shù)厣勺鳂I(yè)日志。如果用戶未下令,則在清除時間間隔之后刪除該事件日志,并且不再可能生成作業(yè)日志。此進程在下文的流程圖內(nèi)更詳細地示出和說明。
圖4是示出根據(jù)優(yōu)選實施例的用于執(zhí)行作業(yè)并在事件日志內(nèi)記錄事件的進程的高層流程圖。參照圖4,如步驟401一般地所示,由用戶或使用各種傳統(tǒng)技術(shù)代表用戶來啟動作業(yè)。響應(yīng)于啟動作業(yè),操作系統(tǒng)為新作業(yè)分配某些狀態(tài)數(shù)據(jù)結(jié)構(gòu),其具體包括用于記錄在執(zhí)行期間發(fā)生的事件的事件日志(步驟402)。在某些點上,作業(yè)成為活動的,并且開始執(zhí)行用戶工作(例如用戶應(yīng)用程序)。在啟動作業(yè)和開始用戶工作的活動執(zhí)行之間可以存在延時;優(yōu)選地,在作業(yè)啟動時或鄰近時間分配包括事件日志303的持久作業(yè)信息301,但是某些其他的狀態(tài)數(shù)據(jù)(例如作業(yè)執(zhí)行狀態(tài)數(shù)據(jù))可在直到作業(yè)成為活動的或準備成為活動的之時才進行分配。
用戶工作的執(zhí)行如步驟403一般地示出。應(yīng)理解,用戶工作的執(zhí)行不一定是連續(xù)的。通常,在多任務(wù)系統(tǒng)內(nèi)作業(yè)與其他作業(yè)共享CPU和其他資源。作業(yè)可在分派功能203內(nèi)的準備隊列內(nèi)等待可用的CPU,并且當CPU可用于執(zhí)行時被分派,在CPU內(nèi)一直執(zhí)行直到發(fā)生某些延遲事件(例如存儲裝置存取)或者該作業(yè)被另一個作業(yè)預先清空,如果必要的話被放置在等待隊列內(nèi)以等待延遲事件,并當再次準備執(zhí)行時返回準備隊列。如本領(lǐng)域內(nèi)已知的,此進程可重復許多次。步驟403通常代表在作業(yè)激活(用戶工作開始)和用戶工作完成之間的全部時段,其中作業(yè)斷續(xù)地執(zhí)行。在此時段期間可發(fā)生各種事件,其應(yīng)該被記錄在事件日志301內(nèi)。每個這樣的事件使操作系統(tǒng)通過向事件日志內(nèi)包含的事件記錄中追加適當?shù)氖录涗?05、306而將事件記錄在事件日志內(nèi)(步驟404、405、406)。盡管圖4內(nèi)示出三個這樣的事件,但是應(yīng)理解,所述事件的數(shù)量可改變,并且常常大得多。此外,盡管在通常的情況下,事件在圖4內(nèi)示出為由于用戶作業(yè)的執(zhí)行而發(fā)生,但是在某些環(huán)境下可記錄的事件能夠在作業(yè)的上下文外部發(fā)生,甚至會在用戶工作的執(zhí)行已完成之后發(fā)生。
在某些點,用戶工作的執(zhí)行完成(步驟403的末端)。用戶工作可正常地完成,或者可由于某些不可恢復的錯誤而終止執(zhí)行。在任一情況下,操作系統(tǒng)還將用戶工作的完成記錄為事件日志內(nèi)的事件(步驟407),優(yōu)選地存在多個作業(yè)完成代碼來指示用戶工作是否是正常完成的。
一旦用戶工作的執(zhí)行完成,操作系統(tǒng)就可根據(jù)某些作業(yè)日志生成選項從事件日志數(shù)據(jù)中生成人類可讀的作業(yè)日志。在優(yōu)選實施例內(nèi),如下所說明地,可選擇三個選項之一,其中第三個選項尤其重要。作業(yè)日志選項的選擇在作業(yè)日志選項字段318內(nèi)指定;此值在作業(yè)啟動時設(shè)定,并且稍后可在某些情況下被改變(例如在作業(yè)執(zhí)行期間在程序控制下)。優(yōu)選地,選項之一是默認的,并且用戶可通過在作業(yè)啟動時進行指定來覆蓋該默認值。此選項在優(yōu)選實施例內(nèi)被提供為給出用戶最大靈活性并與傳統(tǒng)系統(tǒng)兼容;但是,在可選擇實施例內(nèi),不是必須具有選項,并且在每種情況下都可使用下文所述的Athird option≌。
在第一選項內(nèi),該選項被表示為出自步驟408的“是”分支,用戶工作的完成會立即代表作業(yè)本身在操作系統(tǒng)內(nèi)觸發(fā)對作業(yè)日志生成功能212的調(diào)用(步驟410)。作業(yè)日志生成功能從事件日志中生成作業(yè)日志,并且操作系統(tǒng)接著解除分配或清除包括事件日志的操作系統(tǒng)狀態(tài)數(shù)據(jù)(步驟411)。
在第二選項內(nèi),該選項被表示為出自步驟409的“是”分支,由單獨的服務(wù)器進程處理作業(yè)日志的生成。具體地,用于生成作業(yè)日志的數(shù)據(jù)(例如事件日志的指針)被放置在作業(yè)日志服務(wù)器隊列209上(步驟412)。在將數(shù)據(jù)放置在作業(yè)日志服務(wù)器隊列上之后,操作系統(tǒng)解除分配或清除操作系統(tǒng)作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)而不是持久作業(yè)信息301,該持久作業(yè)信息301包括事件日志303(步驟413)。在步驟412將對事件日志的引用放置在服務(wù)器隊列上使得單獨的、異步的服務(wù)器進程210、211最終將該引用拉離隊列并調(diào)用作業(yè)日志生成功能212以生成作業(yè)日志。此單獨的服務(wù)器進程在圖4內(nèi)示出為步驟414,并且在圖6內(nèi)被更詳細地示出。盡管圖4表示在服務(wù)器進程(步驟414)之前發(fā)生的數(shù)據(jù)的解除分配(步驟413),但是應(yīng)理解,服務(wù)器進程是異步的,這些步驟可同時發(fā)生,或服務(wù)器可在操作系統(tǒng)清除作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)之前生成作業(yè)日志。
在第三選項內(nèi),該選項被表示為出自步驟409的“是”分支,作業(yè)日志的生成被推遲直到被適當?shù)卣埱?,并且在大多?shù)情況下根本沒有生成作業(yè)日志。在此選項內(nèi),操作系統(tǒng)立即解除分配或清除操作系統(tǒng)作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)而不是持久作業(yè)信息301,該持久作業(yè)信息301包括事件日志303(步驟415)。由于作業(yè)執(zhí)行狀態(tài)數(shù)據(jù)不再存在,因此不再代表該作業(yè)執(zhí)行另外的動作。但是,在某些時間間隔之后,單獨的異步事件日志清除進程208將解除分配或清除事件日志;此單獨進程在圖4內(nèi)示出為步驟416,并且在圖7內(nèi)更詳細地示出。在步驟415和416之間的時間間隔期間,用戶、系統(tǒng)管理員等可下令從事件日志中生成作業(yè)日志,這使得用于生成作業(yè)日志的數(shù)據(jù)被放置在作業(yè)日志服務(wù)器隊列上。這可通過在圖4內(nèi)示出為步驟417且在圖5內(nèi)更詳細示出的單獨進程完成。在服務(wù)器隊列上的放置最終會使異步服務(wù)器進程210、211生成作業(yè)日志,在圖4內(nèi)示出為步驟418并在圖6內(nèi)更詳細地示出。
圖5是示出根據(jù)優(yōu)選實施例的用于當作業(yè)日志在作業(yè)完成時首先被推遲而沒有生成時在作業(yè)完成之后為作業(yè)定制作業(yè)日志的單獨的和異步的進程的流程圖。即,圖5的進程與為其定制作業(yè)日志的作業(yè)分離開且獨立,并且可在作業(yè)完成之后隨時發(fā)生。圖5的進程實際上可用于差不多同時定制多個作業(yè)日志。可在事件日志被事件日志清除功能208刪除之前使用圖5的進程來定制作業(yè)日志,但是對于作業(yè)完成和定制作業(yè)日志之間的時間間隔沒有限制。
參照圖5,在調(diào)用進程選擇要生成的一個或多個作業(yè)日志時,用戶可選地輸入用于查找可應(yīng)用的事件日志(即,出自已完成的但還未生成作業(yè)日志的作業(yè)的事件日志)的搜索參數(shù)(步驟501)。步驟501是可選的,因為搜索范圍可被默認值所暗示或固定;例如其可以是代表請求用戶執(zhí)行的所有作業(yè)。響應(yīng)于在步驟501輸入的任何搜索標準或任何默認標準,操作系統(tǒng)查找所有事件日志,對于所述事件日志(a)可應(yīng)用作業(yè)已完成,以及(b)在作業(yè)完成時作業(yè)日志的生成被推遲,以及(c)作業(yè)日志的生成還沒有通過將對事件日志的引用放置在作業(yè)日志服務(wù)器隊列209上而被定制(步驟502)。接著,優(yōu)選地通過在交互式顯示屏上列出某些標識細節(jié),將對應(yīng)于這些事件日志的作業(yè)呈現(xiàn)給用戶(步驟503)。用戶然后可從所顯示的作業(yè)中選擇作業(yè)(步驟504)。響應(yīng)于用戶=s選擇,改變作業(yè)日志選項308的值以指定作業(yè)日志服務(wù)器生成作業(yè)日志(步驟505);如果作業(yè)日志服務(wù)器隊列內(nèi)的數(shù)據(jù)會丟失則這樣做可以支持恢復該隊列。然后,將對應(yīng)于所選擇的作業(yè)的事件日志的引用放置在作業(yè)日志服務(wù)器隊列209上(步驟506)。選擇和定制作業(yè)日志的進程在將數(shù)據(jù)放置在作業(yè)日志服務(wù)器隊列上并改變作業(yè)日志選項的值之前結(jié)束。圖6內(nèi)所示的作業(yè)日志服務(wù)器進程進行余下的操作。
圖6是示出根據(jù)優(yōu)選實施例的由作業(yè)日志服務(wù)器210、211執(zhí)行來從事件日志中生成作業(yè)日志的單獨的和異步的進程的流程圖。參照圖6,如果在作業(yè)日志服務(wù)器隊列209上沒有事件日志引用(出自步驟601的“否”分支),則作業(yè)日志服務(wù)器等待作業(yè)日志服務(wù)器隊列上的事件日志引用(步驟602)。當引用可用時,作業(yè)日志服務(wù)器從作業(yè)日志服務(wù)器隊列中拉出該引用,這從該隊列除去該引用(步驟603)。作業(yè)日志服務(wù)器然后調(diào)用操作系統(tǒng)=s的作業(yè)日志生成功能212以從拉出了引用的事件日志中生成作業(yè)日志(步驟604)。在作業(yè)日志已被生成之后,作業(yè)日志服務(wù)器刪除事件日志,即其進行解除分配、再循環(huán)或清除事件日志數(shù)據(jù)結(jié)構(gòu),這允許將重用被分配的地址空間(步驟605)。作業(yè)日志服務(wù)器然后返回步驟601以從作業(yè)日志服務(wù)器隊列中拉出另一個事件日志引用,或如果沒有可用的引用則等待。作業(yè)日志服務(wù)器進程無限期地繼續(xù),并且僅由于系統(tǒng)管理員或類似人員的干預、不正常的錯誤狀態(tài)等而終止。在優(yōu)選實施例內(nèi),系統(tǒng)上可存在多個活動的作業(yè)日志服務(wù)器進程,每個進程同時生成作業(yè)日志,但是只有所有作業(yè)日志服務(wù)器進程從中獲得事件日志的一個作業(yè)日志服務(wù)器隊列209將被用作作業(yè)日志的源。
圖7是根據(jù)優(yōu)選實施例的由事件日志清除功能208執(zhí)行的用于解除分配不再需要的事件日志的單獨的和異步的進程的流程圖,即,在作業(yè)完成之后經(jīng)過一定的足夠的時間隔之后如果需要一個作業(yè)日志則用戶具有足夠的機會來定制作業(yè)日志。
參照圖7,從外部進程自動地定期調(diào)用事件日志清除進程(步驟701)。如已知的,可根據(jù)某種時間表來定期地調(diào)用各種清除功能,該周期根據(jù)功能類型而改變。用于調(diào)用清除功能的準確機制可改變,并且可從多個不同的操作系統(tǒng)進程中調(diào)用事件日志清除進程。與大多數(shù)系統(tǒng)進程相比,事件日志清除功能通常在相對較長的時間間隔(例如24小時)之后被調(diào)用。
在導致調(diào)用清除功能的某種事件(例如外部計時器到期)發(fā)生時,清除進程開始執(zhí)行。閾值時間T0被建立為當前系統(tǒng)時間減去最小時間間隔TMIN(步驟703)。進程然后依次選擇每個事件日志(步驟704)。如果對應(yīng)于所選擇的事件日志的作業(yè)在時間T0之前完成,則從步驟705取其“是”分支,并且解除分配或清除該所選擇的事件日志以便該事件日志占用的存儲器地址可被其他進程重用(步驟706)。如果在時間T0之后完成的對應(yīng)的作業(yè)仍沒有完成,則從步驟705取其“否”分支,并且不進行任何動作。如果存在更多要檢查的事件日志,則從步驟707取其“是”分支,并且在步驟704選擇下一事件日志。當已檢查了所有事件日志之后,從步驟707取其“否”分支,并且清除進程終止。
最小時間間隔TMIN被設(shè)定為足夠長以便用戶在事件日志可被解除分配之前有時間從作業(yè)接收輸出、識別對作業(yè)日志的需求(如果存在的話),并下令生成作業(yè)日志,如上所述。此時間間隔不必(但是可以)與事件日志清除進程執(zhí)行的時間間隔的長度相同。例如,適當?shù)拈g隔TMIN可以是7天。在解除分配事件日志之后,不能生成作業(yè)日志。
在文中所述的作為優(yōu)選實施例的技術(shù)的優(yōu)點中存在這樣的事實,即當更多的完成信息可用于用戶考慮對作業(yè)日志的需求時,生成作業(yè)日志的決定被推遲直到作業(yè)完成之后。在大多數(shù)情況下,希望不生成作業(yè)日志,并且事件日志將最終被解除分配而不需要生成作業(yè)日志。此外,通常會導致許多作業(yè)同時結(jié)束的某種事件(例如系統(tǒng)關(guān)閉或某些錯誤狀態(tài))不會自動使這些作業(yè)生成各自的作業(yè)日志,從而避免對作業(yè)日志生成資源的訪問受到限制的情況。
例如,當生成作業(yè)日志時,某些關(guān)鍵代碼路徑或數(shù)據(jù)結(jié)構(gòu)可以需要鎖,這在同時生成許多作業(yè)日志的時候會導致瓶頸。此外,在作業(yè)日志生成期間,作業(yè)日志和時間日志都存在于存儲器中,時間日志通常在作業(yè)日志生成之后被刪除。大量作業(yè)的兩種結(jié)構(gòu)的同時存在可加劇存儲器使用問題。
在上述優(yōu)選實施例內(nèi),作業(yè)的執(zhí)行以及從事件日志中生成作業(yè)日志被描述為按特定順序的使用特定的獨立的進程的一連串步驟。但是,本領(lǐng)域技術(shù)人員將認識到,執(zhí)行某些步驟的順序可改變,并且某些進程可被組合或被另外細分成其他進程,并且除了上文具體說明的之外的變化也以可執(zhí)行特定步驟或進程的方式而存在。
在上文的文本描述內(nèi),分配給數(shù)據(jù)結(jié)構(gòu)的存儲器的清除已被分別稱為刪除、解除分配、再循環(huán)等。應(yīng)理解,所使用的確切操作依賴于有關(guān)的特定操作系統(tǒng),并且不同系統(tǒng)將使用不同機制。如文中使用的,在這些各種的操作之間沒有區(qū)分,并且所有這些操作通常都被術(shù)語Adeletion≌所包含。
通常,被執(zhí)行以實現(xiàn)所述的本發(fā)明實施例(不管是實現(xiàn)為操作系統(tǒng)的一部分還是特定的應(yīng)用、程序、對象、模塊或指令序列)的例程在此被稱為Aprogram≌或Acomputer program≌。程序通常包括下述指令,所述指令當被與本發(fā)明相一致的計算機系統(tǒng)內(nèi)的設(shè)備或系統(tǒng)內(nèi)的一個或多個處理器所讀取和執(zhí)行時,會使這些設(shè)備或系統(tǒng)執(zhí)行下述步驟,所述步驟是執(zhí)行步驟或生成包括本發(fā)明的各個方面的單元所必須的。此外,盡管已在完全運行的計算機系統(tǒng)的上下文內(nèi)在此以及下文說明本發(fā)明,但是本發(fā)明的各個實施例能夠作為表現(xiàn)為多種形式的程序產(chǎn)品而進行分布,并且本發(fā)明可等同地應(yīng)用而不管用于實際執(zhí)行該分布的特定類型的信號承載媒體。信號承載媒體的示例包括但不局限于易失性和非易失性存儲設(shè)備、軟盤、硬盤驅(qū)動器、CD-ROM=s,DVD=s,磁帶等。此外,本發(fā)明應(yīng)用于任何形式的信號承載媒體而與數(shù)據(jù)是否在傳輸網(wǎng)絡(luò)(包括無線網(wǎng)絡(luò))上從一種形式的信號承載媒體轉(zhuǎn)換成另一種形式無關(guān)。信號承載媒體的示例在圖1內(nèi)示出為系統(tǒng)存儲器102和數(shù)據(jù)存儲設(shè)備125-127。
盡管已通過某些可替換方案公開了本發(fā)明的特定實施例,但是本領(lǐng)域技術(shù)人員將認識到,可在權(quán)利要求的范圍內(nèi)在形式和細節(jié)上實現(xiàn)另外的變化。
權(quán)利要求
1.一種用于生成在計算機系統(tǒng)內(nèi)執(zhí)行的進程的事件記錄的方法,該方法包括以下計算機可執(zhí)行步驟(a)在計算機系統(tǒng)內(nèi)執(zhí)行多個進程;(b)為每個所述執(zhí)行進程保持相應(yīng)的事件記錄數(shù)據(jù)結(jié)構(gòu),每個所述事件記錄數(shù)據(jù)結(jié)構(gòu)記錄在對應(yīng)的進程執(zhí)行期間發(fā)生的相應(yīng)事件,每個所述事件記錄數(shù)據(jù)以不會由人類用戶讀取的經(jīng)編碼格式來記錄所述的相應(yīng)事件;(c)在對應(yīng)的進程完成之后將每個所述事件記錄數(shù)據(jù)結(jié)構(gòu)保持相應(yīng)的時間間隔,所述時間間隔長得足以讓人類用戶確定對被格式化成人類可讀形式的所述事件的日志的需要;(d)如果在對應(yīng)的進程完成之后并且在所述相應(yīng)的時間間隔到期之前從人類用戶接收到從所述事件記錄數(shù)據(jù)結(jié)構(gòu)中生成被格式化成人類可讀形式的日志的請求,則響應(yīng)于所述請求自動生成所述被格式化成人類可讀形式的日志;以及(e)如果在對應(yīng)的進程完成之后并且在所述相應(yīng)的時間間隔到期之前沒有從人類用戶接收到從所述事件記錄數(shù)據(jù)結(jié)構(gòu)中生成被格式化成人類可讀形式的日志的請求,則自動刪除所述事件日志數(shù)據(jù)結(jié)構(gòu)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述自動刪除所述事件記錄數(shù)據(jù)結(jié)構(gòu)的步驟由異步進程執(zhí)行,該進程定期檢查所述事件記錄數(shù)據(jù)結(jié)構(gòu),并刪除對應(yīng)于在閾值時間之前已完成的進程的任何所述事件記錄數(shù)據(jù)結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的方法,其中所述閾值時間被自動計算為當前時間和在所述事件記錄數(shù)據(jù)結(jié)構(gòu)被刪除之前要等待的用戶指定最小時間之間的差。
4.根據(jù)權(quán)利要求1所述的方法,其中所述自動生成所述被格式化成人類可讀形式的日志的步驟包括將對事件記錄數(shù)據(jù)結(jié)構(gòu)的引用放置在用于生成被格式化成人類可讀形式的日志的隊列上;以及在異步日志生成進程內(nèi)從所述隊列中刪除所述引用并生成所述被格式化成人類可讀形式的日志。
5.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟對于在所述計算機系統(tǒng)上執(zhí)行的多個所述進程,接收關(guān)于是否在進程完成之時推遲生成相應(yīng)的被格式化成人類可讀形式的日志的相應(yīng)指定,所述接收步驟在對應(yīng)進程執(zhí)行之前執(zhí)行;對于每個這樣的進程,即接收到推遲生成相應(yīng)的被格式化成人類可讀形式的日志的指定的進程,執(zhí)行所述步驟(d)和(e);以及對于每個這樣的進程,即接收到不推遲生成相應(yīng)的被格式化成人類可讀形式的日志的指定的進程,在對應(yīng)的進程完成時自動生成相應(yīng)的被格式化成人類可讀形式的日志。
6.一種計算機系統(tǒng),包括至少一個處理器;用于存儲包括可在所述至少一個處理器上執(zhí)行的計算機程序的存儲器;操作系統(tǒng),其保持在所述至少一個處理器上執(zhí)行的多個進程的進程狀態(tài)數(shù)據(jù),所述進程狀態(tài)數(shù)據(jù)包括多個所述執(zhí)行進程中的每一個的各自的事件記錄數(shù)據(jù)結(jié)構(gòu),每個所述事件記錄數(shù)據(jù)結(jié)構(gòu)記錄在對應(yīng)的進程執(zhí)行期間發(fā)生的相應(yīng)事件,每個所述事件記錄數(shù)據(jù)以不會由人類用戶讀取的經(jīng)編碼格式來記錄所述的相應(yīng)事件;其中所述操作系統(tǒng)還生成在每個所述事件記錄數(shù)據(jù)結(jié)構(gòu)內(nèi)記錄的所述事件的相應(yīng)日志,其中,對于至少某些所述事件記錄數(shù)據(jù)結(jié)構(gòu),所述操作系統(tǒng)在對應(yīng)的進程完成之后將事件記錄數(shù)據(jù)結(jié)構(gòu)保持相應(yīng)的時間間隔,所述時間間隔長得足以讓人類用戶確定對被格式化成人類可讀形式的所述事件的日志的需要,并且(a)響應(yīng)于在對應(yīng)的進程完成之后并且在所述相應(yīng)的時間間隔到期之前從人類用戶接收到請求,自動生成所述被格式化成人類可讀形式的日志,以及(b)如果在所述相應(yīng)的時間間隔到期之前沒有從人類用戶接收到所述請求,則自動刪除所述事件記錄數(shù)據(jù)結(jié)構(gòu)而不會生成所述被格式化成人類可讀形式的日志。
7.根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中所述進程狀態(tài)數(shù)據(jù)包括執(zhí)行狀態(tài)數(shù)據(jù)和持久狀態(tài)數(shù)據(jù),所述執(zhí)行狀態(tài)數(shù)據(jù)在對應(yīng)的進程的執(zhí)行完成時被自動刪除,所述持久狀態(tài)數(shù)據(jù)在對應(yīng)的進程的執(zhí)行完成之后持續(xù)存在,所述持久狀態(tài)數(shù)據(jù)包括所述事件記錄數(shù)據(jù)結(jié)構(gòu)。
8.根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中所述操作系統(tǒng)包括清除功能,如果沒有在所述相應(yīng)的時間間隔到期之前從人類用戶接收到對應(yīng)的所述請求,則所述清除功能自動刪除所述事件記錄數(shù)據(jù)結(jié)構(gòu)而不會生成所述被格式化成人類可讀形式的日志,所述清除功能定期檢查所述事件記錄數(shù)據(jù)結(jié)構(gòu),并刪除對應(yīng)于在閾值時間之前已完成的進程的任何所述事件記錄數(shù)據(jù)結(jié)構(gòu)。
9.根據(jù)權(quán)利要求8所述的計算機系統(tǒng),其中所述閾值時間被自動計算為當前時間和在所述事件記錄數(shù)據(jù)結(jié)構(gòu)被刪除之前要等待的用戶指定最小時間之間的差。
10.根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中所述操作系統(tǒng)包括用于生成被格式化成人類可讀形式的所述日志的隊列,和至少一個日志生成功能,所述功能從所述隊列獲得對進程的引用,并且響應(yīng)于獲得所述引用,從對應(yīng)于所引用的進程的事件記錄數(shù)據(jù)結(jié)構(gòu)中生成被格式化成人類可讀形式的所述日志。
11.根據(jù)權(quán)利要求6所述的計算機系統(tǒng),其中所述進程狀態(tài)數(shù)據(jù)還包括下述數(shù)據(jù),其指定在進程完成時是否推遲生成被格式化成人類可讀形式的相應(yīng)日志,所述操作系統(tǒng)在每個下述進程完成時自動生成被格式化成人類可讀形式的相應(yīng)日志,所述進程的數(shù)據(jù)指定不應(yīng)推遲生成被格式化成人類可讀形式的日志,并且如果所述數(shù)據(jù)指定應(yīng)推遲生成被格式化成人類可讀形式的日志,則執(zhí)行所述步驟(a)和(b)。
全文摘要
在創(chuàng)建了每一個保持用于執(zhí)行進程的事件記錄的數(shù)據(jù)結(jié)構(gòu)的進程終止之后,這種事件記錄數(shù)據(jù)結(jié)構(gòu)被以持久的形式保持。優(yōu)選地通過自動進程最終接觸分配所述事件記錄數(shù)據(jù)結(jié)構(gòu),該自動進程在預定的時間段之后將事件記錄數(shù)據(jù)結(jié)構(gòu)解除分配。即便需要生成被格式化成人類可讀形式的日志的話,也是在進程完成之后并在事件記錄被接觸分配之前根據(jù)用戶需求來生成。通過推遲生成人類可讀日志的決定,避免了不必要的事件日志生成和潛在的對系統(tǒng)資源的爭用。
文檔編號G06F11/34GK1987803SQ20061014187
公開日2007年6月27日 申請日期2006年10月8日 優(yōu)先權(quán)日2005年12月22日
發(fā)明者A·M·牛頓, W·D·塔拉拉, D·M·梅 申請人:國際商業(yè)機器公司