專利名稱:一種多個操作系統訪問存儲介質的方法、計算機的制作方法
技術領域:
本發明涉及多核處理領域,尤其涉及一種多個操作系統訪問存儲介質的方法、計算機。
背景技術:
隨著計算機技術的不斷發展,出現了多核處理器技術,多核處理器整合多核低頻率的處理核心并行工作,可以保證多任務并發處理,同時由于每個處理核心主頻較低,可以降低處理器的功耗和發熱,已經被廣泛應用于網絡技術、并行計算、嵌入式系統等多個計算機領域。為了最大程度的發揮多核處理器的性能,需要在多個處理核心上部署分層軟件結構,包括控制層面數據層面。其中控制層面運行在通用操作系統上,數據層面運行在嵌入式系統或者不含文件系統的操作系統上。通用操作系統包含文件系統,可以使用各類第三方軟件,用于管理多核處理器以及與各類外圍擴展設備互聯,嵌入式操作系統具有較高的實時性,可以高效的完成數據處理,但是不包含文件系統,不能運行第三發軟件,無法直接訪問其他的外圍設備。因此,當多核處理器與磁盤陣列互聯時,只有運行于控制層面的包含文件系統的通用操作系統可以通過文件系統連接、掛載、訪問磁盤陣列,而運行于數據層面的嵌入式系統無法訪問磁盤陣列。
發明內容
針對上述問題,本發明實施例提出一種多個操作系統訪問存儲介質的方法、計算機。在第一方面,本發明實施例提出一種多個操作系統訪問存儲介質的方法,所述多個操作系統運行在一顆多核處理器上,每個操作系統使用一個或多個處理核心,每個操作系統使用的處理核心互不相同,各個操作系統之間使用核間消息通訊,所述操作系統包含或不包含文件系統,包含文件系統的操作系統訪問存儲介質,將讀取的數據寫入不含文件系統的操作系統管理的內存空間,所述不含文件系統的操作系統通過所述內存空間接收和存儲所述數據。在第二方面,本發明實施例提出一種計算機,所述計算機包含多個操作系統,所述多個操作系統運行在一顆多核處理器上,每個操作系統使用一個或多個處理核心,每個操作系統使用的處理核心互不相同,各個操作系統之間使用核間消息通訊,所述操作系統包含或不包含文件系統,所述包含文件系統的操作系統用于訪問存儲介質,將讀取的數據寫入不含文件系統的操作系統管理的內存空間,所述不含文件系統的操作系統用于通過所述內存空間接收和存儲所述數據。本發明實施例通過共享文件系統,實現了多個操作系統共享存儲介質,有效提高了存儲介質的讀取效率。
圖1是本發明實施例多個操作系統共享文件系統讀取存儲介質的示意圖;圖2是本發明實施例數據寫入運行流程圖;圖3是本發明實施例數據發送運行流程圖;圖4是本發明實施例數據接收運行流程圖。
具體實施例方式下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。實施例選用Cavium Networks公司的OCTEON系列處理器平臺。使用Linux操作系統作為本發明中的包含文件系統的操作系統,提供文件系統以連接、讀取存儲介質,使用Cavium Networks公司提供的簡單執行環境SE (Simple Executive)作為本發明中的不含文件系統的操作系統,提供共享內存和傳輸內存。Linux操作系統108和簡單執行環境SE (Simple Executive) 126所運行的處理核心互不相交,且這2個操作系統分別管理獨立、不重疊的內存空間。其中Linux操作系統108可運行在處理器的一個或多個處理核心上,通過文件系統102連接存儲介質101,同時運行數據寫入模塊105和數據發送模塊115。數據寫入模塊負責建立共享數據隊列111,通過文件系統102讀取存儲介質101中的數據,將數據寫入共享數據隊列111中單元結構體110包含的共享內存116。數據發送模塊115負責讀取共享數據隊列111中單元結構體110包含的共享內存116,并將數據寫入傳輸內存125,發送給簡單執行環境 SE (Simple Executive) 126。簡單執行環境SE (Simple Executive) 126可運行在處理器的一個或多個處理核心上,提供共享內存121和傳輸內存125,并運行數據接收模塊124。數據接收模塊124負責維護傳輸內存125和共享內存121,并相應Linux操作系統108的核間消息,由傳輸內存125中讀取數據。Linux操作系統108向簡單執行環境SE (Simple Executive) 126傳輸數據的步驟是步驟201、Linux操作系統108通過文件系統102連接存儲介質101。步驟202、數據寫入模塊105向簡單執行環境SE (Simple Executive)126發送核間消息申請共享內存121。步驟401、數據接收模塊124讀取核間消息。步驟403、數據接收模塊124確認為Linux操作系統108申請共享內存121的核間消息。步驟406、數據接收模塊124分配共享內存121,并將共享內存121的物理地址通過核間消息返回給Linux操作系統108。步驟203、數據寫入模塊105解析核間消息中的共享內存121物理地址,將物理地址存入共享數據隊列111中的單元結構體110。步驟204、數據寫入模塊124判斷共享數據隊列111中單元結構體110的數量是否為N,如果為N則表示共享數據隊列111建立完成,可以進行下一步驟,否則返回執行步驟202。
步驟205、數據寫入模塊124根據寫指針107定位到對應的單元結構體110,如果該單元結構體110中的共享內存加鎖位118為0,則表示單元結構體110中的共享內存121可以寫入數據,否則重復執行步驟205。步驟206、數據寫入模塊124通過文件系統102從存儲介質101中讀取數據。步驟207、數據寫入模塊124將數據寫入共享內存121。步驟208、數據寫入模塊124將共享內存加鎖位118設置為I。步驟209、數據寫入模塊124將寫指針107指向下一個單元結構體110,并重復執行步驟205。步驟301、數據發送模塊115等待數據寫入模塊105完成共享數據隊列111的建立。步驟302、數據發送模塊115根據讀指針109定位到對應的單元結構體110,如果該單元結構體110中的共享內存加鎖位118為I,則表示單元結構體110中的共享內存121可以讀出數據,否則重復執行步驟302。步驟303、數據發送模塊115向簡單執行環境SE (Simple Executive)126發送核間消息122申請傳輸內存125。步驟401、數據接收模塊124讀取核間消息。步驟404、數據接收模塊124確認為Linux操作系統108申請傳輸內存125的核間消息。步驟407、數據接收模塊124分配傳輸內存125,并將傳輸內存125的物理地址通過核間消息返回給Linux操作系統108。步驟304、數據發送模塊115解析核間消息中的傳輸內存125物理地址。步驟305、數據發送模塊115讀取單元結構體110中共享內存121中的數據。步驟306、數據發送模塊115將數據復制到傳輸內存125中。步驟307、數據發送模塊115發送核間消息122通知簡單執行環境SE (SimpleExecutive) 126 接收數據。步驟308、數據發送模塊115將共享內存加鎖位118設置為O。步驟309、數據發送模塊115將讀指針109指向下一個單元結構體110,并重復執行步驟302。步驟405、數據接收模塊124確認為Linux操作系統108返回傳輸內存125的核間消息,并解析核間消息中傳輸內存的物理地址。步驟408、數據接收模塊124讀取傳輸內存125中的數據,釋放傳輸內存125,重復執行步驟401。本發明實施例通過共享文件系統,實現了多個操作系統共享存儲介質,有效提高了存儲介質的讀取效率。需要指出的是,以上所述僅為本發明在多核處理器上多操作系統通過共享文件系統讀取存儲介質方法的較佳實施例,并非用來限定本發明的實施范圍,具有專業知識基礎的技術人員可以由以上實施實例實現本發明,因此凡是根據本發明的精神和原則之內所做的任何的變化、修改與改進,都被本發明的專利范圍所覆蓋。最后所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,盡管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明技術方案的精神和范圍。
權利要求
1.一種多個操作系統訪問存儲介質的方法,所述多個操作系統運行在一顆多核處理器上,其特征在于每個操作系統使用一個或多個處理核心,每個操作系統使用的處理核心互不相同,各個操作系統之間使用核間消息通訊,所述操作系統包含或不包含文件系統,包含文件系統的操作系統訪問存儲介質,將讀取的數據寫入不含文件系統的操作系統管理的內存空間,所述不含文件系統的操作系統通過所述內存空間接收和存儲所述數據。
2.如權利要求1所述的一種多個操作系統訪問存儲介質的方法,其特征在于包含文件系統的操作系統建立共享數據隊列,共享數據隊列由單元結構體鏈表構成,單元結構體包含共享內存物理地址、共享內存加鎖位、指向下一個單元結構體的指針,所述共享內存由傳送數據的包含文件系統的操作系統向接收數據的不含文件系統的操作系統申請。
3.如權利要求2所述的一種多個操作系統訪問存儲介質的方法,其特征在于由包含文件系統的操作系統發起數據傳輸,將共享數據隊列中共享內存的數據拷貝至不含文件系統的操作系統提供的傳輸內存,以及通知所述不含文件系統的操作系統讀取所述數據。
4.如權利要求2-3之一所述的一種多個操作系統訪問存儲介質的方法,其特征在于所述包含文件系統的操作系統傳輸數據包含以下步驟 通過核間消息向不含文件系統的操作系統申請共享內存,將共享內存物理地址存入共享數據隊列; 使用寫指針輪詢所述共享數據隊列,寫指針指向所述共享數據隊列的首部或者上一次輪詢結束時寫指針的位置,向加鎖位為O的共享內存中寫入數據,寫入后將該加鎖位設置為1,將寫指針指向下一個單元結構體并重復上述寫入過程,當訪問到加鎖位為I的單元結構體時結束所述輪詢,所述加鎖位為O表示該共享內存未寫入數據或者寫入的數據已經傳遞完畢,所述加鎖位為I表示該共享內存已經寫入數據或者寫入的數據傳遞尚未完畢; 使用讀指針輪詢共享數據隊列,讀指針指向所述共享數據隊列的首部或者上一次輪詢結束時讀指針的位置,如果加鎖位為1,向不含文件系統的操作系統申請傳輸內存,將共享內存中的數據拷貝至傳輸內存,通知不含文件系統的操作系統讀取數據,拷貝后將加鎖位設置為O,將讀指針指向下一個單元結構體并重復上述讀取過程,當訪問到加鎖位為I的單元結構體時結束所述輪詢。
5.根據權利要求2-3之一所述的一種多個操作系統訪問存儲介質的方法,其特征在于不含文件系統的操作系統接收數據的步驟為 響應包含文件系統的操作系統申請傳輸內存的核間消息,并將傳輸內存的物理地址返回給所述包含文件系統的操作系統; 響應包含文件系統的操作系統的數據傳輸核間消息,從傳輸內存中讀取數據,并釋放傳輸內存。
6.一種計算機,所述計算機包含多個操作系統,所述多個操作系統運行在一顆多核處理器上,其特征在于每個操作系統使用一個或多個處理核心,每個操作系統使用的處理核心互不相同,各個操作系統之間使用核間消息通訊,所述操作系統包含或不包含文件系統,所述包含文件系統的操作系統用于訪問存儲介質,將讀取的數據寫入不含文件系統的操作系統管理的內存空間,所述不含文件系統的操作系統用于通過所述內存空間接收和存儲所述數據。
7.如權利要求6所述的一種計算機,其特征在于所述包含文件系統的操作系統包括 共享數據隊列建立模塊,用于建立共享數據隊列,所述共享數據隊列由單元結構體鏈表構成,單元結構體包含共享內存物理地址、共享內存加鎖位、指向下一個單元結構體的指針,所述共享內存由傳送數據的包含文件系統的操作系統向接收數據的不含文件系統的操作系統申請; 數據寫入模塊,用于通過核間消息向不含文件系統的操作系統申請共享內存,將共享內存物理地址存入共享數據隊列,以及使用寫指針輪詢所述共享數據隊列,寫指針指向所述共享數據隊列的首部或者上一次輪詢結束時寫指針的位置,向加鎖位為O的共享內存中寫入數據,寫入后將該加鎖位設置為1,將寫指針指向下一個單元結構體并重復上述寫入過程,當訪問到加鎖位為I的單元結構體時結束所述輪詢,所述加鎖位為O表示該共享內存未寫入數據或者寫入的數據已經傳遞完畢,所述加鎖位為I表示該共享內存已經寫入數據或者寫入的數據傳遞尚未完畢; 數據發送模塊,用于使用讀指針輪詢共享數據隊列,讀指針指向所述共享數據隊列的首部或者上一次輪詢結束時讀指針的位置,如果加鎖位為1,向不含文件系統的操作系統申請傳輸內存,將共享內存中的數據拷貝至傳輸內存,通知不含文件系統的操作系統讀取數據,拷貝后將加鎖位設置為O,將讀指針指向下一個單元結構體并重復上述讀取過程,當訪問到加鎖位為I的單元結構體時結束所述輪詢。
8.如權利要求6所述的一種計算機,其特征在于所述不含文件系統的操作系統包括 數據接收模塊,用于響應包含文件系統的操作系統申請傳輸內存的核間消息,并將傳輸內存的物理地址返回給所述包含文件系統的操作系統,以及響應包含文件系統的操作系統的數據傳輸核間消息,從傳輸內存中讀取數據,并釋放傳輸內存。
全文摘要
本發明實施例涉及一種多個操作系統訪問存儲介質的方法、計算機。所述多個操作系統運行在一顆多核處理器上,每個操作系統使用一個或多個處理核心,每個操作系統使用的處理核心互不相同,各個操作系統之間使用核間消息通訊,所述操作系統包含或不包含文件系統,包含文件系統的操作系統訪問存儲介質,將讀取的數據寫入不含文件系統的操作系統管理的內存空間,所述不含文件系統的操作系統通過所述內存空間接收和存儲所述數據。本發明實施例通過共享文件系統,實現了多個操作系統共享存儲介質,有效提高了存儲介質的讀取效率。
文檔編號G06F15/167GK103034616SQ20121052650
公開日2013年4月10日 申請日期2012年12月7日 優先權日2012年12月7日
發明者郭秀巖, 張武, 尚秋里, 王勁林 申請人:中國科學院聲學研究所, 北京中科智網科技有限公司