Java作業系統中段頁式虛擬存儲系統的實現方法
2023-05-26 23:33:51 1
專利名稱:Java作業系統中段頁式虛擬存儲系統的實現方法
技術領域:
本發明涉及Java程序設計語言和作業系統技術,特別是涉及到一種Java作業系統中段頁式虛擬存儲系統的實現方法。
背景技術:
Java語言是由Sun公司推出的跨平臺面向對象高級程序設計語言,目前正在各個領域取得越來越重要的地位,已經成為最重要的程序設計語言之一。
Java語言的可執行代碼是編譯以後統一標準的Java字節碼(Byte Code),只要在一個平臺上有Java虛擬機,那麼所有的Java可執行代碼都可以在這個Java虛擬機支持之下運行,因而Java具有跨平臺的優良特性。
Java作業系統是一種全新的獨立的基於Java的作業系統。這種方式省去了虛擬機到作業系統那一層的通訊和調度,因而較之虛擬機的方式有效率的提高。在Java作業系統中使用比較多的存儲管理方法有連續地址存儲,分段存儲,分頁存儲等。連續地址存儲的缺點在於,當使用一段時間之後,主存中將會出現大量的碎片,這時必須移動數據來獲得連續的主存空間,這樣開銷比較大。分頁存儲中,將主存空間分為大小相等的頁,這樣避免了碎片的產生,節省了移動數據的開銷,但是,分頁沒有完整的邏輯意義。而在分段存儲中,可以根據用戶程序的特點來進行段的劃分,具有完整的邏輯意義,但是由於段的長度不等,所以會產生碎片。因此段頁式存儲十分必要。
在頁面調度中一般採用先進先出或者近似最近最少使用法。先進先出的方法效率較低,引起的缺頁率頁很高。而近似最近最少使用法,一般採用過一段時間將引用標誌位清0來實現,這種方法t的大小不易確定,而且精確性差,很難挑選出應該淘汰的頁面。所以需要一種改進的方法。
發明內容
本發明的目的在於提供一種Java作業系統中段頁式虛擬存儲系統的實現方法。
本發明解決其技術問題採用的技術方案如下1、一種Java作業系統中段頁式虛擬存儲系統的實現方法,其特徵在於1)分段方法I、Java作業系統為用戶作業中需要放入主存的每一段分配一塊連續的存儲空間,並且建立局部描述符表和全局描述符表;II、一個段描述符由8個字節構成,包括段基址、長度和其他信息;2)段內分頁方法I、Java作業系統將段內存儲空間分成大小相等的頁,並建立頁表來實現頁面的訪問;II、將頁表的一部分放入一個專用的高速存儲器,形成快表,程序訪問數據時,會先訪問快表,只有當訪問快表沒有命中時,才會訪問主存,這樣可以提高存取速度;3)存儲訪問方法I、邏輯地址包括選擇符和偏移;II、通過邏輯地址中的選擇符在描述符表中查找相應的描述符,描述符包含段基址、長度和其他信息,其中基址與邏輯地址中的偏移一起形成線性地址;III、線性地址包括頁目錄號、頁表號、以及頁內偏移;IV、首先使用線性地址中的頁目錄號在頁目錄中查找頁表,然後在頁表中通過頁表號來查找頁,最後通過頁內偏移來得到物理地址,實現真正的數據訪問;4)缺頁的處理方法I、當主存中頁面訪問缺失時發生缺頁中斷,需要將頁面換出,並通過頁面調度調入新的頁面;II、頁面調度採用時鐘頁面調度方法,通過循環檢測訪問位來查找最近最少訪問的頁面進行換出。
本發明與背景技術相比,具有的有益的效果是採用段頁式存儲結構,先按照程序的邏輯意義來分段,然後在每一段內再分為大小相等的頁,這樣既保留了段的邏輯意義,又能夠以頁作為存儲調度的最小單位,避免了存儲空間碎片的產生。
在頁面調度算法方面採用時鐘頁面調度方法,通過循環檢測訪問位來查找最近最少訪問的頁面進行換出。這樣能夠獲得較高的性能和較低的缺頁率。
圖1是段描述符的結構圖;圖2是主存中段頁式尋址方式示意圖;圖3是時鐘調度算法構造的循環隊列圖;圖4是圖3的實現流程圖。
具體實施例方式
1)分段方法I、Java作業系統為用戶作業中需要放入主存的每一段代碼、數據等分配一塊連續的存儲空間,稱為段。根據段的不同用途可分為數據段、堆棧段、代碼段、擴展數據段等等。並且建立局部描述符表LDT和全局描述符表GDT。局部描述符LDT表描述局部於每個程序的段,包括代碼、數據、堆棧等;全局描述符表GDT描述系統段,包括作業系統自己。
II、一個段描述符由8個字節構成,包括段基址、長度和其他信息,如圖1所示。其中●基地址共32位,分三處合併,生成內存段的首址,加上32位偏移形成內存地址。
●長度位共20位,限定段描述符尋址的內存段的長度,計量單位可以是字節或頁。
●G位用於描述顆粒大小,即段長度的計量單位。G=0表示長度以字節為單位;G=1表示長度以頁為單位。
●D位當D=1時,為32位段;當D=0時,為16位段。
●P位表示內存段是否在物理主存中,若P=1,表示段在內存中,若P=0,表示段不在內存中。
●DPL位表示特權級,用於保護。0為內核級;1為系統調用級,2為共享庫級,3為用戶程序級。
●S位為段位,當S=1時,表示當前段為應用程式;當S=0時,表示描述符將引用內存段外的系統信息。
●類型欄位表示內存段類型,如可執行代碼段、只讀數據段、調用門等等。
●A位為訪問位,表示是否訪問過內存段。
2)段內分頁方法I、Java作業系統將段內存儲空間分成大小相等的頁。並建立頁表,頁表中存儲有頁號、駐留標誌、塊號、輔存地址、調出標誌。作用如下駐留標誌用於指出對應頁是否已經裝入主存,若駐留標誌位為0,表明該頁沒有裝入主存,此時可以根據輔存地址知道該頁在輔助存儲器中的地址。調出標誌可以包括修改位、引用位、禁止緩存位和訪問位,用來跟蹤頁的使用。當一個頁被修改後,硬體自動設置修改位,一旦修改位被設置,當該頁被調出主存時必須重新被寫回輔存。引用位則在該頁被引用時設置,無論是都或寫,它的值被用來幫助作業系統進行頁面淘汰。禁止緩存位可以禁止該頁被緩存,這一特性對於那些正在與外設進行數據交換的頁面時非常重要的。訪問位則限定了該頁允許什麼樣的訪問,讀、寫和執行。
II、將頁表的一部分放入一個專用的高速存儲器,形成快表。這個存儲器的訪問速度比主存的訪問速度要快很多。程序訪問數據時,首先訪問快表,如果命中則直接讀取,如果缺失,再去訪問主存。頁表中放的都是常用的數據頁面,以保證較高的命中率,這樣可以提高存取速度。例如,訪問主存的時間為200毫微秒,訪問快表的時間為40毫微秒,快表的命中率可達90%,於是按邏輯地址進行存取的平均時間為(200+40)×90%+(200+200)×10%=256毫微秒比兩次訪問主存的時間200毫微秒×2=400毫微秒下降了36%3)存儲訪問方法如圖2所示I、邏輯地址包括選擇符和偏移,選擇符16位,其中最高的13位為索引,最低的第0位和第1位為保護位,另外第2位用來決定是全局描述符表GDT還是局部描述符表LDT。偏移為32位。
II、首先通過第2位判斷是全局描述符表還是局部描述符表,然後將選擇符的最低的3位清0,與描述符表的起始地址相加得到一個直接指向段描述符的指針,通過這個指針來查找出段描述符。
首先通過將偏移與段長度作比較,來檢查地址的有效性。如果無效,則產生異常,如果有效,就將其中的基址取出並與邏輯地址中的偏移相加形成線性地址。
III、32位的線性地址包括10位目錄號、10位頁表號以及12位的頁內偏移。
IV、首先從頁目錄基址寄存器中得到頁目錄的基地址,再使用線性地址中的目錄號在頁目錄中查找頁表,得到頁表的基地址,然後在頁表中通過頁表號來查找頁,得到頁的基地址,最後通過頁的基地址加上頁內偏移來得到物理地址,實現真正的數據訪問;4)缺頁的處理方法I、在虛擬存儲中,只有一部分頁面被調入主存,其他頁面放在輔存中。當主存中頁面訪問缺失時發生缺頁中斷,需要將頁面從輔存調入,如果此時主存已經沒有剩餘的空間,就必須通過頁面調度算法,將不用的頁面調出到輔存,然後再調入新的頁面;II、頁面調度採用時鐘頁面調度方法。首先在每個頁面上設置一個訪問標誌位,在頁面被調入主存時,該位被設置為0,如果被訪問過之後,該位被置為1。所有在主存中的頁面構成一個循環隊列,有一個指針指向某一個頁面,如圖3所示。當有頁面需要被換出時,首先檢查指針指向的頁面,如果標誌位為0,則將其換出,並把新頁插入這個位置,然後指針前移一個位置;否則如果標誌位為1,則將其清0,指針前移一個位置,繼續重複上述過程直到找到一個訪問位為0的頁面將其換出。這樣可以將近似的最近最少訪問的頁面換出,流程見圖4。
本Java作業系統軟體已經向中華人民共和國版權局申請計算機軟體著作權登記。
權利要求
1.一種Java作業系統中段頁式虛擬存儲系統的實現方法,其特徵在於1)分段方法I、Java作業系統為用戶作業中需要放入主存的每一段分配一塊連續的存儲空間,並且建立局部描述符表和全局描述符表;II、一個段描述符由8個字節構成,包括段基址、長度、G、D、O、P、DPL、S和A位;2)段內分頁方法I、Java作業系統將段內存儲空間分成大小相等的頁,並建立頁表來實現頁面的訪問;II、將頁表的一部分放入一個專用的高速存儲器,形成快表,程序訪問數據時,會先訪問快表,只有當訪問快表沒有命中時,才會訪問主存,這樣可以提高存取速度;3)存儲訪問方法I、邏輯地址包括選擇符和偏移;II、通過邏輯地址中的選擇符在描述符表中查找相應的描述符,其中基址與邏輯地址中的偏移一起形成線性地址;III、線性地址包括頁目錄號、頁表號以及頁內偏移;IV、首先使用線性地址中的頁目錄號在頁目錄中查找頁表,然後在頁表中通過頁表號來查找頁,最後通過頁內偏移來得到物理地址,實現真正的數據訪問;4)缺頁的處理方法I、當主存中頁面訪問缺失時發生缺頁中斷,需要將頁面換出,並通過頁面調度調入新的頁面;II、頁面調度採用時鐘頁面調度方法,通過循環檢測訪問位來查找最近最少訪問的頁面進行換出。
全文摘要
本發明公開了一種Java作業系統中段頁式虛擬存儲系統的實現方法。這種方法採用先分段,然後在段內分頁來實現了在Java作業系統中的存儲系統管理。這種方法使得Java程序可以在足夠大的虛擬空間上運行,不但可以保證每一段擁有完整邏輯意義,又能夠儘量減少內存碎片的產生。本發明對於面向嵌入式系統的Java作業系統,有重大的意義。
文檔編號G06F12/08GK1794209SQ20061004913
公開日2006年6月28日 申請日期2006年1月17日 優先權日2006年1月17日
發明者陳天洲, 戴鴻君, 田曉帆, 黃彧 申請人:浙江大學