一種進程間共享數據的方法、裝置及終端的制作方法

            文檔序號:10512016閱讀:214來源:國知局
            一種進程間共享數據的方法、裝置及終端的制作方法
            【專利摘要】本申請公開一種進程間共享數據的方法、裝置及終端,本申請將虛擬i/o設備分別映射至第一進程和第二進程的虛擬地址空間中,第一目標地址空間和第二目標地址空間相同;若第一進程需要共享數據,第一進程向操作系統傳輸內存分配請求,操作系統分配內存塊,將內存塊映射到第一目標地址空間,將內存塊的信息和第一目標地址空間的第一地址段與內存塊的映射關系存儲至頁表管理模塊中。第二進程訪問第一地址段中的虛擬地址,觸發操作系統產生訪問異常,指示虛擬i/o設備執行異常處理例程,將內存塊映射至所述第二進程,以便第二進程能夠訪問內存塊。本申請不需要預先分配共享內存,而在需要共享數據時,才由第一進程觸發系統分配內存塊,提高內存的利用效率。
            【專利說明】
            一種進程間共享數據的方法、裝置及終端
            技術領域
            [0001]本申請涉及共享內存技術領域,尤其涉及一種進程間共享數據的方法、裝置及終端。
            【背景技術】
            [0002]現有的操作系統經常需要多個進程并行完成工作,每個進程都無法直接獲取其他進程中的數據,因此通常利用共享內存實現不同進程之間的數據共享。
            [0003]在傳統技術中,如果利用共享內存實現不同進程之間的數據共享,需要預先分配多個進程均可訪問的內存,即共享內存,當不同進程間需要共享數據時,由其中一個進程將需要共享的數據存儲至所述共享內存中,其他各個進程可通過訪問所述共享內存,獲取需要共享的數據。其中,分配共享內存的方法通常包括以下步驟:首先,選擇其中一個進程作為第一進程,由第一進程向系統申請一個內存塊,并將該內存塊映射到所述第一進程的虛擬地址空間中;然后,第一進程向其他各個進程發送映射通知,所述映射通知中包含有所述內存塊的地址和大小等信息;其他各個進程通過解析所述映射通知,獲取其中包含的信息,并將該內存塊映射到各個進程的虛擬地址空間中,完成分配。映射指的是,將內存或者設備寄存器等和地址關聯起來的動作。上述將內存塊映射到進程的虛擬地址空間,需要預先由操作系統通過內存控制器為內存塊配置一個虛擬地址,并建立所述內存塊的虛擬地址與該內存塊的物理地址轉換的表項,該表項通常被稱為TLB (Translat1n Look-aside Buffer,轉換后援緩沖器)表項,然后,建立所述內存塊的虛擬地址和進程的虛擬地址之間的關聯,從而完成內存塊到進程的虛擬地址空間的映射。在內存塊映射到進程的虛擬地址空間后,進程可通過所述TLB表項,以及該內存塊的虛擬地址和進程的虛擬地址之間的關聯,確定所述內存塊的物理地址,根據該物理地址實現對所述內存塊的訪問。內存分配完成后,所述內存塊成為共享內存。若其中一個進程向共享內存中存入數據,該進程會向其他各個進程發送共享通知,其他各個進程接收到所述共享通知后,若需要獲取所述數據,則可通過訪問共享內存,獲取所述共享內存中的數據,實現數據在進程間的共享。
            [0004]通過上述方法,能夠通過共享內存實現不同進程之間的數據共享。但是,發明人發現,上述實現不同進程間數據共享的方法,共享內存需要預先創建,難以實時調整大小,而創建后的共享內存往往存在過大或過小的問題,不符合進程共享數據的需求,導致內存資源的使用效率低。例如,若預先創建的共享內存過大,會造成共享內存的浪費,甚至導致內存使用緊張;若預先創建的共享內存過小,則不能滿足進程共享數據的需求。

            【發明內容】

            [0005]本發明實施例提供了一種進程間共享數據的方法、裝置及終端,以一定程度上改善傳統技術中,通過共享內存實現不同進程之間的數據共享時,內存資源的使用效率低的問題。
            [0006]為了解決上述技術問題,本發明實施例公開了如下技術方案:
            [0007]根據本公開實施例的第一方面,提供一種進程間共享數據的方法,包括:
            [0008]在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同;
            [0009]將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0010]檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常;
            [0011]基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0012]結合第一方面,在第一方面的第一種可能的實現方式中,在所述第二進程獲取所述內存塊中存儲的數據后,還包括:
            [0013]將所述內存塊從所述第一目標地址空間中去映射;
            [0014]將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中;
            [0015]或者,
            [0016]將所述內存塊從所述第二進程的虛擬地址空間中去映射;
            [0017]確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。
            [0018]結合第一方面,在第一方面的第二種可能的實現方式中,所述指示所述虛擬i/o設備執行異常處理例程之前,還包括:
            [0019]判斷所述第二進程是否具備所述內存塊的訪問權限;
            [0020]基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。
            [0021]根據本公開實施例的第二方面,提供一種進程間共享數據的方法,應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,所述進程間共享數據的方法包括:
            [0022]接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0023]獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息;
            [0024]根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0025]根據本公開實施例的第三方面,提供一種進程間共享數據的裝置,包括:
            [0026]虛擬i/o設備映射模塊,用于在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同;
            [0027]內存塊映射模塊,用于將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0028]訪問異常檢測模塊,用于檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常;
            [0029]指示模塊,用于基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0030]結合第三方面,在第三方面的第一種可能的實現方式中,所述進程間共享數據的裝置還包括:
            [0031]第一去映射模塊,用于將所述內存塊從所述第一目標地址空間中去映射;
            [0032]第一映射模塊,用于將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中;
            [0033]或者,
            [0034]第二去映射模塊,用于將所述內存塊從所述第二進程的虛擬地址空間中去映射;
            [0035]第二映射模塊,用于確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。
            [0036]結合第三方面,在第三方面的第二種可能的實現方式中,所述進程間共享數據的裝置還包括:
            [0037]判斷模塊,用于指示所述虛擬i/o設備執行異常處理例程之前,判斷所述第二進程是否具備所述內存塊的訪問權限;
            [0038]所述指示模塊還用于,基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。
            [0039]根據本公開實施例的第四方面,提供一種進程間共享數據的裝置,其特征在于,應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,所述進程間共享數據的裝置包括:
            [0040]指示接收模塊,用于接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0041]內存塊信息獲取模塊,用于獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息;
            [0042]第二進程映射模塊,用于根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0043]根據本公開實施例的第五方面,提供一種終端,包括:處理器、存儲器和總線,其中,
            [0044]所述處理器通過總線,與所述存儲器相連接;
            [0045]所述存儲器,用于存儲進程間共享數據的方法的程序代碼;
            [0046]所述處理器,用于獲取所述存儲器中存儲的程序代碼,并根據所述程序代碼執行以下操作:
            [0047]在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同;
            [0048]將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0049]檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常;
            [0050]基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0051]根據本公開實施例的第六方面,提供一種終端,包括:處理器、存儲器和總線,其中,
            [0052]所述處理器通過總線,與所述存儲器相連接;
            [0053]所述存儲器,用于存儲進程間共享數據的方法的程序代碼;
            [0054]所述處理器,用于獲取所述存儲器中存儲的程序代碼,并根據所述程序代碼執行以下操作:
            [0055]生成由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,
            [0056]所述虛擬i/o設備接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0057]所述虛擬i/o設備獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息;
            [0058]所述虛擬i/o設備根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0059]本申請公開一種進程間共享數據的方法、裝置及終端,本申請中,預先由操作系統創建虛擬i/o設備,并且將虛擬i/o設備分別映射至第一進程的虛擬地址空間和第二進程的虛擬地址空間中,并且所述虛擬i/o設備占用的第一目標地址空間和第二目標地址空間相同。當第一進程需要共享數據時,所述第一進程向所述操作系統傳輸內存分配請求,所述操作系統根據所述內存分配請求分配內存塊,并將所述內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中。若第二進程需要獲取所述內存塊中存儲的數據,所述第二進程會訪問所述第一地址段中的虛擬地址,觸發所述操作系統產生訪問異常。若所述操作系統產生訪問異常,會指示所述虛擬i/o設備執行異常處理例程,從而將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據,該內存塊即成為共享內存。
            [0060]本申請公開方案,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發操作系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            【附圖說明】
            [0061]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其它的附圖。
            [0062]圖1為本發明公開的一種進程間共享數據的方法的實施例流程圖;
            [0063]圖2為本發明公開的一種進程間共享數據的方法中,進程將虛擬i/o設備映射至自身的地址空間后,進程的虛擬地址空間的示意圖;
            [0064]圖3為本發明公開的一種進程間共享數據的方法中,在將內存塊映射到第一進程的虛擬i/o設備占用的地址空間后,第一進程的虛擬地址空間的示意圖;
            [0065]圖4為本發明公開的一種進程間共享數據的方法中,在第二進程中映射內存塊后,第一進程的虛擬地址空間和第二進程的虛擬地址空間的示意圖;
            [0066]圖5為本發明公開的一種進程間共享數據的方法中,第一進程和第二進程對內存塊去映射后,第一進程和第二進程的地址空間的示意圖;
            [0067]圖6為本發明公開的又一種進程間共享數據的方法的實施例流程圖;
            [0068]圖7為本發明公開的一種進程間共享數據的裝置的結構示意圖;
            [0069]圖8為本發明公開的又一種進程間共享數據的裝置的結構示意圖;
            [0070]圖9為本發明公開的一種終端的結構示意圖;
            [0071]圖10為本發明公開的又一種終端的結構示意圖。
            【具體實施方式】
            [0072]本申請實施例提供一種進程間共享數據的方法、裝置及終端,以一定程度上改善傳統技術中,通過共享內存實現不同進程之間的數據共享時,內存資源的使用效率低的問題。
            [0073]為了使本領域的技術人員更好地理解本發明實施例中的技術方案,并使本發明實施例的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對本發明實施例中技術方案作進一步詳細的說明。
            [0074]本申請公開一種進程間共享數據的方法,應用該方法的操作系統中的CPU讀取多個應用程序的程序代碼,生成多個進程,其中,所述程序代碼存儲在存儲器中,并且,至少有兩個進程之間有共享數據的需求。本申請中,為簡明起見,僅以兩個進程(即第一進程和第二進程)為例進行說明。
            [0075]操作系統除了能夠生成多個進程,還創建了虛擬i/o設備和頁表管理模塊。其中,所述虛擬i/o設備為一個虛擬的設備驅動模塊,所述頁表管理模塊用于存儲系統分配的各個內存塊的信息等。
            [0076]參見圖1所示的工作流程示意圖,本申請公開的進程間共享數據的方法包括:
            [0077]步驟S11、在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同。
            [0078]虛擬i/o設備為一個虛擬的設備驅動模塊,將虛擬i/o設備映射到進程的虛擬地址空間,指的是將虛擬i/o設備與進程的虛擬地址空間中的一個地址段關聯起來,建立所述虛擬i/o設備與該地址段的映射關系,所述映射關系通常存儲至頁表管理模塊中。其中,所述進程的虛擬地址空間中,與所述虛擬i/o設備存在映射關系的地址段,指的是所述虛擬i/o設備占用的虛擬地址空間。
            [0079]參見圖2,圖2為將虛擬i/o設備映射至所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間后,第一進程的虛擬地址空間和第二進程的虛擬地址空間的示意圖。在將所述虛擬i/o設備映射到第一進程的虛擬地址空間和第二進程的虛擬地址空間中時,通常會將所述虛擬i/o設備所占用的虛擬地址空間,設置為所述第一進程和第二進程最大可能使用的共享內存的虛擬地址空間。例如,預先設定所述第一進程最大可能使用IGigabyte的共享內存,則所述第一進程會將虛擬i/o設備映射到IGigabyte的虛擬地址空間中。
            [0080]另外,在本申請中,第一目標地址空間和第二目標地址空間相同,指的是所述虛擬i/o設備在第一進程中占用的虛擬地址空間,和所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間相同。例如,虛擬i/o設備與第一進程的虛擬地址空間中(0x00100000,OxOOBOOOOO)這一地址段存在映射關系,則所述虛擬i/o設備在第二進程的虛擬地址空間中占用的地址段也為(0x00100000,OxOOBOOOOO),也就是說,所述虛擬i/o設備與第二進程的虛擬地址空間中(0x00100000,OxOOBOOOOO)這一地址段也存在映射關系。
            [0081]步驟S12、將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據。
            [0082]當需要共享數據時,第一進程會觸發操作系統,操作系統根據所述第一進程的觸發,為所述第一進程分配內存塊。在將所述內存塊映射到所述第一目標地址空間之后,第一進程則可以向所述內存塊中寫入數據。
            [0083]在將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間后,所述第一進程的虛擬地址空間的示意圖如圖3所示,該圖中,假設操作系統為所述第一進程分配的內存塊為第二個內存塊,并且,將所述第二個內存塊映射到所述第一目標地址空間中。
            [0084]另外,需要將所述內存塊的信息存儲至操作系統預先創建的頁表管理模塊中。其中,所述內存塊的信息包括:所述內存塊的地址和大小,所述內存塊的地址可以為所述內存塊的起始地址,或者,為所述內存塊的開始地址或結束地址,并且,所述內存塊的地址包括虛擬地址和物理地址兩種類型。
            [0085]步驟S13、檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常。
            [0086]虛擬i/o設備為一個虛擬的設備驅動模塊,若將虛擬i/o設備映射到進程的虛擬地址空間中,并不會占用實際的內存。若虛擬i/o設備映射的某一進程的虛擬地址空間沒有對應實際的內存頁面,該進程在訪問所述虛擬i/o設備映射的所述虛擬地址空間時,操作系統會產生訪問異常。
            [0087]在步驟S12中,將所述內存塊映射至第一目標地址空間中,并且,所述第一目標地址空間中的第一地址段與所述內存塊存在映射關系。所述內存塊中存儲有所述第一進程寫入的數據之后,若第二進程需要共享該數據,則所述第二進程需要訪問所述第一地址段中的虛擬地址。
            [0088]其中,所述第二進程可通過多種方式獲取所述第一地址段這一虛擬地址。在其中一種方式中,所述第一進程將需要共享的數據存儲至所述內存塊后,產生通知信息,所述通知信息中包含與所述內存塊存在映射關系的虛擬地址,即第一地址段,并且,所述第一進程直接將所述通知信息傳輸給第二進程,或通過其他進程將所述通知信息轉發給第二進程。所述第二進程接收到所述通知信息后,對所述通知信息進行解析,即可獲取所述第一地址段。
            [0089]在另外一種方式中,通過對操作系統的預先操作,為操作系統中分布的各個內存塊設置相應次序,操作系統根據該次序依次為第一進程分配內存塊。例如,在上一次共享數據時,已經為所述第一進程分配了第一內存塊,那么本次在進程間共享數據時,操作系統在所述第一進程的觸發下,會為所述第一進程分配第二內存塊,這種情況下,第二進程能夠根據該次序,確定本次操作分配的是第二內存塊,進而根據預先存儲的映射關系,確定與所述第二內存塊具有映射關系的地址段,即第一地址段。
            [0090]當然,所述第二進程還可以通過其他方式確定所述第一地址段,以訪問所述第一地址段在第二進程中占用的虛擬地址空間,本申請對此不作限定。
            [0091]第二進程訪問所述第一地址段中的虛擬地址時,由于所述第二進程預先并未將與所述第一地址段具備映射關系的內存塊與實際的物理頁面建立映射,操作系統會產生訪問異常。
            [0092]步驟S14、基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0093]第二進程訪問所述第一地址段中的虛擬地址時,操作系統會產生訪問異常,并且產生訪問異常的虛擬地址為所述第一地址段在所述第二進程的虛擬地址空間中占用的虛擬地址。由于在本申請中,第一目標地址空間和第二目標地址空間相同,并且,所述第一地址段在所述第一進程中占用的虛擬地址屬于所述第一目標地址空間,則所述第一地址段在所述第二進程中占用的虛擬地址屬于所述第二目標地址空間,而所述第二目標地址空間為所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間,因此,操作系統會調用虛擬i/o設備的異常處理接口,指示所述虛擬i/o設備執行異常處理例程。
            [0094]在操作系統的指示下,所述虛擬i/o設備會執行異常處理例程。通過所述虛擬i/ο設備執行的異常處理例程,能夠將所述內存塊映射至所述第二進程。在映射完成后,所述第二進程能夠訪問所述內存塊,該內存塊即成為共享內存,所述第二進程通過訪問該共享內存,能夠獲取第一進程在所述內存塊中存儲的數據。
            [0095]所述虛擬i/o設備執行異常處理例程,將內存塊映射至第二進程的過程,可稱為缺頁中斷,所述虛擬i/o設備執行的操作對所述第二進程的執行流程來說是透明的。在內存塊映射至第二進程之后,所述第一進程的虛擬地址空間和第二進程的虛擬地址空間的示意圖如圖4所示。
            [0096]上述步驟Sll至步驟S14公開一種進程間共享數據的方法,該方法中,預先由操作系統創建虛擬i/o設備,并且將虛擬i/o設備分別映射至第一進程的虛擬地址空間和第二進程的虛擬地址空間中,其中所述虛擬i/o設備占用的第一目標地址空間和第二目標地址空間相同。當第一進程需要共享數據時,所述第一進程向所述操作系統傳輸內存分配請求,所述操作系統根據所述內存分配請求分配內存塊,將所述內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中。若第二進程需要獲取所述內存塊中存儲的數據,所述第二進程會訪問所述第一地址段中的虛擬地址,觸發所述操作系統產生訪問異常。若所述操作系統產生訪問異常,會指示所述虛擬i/o設備執行異常處理例程,從而將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據,該內存塊即成為共享內存。
            [0097]本申請公開的進程間共享數據的方法,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發操作系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0098]進一步的,本申請公開的進程間共享數據的方法還包括:
            [0099]在所述第二進程獲取所述內存塊中存儲的數據后,將所述內存塊從所述第一目標地址空間中去映射;
            [0100]將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中。
            [0101]若第一進程不再需要訪問所述內存塊,可將所述內存塊從所述第一目標地址空間中去映射。在去映射之前,所述第一目標地址空間中的第一地址段與所述內存塊存在映射關系,而在去映射之后,所述第一地址段與所述內存塊不再存在映射關系,并且,所述第一地址段也未與虛擬i/o設備建立映射,這種情況下,需要將所述虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中。
            [0102]或者,在所述第二進程獲取所述內存塊中存儲的數據后,將所述內存塊從所述第二進程的虛擬地址空間中去映射;
            [0103]確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。
            [0104]若第二進程不再需要訪問所述內存塊,可將所述內存塊從所述第二目標地址空間中去映射。在去映射之前,所述第二目標地址空間中的第二地址段與所述內存塊存在映射關系,而在去映射之后,所述第二地址段與所述內存塊不再存在映射關系,并且,所述第二地址段也未與虛擬i/o設備建立映射,這種情況下,需要將所述虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。
            [0105]在第一進程和第二進程不再需要訪問內存塊時,可將所述內存塊從占用的虛擬地址空間中去映射,并將所述虛擬i/o設備映射至去映射前與所述內存塊存在映射關系的地址段所指示的虛擬空間中。在將所述虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間,并且,在將所述虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間后,所述第一進程的虛擬地址空間和第二進程的虛擬地址空間如圖5所示,從而便于下次在進程間共享數據時,由操作系統重新為第一進程分配內存塊,并將重新分配的內存塊映射至第一目標地址空間中。
            [0106]另外,在去映射后,該內存塊不再作為共享內存,該內存塊被歸還所述操作系統,所述操作系統可通過該內存塊執行其他操作。
            [0107]進一步的,為了提高操作系統的穩定性,操作系統可預先為各個進程分配相應的訪問權限。這種情況下,在指示所述虛擬i/o設備執行異常處理例程之前,本申請公開的進程間共享數據的方法還包括:
            [0108]判斷所述第二進程是否具備所述內存塊的訪問權限;
            [0109]基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。
            [0110]操作系統在分配內存塊后,會存儲所述內存塊的相關信息,所述相關信息中包含有各個進程針對所述內存塊的訪問權限。其中,所述相關信息通常被存儲至所述操作系統預先創建的頁表管理模塊中。在產生訪問異常后,可通過查詢所述相關信息,判斷所述第二進程是否具備所述內存塊的訪問權限。
            [0111]若通過判斷結果,確定所述第二進程不具備所述內存塊的訪問權限,則不再指示所述虛擬i/o設備執行異常處理例程。只有在確定所述第二進程具備所述內存塊的訪問權限的情況下,才指示所述虛擬i/o設備執行異常處理例程的操作,從而提高了操作系統的穩定性。
            [0112]相應的,本申請還公開了一種進程間共享數據的方法,該方法應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同。其中,創建所述虛擬i/o設備的操作系統中的CPU通過讀取多個應用程序的程序代碼,生成多個進程,所述程序代碼存儲在存儲器中,并且,至少有兩個進程之間有共享數據的需求。本申請中,為簡明起見,僅以兩個進程(即第一進程和第二進程)為例進行說明。
            [0113]所述操作系統除了創建虛擬i/o設備以外,還創建了頁表管理模塊。其中,所述虛擬i/o設備為一個虛擬的設備驅動模塊,所述頁表管理模塊用于存儲系統分配的各個內存塊的信息。
            [0114]參見圖6所示的工作流程示意圖,所述進程間共享數據的方法包括:
            [0115]步驟S21、接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據。
            [0116]步驟S22、獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息。
            [0117]步驟S23、根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0118]本申請公開的進程間共享數據的方法中,在第一進程和第二進程初始化的過程中,會將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中。設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同。當第一進程需要向第二進程共享數據時,第一進程會觸發操作系統,操作系統根據所述第一進程的觸發,為所述第一進程分配內存塊。然后,將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊用于存儲被所述第一進程寫入的數據。第二進程在需要獲取所述內存塊中存儲的數據時,會訪問所述第一地址段中的虛擬地址,由于所述第二進程預先并未將與所述第一地址段具備映射關系的內存塊與實際的物理頁面建立映射,操作系統會產生訪問異常。
            [0119]所述操作系統在產生訪問異常時,產生訪問異常的虛擬地址為所述第一地址段在所述第二進程的虛擬地址空間中占用的虛擬地址。由于在本申請中,第一目標地址空間和第二目標地址空間相同,并且,所述第一地址段在所述第一進程中占用的虛擬地址屬于所述第一目標地址空間,則所述第一地址段在所述第二進程中占用的虛擬地址屬于所述第二目標地址空間,而所述第二目標地址空間為所述虛擬i/o設備再所述第二進程中占用的虛擬地址空間,因此,操作系統會調用虛擬i/o設備的異常處理接口,指示所述虛擬i/o設備執行異常處理例程。
            [0120]在操作系統的指示下,所述虛擬i/o設備會執行異常處理例程。所述虛擬i/o設備執行的異常處理例程包括:所述虛擬i/o設備獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息和所述映射關系,獲取所述內存塊的信息;然后,根據所述內存塊的信息,將所述內存塊映射至所述第二進程。
            [0121]通過所述虛擬i/o設備執行的異常處理例程,能夠將所述內存塊映射至所述第二進程。在映射完成后,所述第二進程能夠訪問所述內存塊,該內存塊即成為共享內存,所述第二進程通過訪問該共享內存,能夠獲取第一進程在所述內存塊中存儲的數據。
            [0122]本申請公開的進程間共享數據的方法,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發操作系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0123]相應的,本申請還公開一種進程間共享數據的裝置。參見圖7所示的結構示意圖,所述進程間共享數據的裝置包括:虛擬i/o設備映射模塊101、內存塊映射模塊102、訪問異常檢測模塊103和指示模塊104。
            [0124]其中,所述虛擬i/o設備映射模塊101,用于在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/ο設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同;
            [0125]所述內存塊映射模塊102,用于將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0126]所述訪問異常檢測模塊103,用于檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常;
            [0127]所述指示模塊104,用于基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0128]進一步的,所述進程間共享數據的裝置還包括:
            [0129]第一去映射模塊,用于將所述內存塊從所述第一目標地址空間中去映射;
            [0130]第一映射模塊,用于將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中;
            [0131]或者,
            [0132]第二去映射模塊,用于將所述內存塊從所述第二進程的虛擬地址空間中去映射;
            [0133]第二映射模塊,用于確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。
            [0134]進一步的,所述進程間共享數據的裝置還包括:
            [0135]判斷模塊,用于指示所述虛擬i/o設備執行異常處理例程之前,判斷所述第二進程是否具備所述內存塊的訪問權限;
            [0136]所述指示模塊還用于,基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。
            [0137]本申請公開的裝置,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0138]相應的,本申請還公開一種進程間共享數據的裝置,應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,參見圖8所示的結構示意圖,所述進程間共享數據的裝置包括:指示接收模塊201、內存塊信息獲取模塊202和第二進程映射模塊203。
            [0139]其中,所述指示接收模塊201,用于接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;其中,操作系統在將為所述第一進程分配的內存塊映射到第一目標地址空間中時,會建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系。
            [0140]所述內存塊信息獲取模塊202,用于獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息;
            [0141]所述第二進程映射模塊203,用于根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0142]本申請公開的裝置,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0143]本申請還公開一種終端,參見圖9所示的結構示意圖,所述終端包括:處理器11、存儲器12和總線13,其中,
            [0144]所述處理器11通過總線13,與所述存儲器12相連接;
            [0145]所述存儲器12,用于存儲進程間共享數據的方法的程序代碼;
            [0146]所述處理器11,用于獲取所述存儲器12中存儲的程序代碼,并根據所述程序代碼執行以下操作:
            [0147]在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同;
            [0148]將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0149]檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常;
            [0150]基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0151]本申請公開的上述終端中,存在的操作系統中的CPU讀取多個應用程序的程序代碼,生成多個進程,其中,所述程序代碼存儲在存儲器中,并且,至少有兩個進程之間有共享數據的需求。本申請中,為簡明起見,僅以兩個進程(即第一進程和第二進程)為例進行說明。
            [0152]操作系統除了能夠生成多個進程,還創建了虛擬i/o設備和頁表管理模塊。其中,所述虛擬i/o設備為一個虛擬的設備驅動模塊,所述頁表管理模塊用于存儲系統分配的各個內存塊的信息。
            [0153]本申請公開的終端在進程間共享數據時,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發操作系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0154]相應的,本申請還公開一種終端,參見圖10所示的結構示意圖,所述終端包括:處理器21、存儲器22和總線23,其中,
            [0155]所述處理器21通過總線23,與所述存儲器22相連接;
            [0156]所述存儲器22,用于存儲進程間共享數據的方法的程序代碼;
            [0157]所述處理器23,用于獲取所述存儲器22中存儲的程序代碼,并根據所述程序代碼執行以下操作:
            [0158]生成由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,
            [0159]所述虛擬i/o設備接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據;
            [0160]所述虛擬i/o設備獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息;
            [0161]所述虛擬i/o設備根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            [0162]本申請公開的上述終端中,存在的操作系統中的CPU讀取多個應用程序的程序代碼,生成多個進程,其中,所述程序代碼存儲在存儲器中,并且,至少有兩個進程之間有共享數據的需求。本申請中,為簡明起見,僅以兩個進程(即第一進程和第二進程)為例進行說明。
            [0163]操作系統除了能夠生成多個進程,還創建了虛擬i/o設備和頁表管理模塊。其中,所述虛擬i/o設備為一個虛擬的設備驅動模塊,所述頁表管理模塊用于存儲系統分配的各個內存塊的信息。
            [0164]本申請公開的終端在進程間共享數據時,不需要預先分配共享內存,而是在需要共享數據時,才由第一進程觸發操作系統分配內存塊,實現動態分配共享內存,該分配共享內存的方法用時短,便于根據共享數據的需求,實時迅速的調整共享內存的大小,提高內存的利用效率。
            [0165]本領域的技術人員可以清楚地了解到本發明實施例中的技術可借助軟件加必需的通用硬件平臺的方式來實現。基于這樣的理解,本發明實施例中的技術方案可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在存儲介質中,如只讀存儲器(英文:read-only memory,縮寫:R0M)、隨機存取存儲器(英文:random access memory,縮寫:RAM)、磁碟、光盤等,包括若干指令用以使得處理器執行本發明實施例或者實施例的某些部分所述的方法。
            [0166]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其它實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
            [0167]應當理解的是,本發明并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發明的范圍僅由所附的權利要求來限制。
            【主權項】
            1.一種進程間共享數據的方法,其特征在于,包括: 在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同; 將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常; 基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。2.根據權利要求1所述的方法,其特征在于,在所述第二進程獲取所述內存塊中存儲的數據后,還包括: 將所述內存塊從所述第一目標地址空間中去映射; 將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中; 或者, 將所述內存塊從所述第二進程的虛擬地址空間中去映射; 確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。3.根據權利要求1所述的方法,其特征在于,所述指示所述虛擬i/o設備執行異常處理例程之前,還包括: 判斷所述第二進程是否具備所述內存塊的訪問權限; 基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。4.一種進程間共享數據的方法,其特征在于,應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,所述進程間共享數據的方法包括: 接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息; 根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。5.一種進程間共享數據的裝置,其特征在于,包括: 虛擬i/o設備映射模塊,用于在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同; 內存塊映射模塊,用于將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 訪問異常檢測模塊,用于檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常; 指示模塊,用于基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。6.根據權利要求1所述的方法,其特征在于,所述進程間共享數據的裝置還包括: 第一去映射模塊,用于將所述內存塊從所述第一目標地址空間中去映射; 第一映射模塊,用于將虛擬i/o設備映射至所述第一地址段指示的虛擬地址空間中; 或者, 第二去映射模塊,用于將所述內存塊從所述第二進程的虛擬地址空間中去映射;第二映射模塊,用于確定將所述內存塊映射至所述第二進程后,所述第二進程的虛擬地址空間中的第二地址段與所述內存塊存在映射關系,將虛擬i/o設備映射至所述第二地址段指示的虛擬地址空間中。7.根據權利要求5所述的裝置,其特征在于,所述進程間共享數據的裝置還包括: 判斷模塊,用于指示所述虛擬i/o設備執行異常處理例程之前,判斷所述第二進程是否具備所述內存塊的訪問權限; 所述指示模塊還用于,基于所述第二進程具備所述內存塊的訪問權限的判斷結果,再執行指示所述虛擬i/o設備執行異常處理例程的操作。8.—種進程間共享數據的裝置,其特征在于,應用于由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同,所述進程間共享數據的裝置包括: 指示接收模塊,用于接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 內存塊信息獲取模塊,用于獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息; 第二進程映射模塊,用于根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。9.一種終端,其特征在于,包括:處理器、存儲器和總線,其中, 所述處理器通過總線,與所述存儲器相連接; 所述存儲器,用于存儲進程間共享數據的方法的程序代碼; 所述處理器,用于獲取所述存儲器中存儲的程序代碼,并根據所述程序代碼執行以下操作: 在第一進程和第二進程初始化的過程中,將操作系統創建的虛擬i/o設備分別映射到所述第一進程的虛擬地址空間和所述第二進程的虛擬地址空間中,其中,所述第一進程和第二進程均運行于所述操作系統中,設定所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,所述第一目標地址空間和所述第二目標地址空間相同; 將所述操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中,建立所述內存塊與所述第一目標地址空間中的第一地址段的映射關系,并將所述內存塊的信息以及所述映射關系存儲至操作系統預先創建的頁表管理模塊中,其中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 檢測所述操作系統是否產生訪問異常,其中,所述第二進程訪問所述第一地址段中的虛擬地址時,觸發所述操作系統產生訪問異常; 基于所述操作系統產生訪問異常的檢測結果,指示所述虛擬i/o設備執行異常處理例程,所述異常處理例程包括:獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息,根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。10.一種終端,其特征在于,包括:處理器、存儲器和總線,其中, 所述處理器通過總線,與所述存儲器相連接; 所述存儲器,用于存儲進程間共享數據的方法的程序代碼; 所述處理器,用于獲取所述存儲器中存儲的程序代碼,并根據所述程序代碼執行以下操作: 生成由操作系統創建的虛擬i/o設備,所述虛擬i/o設備被分別映射至所述操作系統中第一進程的虛擬地址空間和第二進程的虛擬地址空間中,所述虛擬i/o設備在所述第一進程中占用的虛擬地址空間為第一目標地址空間,所述虛擬i/o設備在所述第二進程中占用的虛擬地址空間為第二目標地址空間,并且所述第一目標空間地址和第二目標空間地址相同, 所述虛擬i/o設備接收執行異常處理例程的指示,其中,所述指示是將操作系統為所述第一進程分配的內存塊映射到所述第一目標地址空間中后,若所述第二進程訪問第一地址段中的虛擬地址時,觸發操作系統指示虛擬i/o設備向所述虛擬i/o設備發送的;所述內存塊的信息,以及所述內存塊與所述第一目標地址空間中的第一地址段之間的映射關系被存儲至操作系統預先創建的頁表管理模塊中,所述內存塊是所述操作系統根據所述第一進程觸發的內存分配請求分配的,所述內存塊用于存儲所述第一進程需要共享的數據; 所述虛擬i/o設備獲取觸發所述操作系統產生訪問異常時,所述第二進程訪問的所述第一地址段的虛擬地址,并根據所述第一地址段的虛擬地址和所述頁表管理模塊中存儲的所述內存塊的信息以及所述映射關系,獲取所述內存塊的信息; 所述虛擬i/o設備根據所述內存塊的信息,將所述內存塊映射至所述第二進程,以便所述第二進程能夠訪問所述內存塊,獲取所述第一進程在所述內存塊中存儲的數據。
            【文檔編號】G06F9/54GK105868028SQ201510037120
            【公開日】2016年8月17日
            【申請日】2015年1月23日
            【發明人】李昶
            【申請人】華為技術有限公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品