[發明專利]面向EVP的跨Guest OS進程間通信方法及系統有效
| 申請號: | 201710578521.9 | 申請日: | 2017-07-14 |
| 公開(公告)號: | CN107368379B | 公開(公告)日: | 2020-07-10 |
| 發明(設計)人: | 王斌;李偉民;王凱;王露鵬 | 申請(專利權)人: | 中南大學 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F12/02;G06F12/0871;G06F12/1009;G06F9/50 |
| 代理公司: | 長沙朕揚知識產權代理事務所(普通合伙) 43213 | 代理人: | 何湘玲 |
| 地址: | 410083 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 面向 evp guest os 進程 通信 方法 系統 | ||
1.一種面向EVP的跨Guest OS進程間通信方法,其特征在于,包括:
初始化:1、將EVP的地址空間劃分為四大部分,分別為代碼和數據地址空間、IO映射空間、進程間通信專用緩沖區空間和中斷向量表空間;所述代碼和數據地址空間存儲EVP的實現代碼、各種數據結構、以及映射用一級頁表和相關二級頁表;所述IO映射空間用于實現外設的訪問;所述進程間通信專用緩沖區空間作為數據緩沖區為進程間數據傳輸提供服務;所述中斷向量表空間存儲設置好的中斷向量表,用于異常、中斷發生時,系統可以跳轉到對應的中斷處理函數處執行;2、EVP將運行權交給Guest OS,用EVP頁表中特定的頁表項覆蓋掉Guest OS進程相應的頁表條目,完成EVP與Guest OS之間的地址空間的共享;
針對“寫進程”和“讀進程”分屬于不同Guest OS的情況,跨Guest OS進程間通信方法包括:
寫進程在自身用戶地址空間中分配數據發送緩沖區,向其中寫入將要發送給讀進程的數據;
寫進程通過系統調用在EVP的進程間通信緩沖區中分配緩沖區,將通信數據從所述自身用戶地址空間緩沖區中拷貝至剛分配的EVP緩沖區中;
讀進程通過系統調用在其自身用戶地址空間中分配一段連續的虛擬地址空間,并計算分配給寫進程的EVP緩沖區對應的物理地址空間,建立所述EVP緩沖區與讀進程自身用戶地址空間之間的映射關系,以通過訪問自身用戶地址空間來讀取跨Guest OS寫進程所發送的數據。
2.根據權利要求1所述的面向EVP的跨Guest OS進程間通信方法,其特征在于,在通過訪問自身用戶地址空間來讀取跨Guest OS寫進程所發送的數據的過程中,還包括:
為每個數據通道創建并維護一個IPC對象,以在整個跨Guest OS進程間通信的數據交互過程中,負責管理通信相關的所有資源,控制和協調通信雙方進程的數據讀寫操作。
3.根據權利要求2所述的面向EVP的跨Guest OS進程間通信方法,其特征在于,所述IPC對象的數據結構如下:
其中,index是一個無符號32位整數,EVP中所有的IPC對象以一維數組的形式被組織成資源池,index記錄當前結構體在一維數組中的下標索引,該變量一經初始化便不再改變;
變量key是一個有符號32位整數,作為IPC對象的唯一標識,相當于該結構體的名字,系統保證IPC對象key的唯一性,通信雙方進程通過該變量來唯一標識其擁有的xevm_ipc資源;
creater_guest_os和creater_process_id均是32位整數,creater_guest_os指明寫進程所屬的Guest OS,creater_process_id指明寫進程在所屬Guest OS中的進程ID;
使用reader_guest_os指明讀進程所屬的Guest OS,reader_process_id指明讀進程在所屬Guest OS中的進程ID;
無符號32位整數buffer_size表示當前IPC對象管理的緩沖區大小;
write_ptr和read_ptr均為無符號32位整數,分別為寫指針和讀指針,寫指針指示緩沖區中下一個可寫的字節位置,讀指針指示緩沖區中下一個可讀的字節位置,結合這兩個變量,實現對緩沖區讀寫操作的控制;
無符號32位整數total_bytes記錄當前緩沖區中存儲數據的總字節數,通過該變量判斷緩沖區是處于空閑狀態還是載滿狀態;
reference_count是一個無符號32位整數,該變量指示目前正在使用該對象進行數據交互的進程數,初始值為0,通信通道成功建立之后為2,雙方進程調用釋放對象的系統調用時,如果該變量為0,系統則回收所有的通信資源;
is_reading是一個無符號32位整數,該變量指示當前IPC對象指定的讀進程是否正在進行讀操作;
buffer是指向virtual_page結構體的指針,被當前IPC對象管理的雙方進程使用該virtual_page描述的內存頁面進行數據的讀寫;
reader_user_space_address是一個無符號32位整數,存儲讀進程為完成跨態地址映射而在其用戶空間中分配的頁面的起始地址;
list是EVP中實現的雙向循環鏈表,通過該變量,IPC對象或被鏈接到空閑鏈表中,或被鏈接到已分配鏈表中;
struct sem_t是EVP中實現的信號量,sem變量實現通信雙方進程對緩沖區的互斥訪問控制。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中南大學,未經中南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710578521.9/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:接線端子全自動復合倒角切斷裝置
- 下一篇:一種路徑可調節V型口加工工裝





