• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于分布式環(huán)境的子進(jìn)程監(jiān)控軟件設(shè)計(jì)與實(shí)現(xiàn)*

    2013-05-14 11:33:54黃海于
    關(guān)鍵詞:句柄鏈表進(jìn)程

    張 虎,黃海于

    (西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都 610031)

    隨著高速列車仿真模擬、物聯(lián)網(wǎng)應(yīng)用等領(lǐng)域?qū)τ?jì)算機(jī)計(jì)算速度要求的不斷提高,單個(gè)的計(jì)算機(jī)已無法滿足高計(jì)算速度的要求。將一個(gè)大的計(jì)算任務(wù)分解成若干個(gè)小的計(jì)算任務(wù),并利用分布式系統(tǒng)[1]將各計(jì)算任務(wù)分散到不同的計(jì)算機(jī)上,以獨(dú)立進(jìn)程的形式進(jìn)行并行計(jì)算是一種比較好的解決方法。而對各獨(dú)立進(jìn)程的運(yùn)行狀態(tài)的實(shí)時(shí)監(jiān)控和管理是實(shí)現(xiàn)分布式系統(tǒng)高效運(yùn)行和管理的基礎(chǔ)。但是傳統(tǒng)的子進(jìn)程監(jiān)控只能對子進(jìn)程是否正在運(yùn)行或者退出做出判斷,無法判斷子進(jìn)程是否處在掛起狀態(tài),也無法及時(shí)地獲取子進(jìn)程的退出碼。

    針對上述需求,本文提出了一種根據(jù)子進(jìn)程的窗句柄來檢測當(dāng)前子進(jìn)程運(yùn)行狀態(tài)的方法,并結(jié)合傳統(tǒng)的子進(jìn)程管理監(jiān)控方法,設(shè)計(jì)并實(shí)現(xiàn)了一種實(shí)時(shí)的子進(jìn)程管理監(jiān)控軟件。該軟件用于啟動(dòng)和監(jiān)控分布式系統(tǒng)中任務(wù)調(diào)度器分配給本機(jī)的任務(wù)。目前該軟件可以檢測子進(jìn)程的三個(gè)狀態(tài):正常運(yùn)行、退出、掛起;可以及時(shí)的將子進(jìn)程的退出碼[2]反饋給分布式系統(tǒng)的任務(wù)調(diào)度器,為任務(wù)調(diào)度器[3]高效利用計(jì)算資源提供了一定的依據(jù);并且為開發(fā)人員根據(jù)進(jìn)程的異常退出碼對程序進(jìn)行查錯(cuò)提供了方便。

    1 傳統(tǒng)子進(jìn)程監(jiān)控方法

    通常Windows系統(tǒng)使用CreateProcess函數(shù)來新建一個(gè)子進(jìn)程。其中CreateProcess函數(shù)的最后一個(gè)參數(shù)的類型是LPPROCESS_INFORMATION結(jié)構(gòu)體,成功創(chuàng)建子進(jìn)程后,子進(jìn)程的基本信息就存儲(chǔ)在該結(jié)構(gòu)體中。在Windows API的定義中,該結(jié)構(gòu)體包含了子進(jìn)程的進(jìn)程句柄、進(jìn)程ID、主線程句柄和主線程ID。創(chuàng)建子進(jìn)程成功后可以通過子進(jìn)程的句柄和Windows提供的wait[4]系列函數(shù)等待子進(jìn)程或者子進(jìn)程組變?yōu)閟ignaled狀態(tài),從而立刻獲知該進(jìn)程或進(jìn)程組退出。

    傳統(tǒng)的子進(jìn)程監(jiān)控方法的好處是:如果子進(jìn)程確實(shí)正常退出,則該方法能夠及時(shí)地獲知子進(jìn)程已經(jīng)退出, 并且可以通過Windows提供的 API函數(shù)GetExitCodeProcess獲取子進(jìn)程的退出碼。但是在大量的實(shí)際應(yīng)用過程中,該方法暴露出了其不足之處。例如,創(chuàng)建一個(gè)有錯(cuò)的 (如除0錯(cuò)誤)MFC程序,然后通過以上方法啟動(dòng)這個(gè)有錯(cuò)的進(jìn)程,再用wait系列函數(shù)等待子進(jìn)程退出。當(dāng)子進(jìn)程運(yùn)行到錯(cuò)誤的語句時(shí)會(huì)彈出一個(gè)錯(cuò)誤窗口,如圖1所示。

    這時(shí)wait系列函數(shù)沒有返回,說明子進(jìn)程還處在nonsignaled狀態(tài)。用GetExitCodeProcess函數(shù)獲取該子進(jìn)程的退出碼時(shí),得到的退出碼為STILL_ACTIVE,也就是說父進(jìn)程認(rèn)為子進(jìn)程還在正常運(yùn)行,無法獲取子進(jìn)程的退出碼。

    如果在分布式系統(tǒng)中出現(xiàn)這種子進(jìn)程明明已經(jīng)出錯(cuò)導(dǎo)致無法繼續(xù)運(yùn)行,但是其監(jiān)控系統(tǒng)認(rèn)為其還在正常運(yùn)行的情況,會(huì)嚴(yán)重影響分布式系統(tǒng)的負(fù)載均衡,不利于分布式系統(tǒng)高效的運(yùn)行和管理。

    2 判斷子進(jìn)程的類型

    Windows支持兩種類型的應(yīng)用程序。一種是基于圖形用戶界面(GUI)的應(yīng)用程序,另一種是基于控制臺(tái)用戶界面(CUI)的應(yīng)用程序[5]。

    基于控制臺(tái)的應(yīng)用程序?qū)儆谖谋静僮鞯膽?yīng)用程序。它通常不能用于創(chuàng)建窗口和處理消息,并且不需要圖形用戶界面。雖然基于CUI的應(yīng)用程序包含在屏幕上的窗口中,但是窗口只包含文本。命令外殼程序CMD.exe是典型的基于CUI的應(yīng)用程序?;贕UI的應(yīng)用程序有一個(gè)圖形前端程序,它能創(chuàng)建窗口,擁有菜單,可以通過對話框與用戶打交道,并且可以使用所有的標(biāo)準(zhǔn)Windows組件。

    這兩種類型的應(yīng)用程序之間的界限是非常模糊的,所以Windows沒有提供API用來判斷一個(gè)程序是基于GUI的還是CUI的。但是可以通過應(yīng)用程序在運(yùn)行時(shí)加載的動(dòng)態(tài)庫[6]來判斷應(yīng)用程序的類型。

    user32.dll和 comctl32.dll兩個(gè)模塊[7]是 Windows用戶界面相關(guān)應(yīng)用程序接口,包括窗口消息處理,基本用戶界面等特性。結(jié)合大量的測試得出,基于GUI的應(yīng)用程序在運(yùn)行時(shí)肯定會(huì)加載這兩個(gè)模塊,而單純的基于CUI的應(yīng)用程序在運(yùn)行時(shí)是不會(huì)加載這兩個(gè)模塊的。因此,可以通過檢測代理,新啟動(dòng)的應(yīng)用程序是否加載了us er32.dll和comctl32.dll這兩個(gè)模塊來區(qū)分應(yīng)用程序類型。

    接下來的工作就是如何檢測新啟動(dòng)的進(jìn)程加載了哪些模塊。在Windows API中提供了枚舉一個(gè)進(jìn)程所加載模塊句柄的接口:EnumProcessModules函數(shù)。該函數(shù)的原型為:

    該函數(shù)接收一個(gè)進(jìn)程的句柄,輸出該進(jìn)程所加載的所有模塊的句柄數(shù)組,并且通過lpcbNeeded參數(shù)輸出所有模塊的句柄所占的字節(jié)數(shù)。因?yàn)樵趩?dòng)子進(jìn)程的時(shí)候,肯定能夠得到子進(jìn)程的進(jìn)程ID和進(jìn)程句柄,所以通過EnumProcessModules函數(shù)可以方便地得到某個(gè)特定的進(jìn)程所加載模塊的句柄。但是通過模塊的句柄,還無法直觀的得到進(jìn)程加載的模塊的名稱。這種情況下,可以通過vc提供的另外一個(gè)接口:GetModuleFileNameEx函數(shù)來獲取各模塊的名稱。GetModuleFileNameEx的函數(shù)原型為:

    該函數(shù)接收一個(gè)進(jìn)程的句柄和模塊的句柄,通過lpFilename參數(shù)以字符串的形式輸出模塊的具體名稱。進(jìn)程的句柄在啟動(dòng)進(jìn)程時(shí)就可以獲得,模塊的句柄就是之前通過EnumProcessModules函數(shù)獲得模塊句柄數(shù)組。

    計(jì)算資源上運(yùn)行的代理通過這兩個(gè)API的配合使用,可以準(zhǔn)確獲得啟動(dòng)的子進(jìn)程所加載的模塊具體的名稱,也就能夠確定子進(jìn)程是否加載了user32.dll和comctl32.dll兩個(gè)模塊。這樣代理就可以確定子進(jìn)程是基于GUI的應(yīng)用程序還是基于CUI的應(yīng)用程序。在確定了應(yīng)用程序的類型之后,根據(jù)各種類型應(yīng)用程序的不同特點(diǎn),采用不同的子進(jìn)程監(jiān)控方法對其進(jìn)行監(jiān)控。

    3 基于窗口句柄對子進(jìn)程監(jiān)控的方法

    在Windows系統(tǒng)中不論是GUI應(yīng)用程序還是CUI應(yīng)用程序,在程序啟動(dòng)時(shí)都會(huì)生成一個(gè)窗口。不同的是,GUI應(yīng)用程序是根據(jù)自己的程序需求生成窗口,CUI應(yīng)用程序是系統(tǒng)為其加載的一個(gè)文本控制臺(tái)窗口。系統(tǒng)為每一個(gè)窗口生成了唯一的標(biāo)示,即窗口句柄。而且Windows提供了一個(gè)通過窗口句柄來檢測應(yīng)用程序是否處于掛起狀態(tài)的API函數(shù),該函數(shù)的原型為:BOOL IsHungAppWindow(HWND hWnd)。該函數(shù)接收一個(gè)窗口句柄作為輸入?yún)?shù),并且判斷該窗口所屬的進(jìn)程是否處于掛起狀態(tài)。當(dāng)進(jìn)程處于掛起狀態(tài)時(shí),函數(shù)返回TRUE;當(dāng)進(jìn)程處于非掛起狀態(tài)時(shí),函數(shù)返回FALSE。只要能獲取到進(jìn)程所對應(yīng)的窗口句柄,就能夠通過定時(shí)調(diào)用IsHungAppWindow函數(shù)判斷GUI應(yīng)用程序是否處于掛起狀態(tài)。

    但是,在子進(jìn)程創(chuàng)建的過程中,父進(jìn)程只能獲取到該子進(jìn)程的進(jìn)程句柄和該進(jìn)程的主線程句柄,無法獲取到子進(jìn)程所對應(yīng)的窗口句柄。所以,如何獲取子進(jìn)程所對應(yīng)的窗口句柄是基于GUI的應(yīng)用程序監(jiān)控方法的關(guān)鍵。

    獲取窗口句柄的方法有很多種,本應(yīng)用中針對GUI應(yīng)用程序和CUI應(yīng)用程序的不同特點(diǎn)采用了不同的方法獲取這兩種應(yīng)用程序的窗口句柄。

    3.1 獲取GUI應(yīng)用程序的窗口句柄

    如果應(yīng)用程序是一個(gè)基于GUI的應(yīng)用程序,則操作系統(tǒng)在啟動(dòng)的過程中不會(huì)為應(yīng)用程序創(chuàng)建控制臺(tái)窗口,而只是加載應(yīng)用程序。當(dāng)基于GUI的應(yīng)用程序啟動(dòng)之后,就根據(jù)程序自身的需要生成特定的窗口。這樣窗口的進(jìn)程ID即為應(yīng)用程序的進(jìn)程ID。

    針對GUI應(yīng)用程序的窗口進(jìn)程ID即為應(yīng)用程序進(jìn)程ID的特點(diǎn),獲取GUI應(yīng)用程序窗口句柄采用的方法是在創(chuàng)建子進(jìn)程之后遍歷系統(tǒng)中所有窗口,在遍歷的過程中根據(jù)窗口的句柄來獲取窗口所對應(yīng)的進(jìn)程的ID;將獲取到的窗口進(jìn)程ID與創(chuàng)建的子進(jìn)程的ID進(jìn)行匹配。如果匹配成功則該窗口就是子進(jìn)程創(chuàng)建的窗口,可以通過該窗口的句柄調(diào)用IsHungAppWindow函數(shù)來判斷該子進(jìn)程是否處于掛起的狀態(tài)。

    在遍歷窗口句柄時(shí),是通過GetTopWindow和GetNextWindow這兩個(gè)API函數(shù)協(xié)同工作完成的;而根據(jù)窗口句柄來獲取窗口所對應(yīng)的進(jìn)程ID是通過GetWindowThreadProcessId函數(shù)實(shí)現(xiàn)的。具體的實(shí)現(xiàn)代碼如下:

    該函數(shù)的輸入?yún)?shù)為需要獲取窗口句柄的進(jìn)程的ID。如果查找成功則返回進(jìn)程所對應(yīng)窗口的窗口句柄;如果不成功則返回NULL。

    3.2 獲取CUI應(yīng)用程序的窗口句柄

    通常情況下,基于CUI的應(yīng)用程序不會(huì)創(chuàng)建窗口和處理消息,并且不需要圖形用戶界面。但是Windows系統(tǒng)會(huì)為CUI的應(yīng)用程序自動(dòng)加載一個(gè)文本控制臺(tái)窗口的外殼程序。CUI應(yīng)用程序的標(biāo)準(zhǔn)輸入輸出都是在這個(gè)外殼程序中完成的,所以也可以通過判斷該控制臺(tái)窗口是否處于掛起狀態(tài)來判斷CUI應(yīng)用程序的狀態(tài),即通過IsHungAppWindow函數(shù)來判斷應(yīng)用程序是否掛起。

    但是,Windows對CUI應(yīng)用程序的這種處理方式使得CUI程序與CUI程序的窗口具有不同的進(jìn)程ID。這樣就不能通過匹配程序進(jìn)程ID和窗口進(jìn)程ID的方法來確定某一個(gè)窗口是否屬于某一個(gè)應(yīng)用程序。

    針對CUI應(yīng)用程序的以上特點(diǎn),本應(yīng)用獲取CUI應(yīng)用程序窗口句柄的方法是通過檢測窗口的標(biāo)題來確定該窗口是否屬于某一個(gè)CUI程序。采用這種方法的原因是基于CUI的窗口標(biāo)題肯定為該CUI程序的絕對路徑,并且在分布式計(jì)算的環(huán)境下,各個(gè)任務(wù)的子進(jìn)程可能同名但是肯定是存在于不同的目錄下的。所以通過標(biāo)題來確定一個(gè)窗口是否屬于CUI程序在本應(yīng)用環(huán)境下完全可行。

    基于CUI子進(jìn)程的監(jiān)控方法是在啟動(dòng)子進(jìn)程之后,根據(jù)子進(jìn)程的絕對路徑調(diào)用FindWindow系統(tǒng)函數(shù)來獲取該CUI子進(jìn)程的窗口句柄,這樣就可以通過定時(shí)調(diào)用IsHungAppWindow函數(shù)來檢測應(yīng)用程序的運(yùn)行狀態(tài)。

    4 與傳統(tǒng)方法相結(jié)合的子進(jìn)程監(jiān)控方法

    以上介紹了通過窗口句柄對各種子進(jìn)程運(yùn)行狀態(tài)監(jiān)控的可行性。但是,基于窗口句柄檢測子進(jìn)程運(yùn)行狀態(tài)的方法是定時(shí)檢測子進(jìn)程的運(yùn)行狀態(tài)。所以如果定時(shí)檢測的時(shí)間較長時(shí),則缺乏好的實(shí)時(shí)性;如果定時(shí)檢測的時(shí)間較短時(shí),則增加了計(jì)算資源的負(fù)載。本應(yīng)用在綜合考慮了以上問題之后,采用了定時(shí)檢測子進(jìn)程的運(yùn)行狀態(tài)和開辟新的線程等待子進(jìn)程退出兩種手段相結(jié)合的方法來監(jiān)控子進(jìn)程的運(yùn)行狀態(tài)。這樣同時(shí)確保了檢測子進(jìn)程運(yùn)行狀態(tài)的實(shí)時(shí)性又彌補(bǔ)了傳統(tǒng)子進(jìn)程檢測方法在子進(jìn)程出現(xiàn)掛起狀態(tài)時(shí)無法檢測的問題。

    在分布式計(jì)算環(huán)境下,計(jì)算資源上的代理啟動(dòng)子進(jìn)程的時(shí)間不確定,并且可能同時(shí)管理多個(gè)子進(jìn)程。所以為了方便管理,在本應(yīng)用中建立了帶頭結(jié)點(diǎn)的子進(jìn)程信息鏈表用于同時(shí)管理多個(gè)子進(jìn)程。鏈表的結(jié)構(gòu)體定義如下:

    其中 ProjectID、ConditionID、ModuleID在整個(gè)分布式計(jì)算系統(tǒng)中確定唯一一個(gè)子進(jìn)程,并且子進(jìn)程的可執(zhí)行文件根據(jù)這三個(gè)值的不同而存放在不同的目錄下。SendFlag變量是用于提示調(diào)度器該進(jìn)程是否已掛起,當(dāng)該值為1時(shí),說明已經(jīng)提示調(diào)度器該進(jìn)程掛起,不用重復(fù)提醒;當(dāng)該值為0時(shí),說明還未提示調(diào)度器該進(jìn)程已掛起。

    4.1 定時(shí)檢測子進(jìn)程的運(yùn)行狀態(tài)

    代理啟動(dòng)時(shí)會(huì)創(chuàng)建子進(jìn)程信息鏈表頭結(jié)點(diǎn),并會(huì)創(chuàng)建定時(shí)器T,定時(shí)遍歷子進(jìn)程信息鏈表。當(dāng)子進(jìn)程信息鏈表中除頭結(jié)點(diǎn)外沒有其他的結(jié)點(diǎn)時(shí),則等待下一次定時(shí)的到來;當(dāng)子進(jìn)程信息鏈表中除頭結(jié)點(diǎn)外還有其他進(jìn)程的信息結(jié)點(diǎn),則首先關(guān)閉定時(shí)器T;然后遍歷鏈表各個(gè)結(jié)點(diǎn)中的窗口句柄信息,根據(jù)進(jìn)程的窗口句柄判斷進(jìn)程是否處于掛起的狀態(tài),如果進(jìn)程處于掛起的狀態(tài),則及時(shí)將該進(jìn)程的信息及進(jìn)程的當(dāng)前運(yùn)行狀態(tài)發(fā)送給調(diào)度器,如果進(jìn)程沒有處于掛起狀態(tài),則繼續(xù)遍歷下一個(gè)結(jié)點(diǎn),最后遍歷完成之后重新創(chuàng)建定時(shí)器T,定時(shí)遍歷子進(jìn)程信息鏈表。經(jīng)過大量的實(shí)驗(yàn),最終將定時(shí)器的定時(shí)時(shí)間設(shè)為3 s,即每3 s檢查所有子進(jìn)程是否處于掛起狀態(tài)。

    4.2 創(chuàng)建新的線程等待子進(jìn)程退出

    當(dāng)有任務(wù)提交給代理時(shí),代理首先啟動(dòng)相應(yīng)的應(yīng)用程序,然后創(chuàng)建新的線程等待子進(jìn)程的退出,最后判斷子進(jìn)程的類型,獲取進(jìn)程的窗口句柄,為新啟動(dòng)的應(yīng)用程序創(chuàng)建子進(jìn)程鏈表節(jié)點(diǎn)。其中等待子進(jìn)程退出線程中所做的工作有:(1)根據(jù)新啟動(dòng)進(jìn)程的進(jìn)程句柄調(diào)用WaitForSingleObject函數(shù),等待子進(jìn)程的退出;(2)當(dāng)子進(jìn)程退出后獲取進(jìn)程的退出碼,并存放在相應(yīng)的子進(jìn)程信息鏈表結(jié)點(diǎn)中;(3)獲取退出碼之后,將該子進(jìn)程的基本信息、子進(jìn)程的當(dāng)前狀態(tài)、子進(jìn)程的退出碼發(fā)送給調(diào)度器,線程結(jié)束。

    以上介紹了在Windows系統(tǒng)環(huán)境下對基于GUI和基于CUI子進(jìn)程監(jiān)控的實(shí)現(xiàn)方法。該方法主要是通過定時(shí)檢測子進(jìn)程對應(yīng)的窗口是否掛起以及開辟新的線程等待子進(jìn)程退出兩種手段相結(jié)合的方式實(shí)現(xiàn)對子進(jìn)程的監(jiān)控。雖然通過定時(shí)檢測窗口是否掛起的方法存在缺乏實(shí)時(shí)性的問題,但是通過縮短定時(shí)時(shí)間也可以將時(shí)間控制在毫秒級,在絕大多數(shù)的分布式計(jì)算應(yīng)用系統(tǒng)中是可以接受的。

    該方法解決了傳統(tǒng)的子進(jìn)程檢測方法無法檢測子進(jìn)程掛起狀態(tài)的問題。對子進(jìn)程運(yùn)行狀態(tài)的檢測更準(zhǔn)確,提高了分布式計(jì)算環(huán)境下的資源利用率。

    [1]葛澎.分布式計(jì)算技術(shù)概述[J].微電子學(xué)與計(jì)算機(jī),2012(5):201-204.

    [2]DAVE T.Understanding exit codes[J].Linux Journal,2010(197):24-25.

    [3]Xie Tao,Qin Xiao.A Security-qriented task scheduler for heterogeneous distributed systems [J].Lecture Notes in Computer Science, 2006(4297):35-46.

    [4]STRVENS W R,RAGO S A.UNIX環(huán)境高級編程(第2版)[M].尤晉元,張亞英,戚正偉譯.北京:人民郵電出版社, 2005:179-182.

    [5]RICHTER J,NASARRE C.Windows核心編程 (第 5版)[M].葛子昂,周靖,廖敏譯.北京:清華大學(xué)出版社,2008:69-72.

    [6]高連生,盛柏林.動(dòng)態(tài)鏈接庫在組態(tài)軟件中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2010(6):21-22.

    [7]周超.Windows和Linux動(dòng)態(tài)鏈接庫研究及應(yīng)用 [D].上海:華東理工大學(xué),2007.

    [8]Microsoft.QIsHungAppWindow function (Windows) [OL].[2012-11-28].http://msdn.microsoft.com/ZH-CN/library/windows/desktop/ms633526(v=vs.85).aspx

    猜你喜歡
    句柄鏈表進(jìn)程
    債券市場對外開放的進(jìn)程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    基于二進(jìn)制鏈表的粗糙集屬性約簡
    跟麥咭學(xué)編程
    基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
    高校圖書館持久標(biāo)識(shí)符應(yīng)用研究
    編譯程序語法分析句柄問題分析與探討
    MFC應(yīng)用程序多線程混合顯示界面方法研究
    鏈表方式集中器抄表的設(shè)計(jì)
    電測與儀表(2014年1期)2014-04-04 12:00:22
    社會(huì)進(jìn)程中的新聞學(xué)探尋
    我國高等教育改革進(jìn)程與反思
    国产蜜桃级精品一区二区三区| 日韩欧美一区视频在线观看| 久久人妻福利社区极品人妻图片| 国产欧美日韩一区二区精品| 一级毛片女人18水好多| 欧美成人午夜精品| 婷婷六月久久综合丁香| 男女视频在线观看网站免费 | 怎么达到女性高潮| 精品福利观看| 日韩 欧美 亚洲 中文字幕| 精品国产乱码久久久久久男人| av福利片在线| 久久 成人 亚洲| 在线观看www视频免费| av欧美777| 国产精品精品国产色婷婷| 99精品久久久久人妻精品| 国产aⅴ精品一区二区三区波| 欧美日韩瑟瑟在线播放| 男人舔女人下体高潮全视频| 国产高清有码在线观看视频 | 婷婷丁香在线五月| 成人国产综合亚洲| 国产三级在线视频| 性色av乱码一区二区三区2| 国产国语露脸激情在线看| 国产成人av激情在线播放| 欧美日韩精品网址| 日韩欧美一区二区三区在线观看| 又大又爽又粗| 国产aⅴ精品一区二区三区波| 少妇 在线观看| 国产又色又爽无遮挡免费看| 男女视频在线观看网站免费 | 777久久人妻少妇嫩草av网站| 欧美av亚洲av综合av国产av| 欧美日韩亚洲综合一区二区三区_| bbb黄色大片| 黄色a级毛片大全视频| 黑人巨大精品欧美一区二区mp4| 午夜福利欧美成人| 日本 欧美在线| 校园春色视频在线观看| 日本熟妇午夜| 午夜福利欧美成人| 大型av网站在线播放| 美女 人体艺术 gogo| 久久国产亚洲av麻豆专区| 国内少妇人妻偷人精品xxx网站 | 国产精品久久久人人做人人爽| 亚洲黑人精品在线| 久久伊人香网站| 色老头精品视频在线观看| 亚洲国产精品999在线| 亚洲精品国产精品久久久不卡| 一本久久中文字幕| 看免费av毛片| 老司机靠b影院| 精品欧美国产一区二区三| 午夜久久久在线观看| 久久精品亚洲精品国产色婷小说| 欧美又色又爽又黄视频| 日韩欧美免费精品| 午夜老司机福利片| 欧美乱码精品一区二区三区| 国产精品香港三级国产av潘金莲| 天堂√8在线中文| 国产真实乱freesex| 日本一本二区三区精品| 777久久人妻少妇嫩草av网站| 久热这里只有精品99| 91成年电影在线观看| bbb黄色大片| 国产成人精品久久二区二区免费| 久久国产乱子伦精品免费另类| 99国产综合亚洲精品| 中文字幕精品亚洲无线码一区 | 精品乱码久久久久久99久播| 好男人在线观看高清免费视频 | 国产伦人伦偷精品视频| 亚洲成国产人片在线观看| 国产伦在线观看视频一区| 午夜免费成人在线视频| 欧美激情高清一区二区三区| 少妇的丰满在线观看| 欧美性长视频在线观看| 村上凉子中文字幕在线| 欧美黑人巨大hd| 国产久久久一区二区三区| 色老头精品视频在线观看| 国产高清激情床上av| 久久亚洲真实| 天堂影院成人在线观看| 每晚都被弄得嗷嗷叫到高潮| 亚洲国产欧洲综合997久久, | 国产成人系列免费观看| 欧美zozozo另类| 精品久久久久久成人av| 在线观看免费视频日本深夜| 欧美激情极品国产一区二区三区| 欧美一级毛片孕妇| 国产亚洲精品久久久久久毛片| 欧美黑人欧美精品刺激| 国产日本99.免费观看| 欧美绝顶高潮抽搐喷水| 欧美午夜高清在线| 日韩有码中文字幕| 欧美 亚洲 国产 日韩一| 国产一区在线观看成人免费| 亚洲五月婷婷丁香| 黄色毛片三级朝国网站| av在线播放免费不卡| 啪啪无遮挡十八禁网站| 免费在线观看日本一区| 在线视频色国产色| 俺也久久电影网| 亚洲在线自拍视频| 国产三级在线视频| 国产精品 国内视频| 久久久久精品国产欧美久久久| 一级黄色大片毛片| 国产黄a三级三级三级人| 国产精品美女特级片免费视频播放器 | 亚洲激情在线av| 在线观看免费日韩欧美大片| 久久 成人 亚洲| 国产野战对白在线观看| 亚洲五月天丁香| 91大片在线观看| 身体一侧抽搐| 一夜夜www| www.精华液| 国语自产精品视频在线第100页| 两个人免费观看高清视频| 国产精品 国内视频| 人人澡人人妻人| 神马国产精品三级电影在线观看 | 久久久国产成人精品二区| 亚洲国产精品合色在线| 亚洲精品色激情综合| 中文字幕人妻熟女乱码| 欧美乱码精品一区二区三区| av欧美777| 欧美乱妇无乱码| 久久国产亚洲av麻豆专区| 村上凉子中文字幕在线| 大香蕉久久成人网| 91九色精品人成在线观看| www日本黄色视频网| 视频在线观看一区二区三区| 日日摸夜夜添夜夜添小说| 99国产极品粉嫩在线观看| 欧美日韩亚洲综合一区二区三区_| 一卡2卡三卡四卡精品乱码亚洲| 亚洲最大成人中文| 黄色视频不卡| 婷婷丁香在线五月| 国产一级毛片七仙女欲春2 | 看片在线看免费视频| 亚洲一区二区三区色噜噜| 国产私拍福利视频在线观看| 1024视频免费在线观看| 最新美女视频免费是黄的| 18禁观看日本| 99久久无色码亚洲精品果冻| 日本一本二区三区精品| 久久国产精品男人的天堂亚洲| 欧美成人一区二区免费高清观看 | 99久久综合精品五月天人人| 午夜福利高清视频| 啪啪无遮挡十八禁网站| 国产1区2区3区精品| 美女午夜性视频免费| 亚洲精品久久国产高清桃花| 在线观看舔阴道视频| 99re在线观看精品视频| 欧美色视频一区免费| 丁香六月欧美| 婷婷六月久久综合丁香| 亚洲免费av在线视频| 777久久人妻少妇嫩草av网站| 99精品欧美一区二区三区四区| 三级毛片av免费| 国产伦一二天堂av在线观看| 国产av不卡久久| 两人在一起打扑克的视频| 精品福利观看| 叶爱在线成人免费视频播放| 久久青草综合色| 精品久久久久久,| 中国美女看黄片| 黄色毛片三级朝国网站| 日韩欧美一区二区三区在线观看| 久久精品91无色码中文字幕| 在线国产一区二区在线| 国产91精品成人一区二区三区| 久久久精品国产亚洲av高清涩受| 精品国产亚洲在线| 啪啪无遮挡十八禁网站| 在线观看舔阴道视频| 少妇被粗大的猛进出69影院| 国产亚洲欧美98| 一二三四在线观看免费中文在| 日韩三级视频一区二区三区| 欧美日韩亚洲国产一区二区在线观看| 国产精品影院久久| 日韩高清综合在线| 搞女人的毛片| 91成年电影在线观看| 国产av一区在线观看免费| 大型黄色视频在线免费观看| 给我免费播放毛片高清在线观看| 国产1区2区3区精品| 国内揄拍国产精品人妻在线 | 一区二区三区激情视频| 亚洲七黄色美女视频| 精品第一国产精品| 日韩欧美一区视频在线观看| 免费看日本二区| 黄网站色视频无遮挡免费观看| 一个人免费在线观看的高清视频| 国产在线精品亚洲第一网站| 亚洲第一av免费看| 日本一区二区免费在线视频| 免费无遮挡裸体视频| 在线天堂中文资源库| 国产v大片淫在线免费观看| 精品少妇一区二区三区视频日本电影| 搡老妇女老女人老熟妇| 免费一级毛片在线播放高清视频| 美女高潮喷水抽搐中文字幕| 久久久久久亚洲精品国产蜜桃av| 国产99白浆流出| 欧美日韩乱码在线| 99国产精品99久久久久| 亚洲av美国av| 欧美成人免费av一区二区三区| 午夜视频精品福利| 国产精品久久视频播放| 亚洲自偷自拍图片 自拍| 欧美黑人欧美精品刺激| 正在播放国产对白刺激| 久久久国产欧美日韩av| 麻豆成人午夜福利视频| 国产亚洲av高清不卡| 91av网站免费观看| 精品久久久久久久人妻蜜臀av| 国产高清激情床上av| 精品一区二区三区四区五区乱码| 黄网站色视频无遮挡免费观看| 搡老妇女老女人老熟妇| 国产熟女xx| 天堂动漫精品| 精品第一国产精品| 丰满的人妻完整版| 午夜久久久在线观看| 国产男靠女视频免费网站| 欧美乱妇无乱码| 亚洲av五月六月丁香网| 亚洲欧美一区二区三区黑人| 99久久99久久久精品蜜桃| 亚洲精品色激情综合| 熟女少妇亚洲综合色aaa.| 精品电影一区二区在线| 亚洲五月天丁香| 国产精品亚洲美女久久久| 中文字幕人妻丝袜一区二区| 欧美另类亚洲清纯唯美| 日韩成人在线观看一区二区三区| 热99re8久久精品国产| 女同久久另类99精品国产91| 欧美在线一区亚洲| 成人永久免费在线观看视频| 久久久久久久午夜电影| 中文字幕久久专区| 欧美激情 高清一区二区三区| 老司机午夜福利在线观看视频| 久久精品人妻少妇| 麻豆国产av国片精品| 777久久人妻少妇嫩草av网站| 国内毛片毛片毛片毛片毛片| 久久精品国产综合久久久| 免费高清视频大片| 最新美女视频免费是黄的| 久久狼人影院| e午夜精品久久久久久久| 一进一出抽搐gif免费好疼| 日本 欧美在线| 欧美绝顶高潮抽搐喷水| 中文字幕另类日韩欧美亚洲嫩草| 久久久久久久久中文| 一二三四社区在线视频社区8| 国内久久婷婷六月综合欲色啪| 亚洲美女黄片视频| 亚洲欧美激情综合另类| 久久久久亚洲av毛片大全| 亚洲成av人片免费观看| 国产乱人伦免费视频| 丝袜美腿诱惑在线| 亚洲av成人一区二区三| 一个人免费在线观看的高清视频| 国产激情偷乱视频一区二区| 女生性感内裤真人,穿戴方法视频| 高清在线国产一区| 日韩欧美一区二区三区在线观看| 日本三级黄在线观看| 91成人精品电影| 亚洲色图 男人天堂 中文字幕| 一区二区三区国产精品乱码| 男女下面进入的视频免费午夜 | 在线观看免费视频日本深夜| 日韩成人在线观看一区二区三区| 国产又色又爽无遮挡免费看| 69av精品久久久久久| 欧美丝袜亚洲另类 | 禁无遮挡网站| 亚洲av片天天在线观看| 国产亚洲精品第一综合不卡| 后天国语完整版免费观看| 两性午夜刺激爽爽歪歪视频在线观看 | 丝袜在线中文字幕| 成在线人永久免费视频| 日韩欧美在线二视频| 侵犯人妻中文字幕一二三四区| 精品国产乱码久久久久久男人| 两个人看的免费小视频| 国产高清视频在线播放一区| 久久中文字幕一级| 日韩欧美国产在线观看| 日韩欧美国产一区二区入口| 99久久无色码亚洲精品果冻| 成人欧美大片| 97人妻精品一区二区三区麻豆 | 成人欧美大片| 男人舔女人下体高潮全视频| 一级作爱视频免费观看| 亚洲国产精品合色在线| 久久精品影院6| 欧美中文日本在线观看视频| 一级黄色大片毛片| 黑丝袜美女国产一区| 日韩欧美国产在线观看| 女人高潮潮喷娇喘18禁视频| 日韩大码丰满熟妇| 日日摸夜夜添夜夜添小说| 国产精品香港三级国产av潘金莲| 99精品久久久久人妻精品| av超薄肉色丝袜交足视频| 国产成人欧美在线观看| 又紧又爽又黄一区二区| 免费高清在线观看日韩| 欧洲精品卡2卡3卡4卡5卡区| 亚洲精品中文字幕在线视频| 久久精品国产亚洲av高清一级| 国产人伦9x9x在线观看| 日韩欧美 国产精品| 啪啪无遮挡十八禁网站| 热re99久久国产66热| 国产主播在线观看一区二区| 国产极品粉嫩免费观看在线| 国产亚洲精品一区二区www| 欧美av亚洲av综合av国产av| 亚洲五月天丁香| 一级毛片高清免费大全| 亚洲国产看品久久| 亚洲成av人片免费观看| 色综合婷婷激情| 国产精品香港三级国产av潘金莲| 午夜福利视频1000在线观看| 啦啦啦观看免费观看视频高清| 不卡一级毛片| 国产又色又爽无遮挡免费看| 一个人观看的视频www高清免费观看 | 人人妻人人看人人澡| 美女午夜性视频免费| 后天国语完整版免费观看| 亚洲自偷自拍图片 自拍| 草草在线视频免费看| 一本一本综合久久| 又黄又粗又硬又大视频| 国产精品久久久久久精品电影 | 琪琪午夜伦伦电影理论片6080| 黄色毛片三级朝国网站| 听说在线观看完整版免费高清| 精品国产国语对白av| 俄罗斯特黄特色一大片| 国产免费男女视频| 成人午夜高清在线视频 | 成人亚洲精品一区在线观看| 最近最新中文字幕大全电影3 | 丝袜美腿诱惑在线| 精品国产乱子伦一区二区三区| 国产成人系列免费观看| 一进一出抽搐动态| 欧美三级亚洲精品| 人成视频在线观看免费观看| 日日夜夜操网爽| 亚洲美女黄片视频| 精品国产乱码久久久久久男人| 天堂影院成人在线观看| 国产三级在线视频| 青草久久国产| 中文资源天堂在线| 亚洲美女黄片视频| 亚洲黑人精品在线| 久久 成人 亚洲| 97人妻精品一区二区三区麻豆 | 国产aⅴ精品一区二区三区波| 999久久久精品免费观看国产| 琪琪午夜伦伦电影理论片6080| 午夜成年电影在线免费观看| 国产精品综合久久久久久久免费| 亚洲一码二码三码区别大吗| 国产激情欧美一区二区| 久久精品夜夜夜夜夜久久蜜豆 | 国产熟女午夜一区二区三区| 国产高清视频在线播放一区| 夜夜夜夜夜久久久久| 久久国产乱子伦精品免费另类| 成人亚洲精品av一区二区| 少妇被粗大的猛进出69影院| 日韩大尺度精品在线看网址| 日韩视频一区二区在线观看| 亚洲自偷自拍图片 自拍| 亚洲黑人精品在线| 90打野战视频偷拍视频| 男人操女人黄网站| 最好的美女福利视频网| 免费看日本二区| 国产高清激情床上av| 91大片在线观看| 亚洲精品美女久久av网站| 国产激情偷乱视频一区二区| 国产黄色小视频在线观看| 国产精品国产高清国产av| 国产精品久久久久久人妻精品电影| 精品不卡国产一区二区三区| 欧美日韩福利视频一区二区| 女人高潮潮喷娇喘18禁视频| 午夜久久久在线观看| 国产精品免费一区二区三区在线| 脱女人内裤的视频| 免费看美女性在线毛片视频| 免费无遮挡裸体视频| 一本久久中文字幕| 男人舔奶头视频| 中出人妻视频一区二区| 久久中文看片网| 一级毛片精品| 日韩欧美免费精品| 麻豆成人av在线观看| 久9热在线精品视频| 午夜免费成人在线视频| 午夜久久久在线观看| 亚洲精品色激情综合| 精品国内亚洲2022精品成人| 精品国产美女av久久久久小说| 亚洲欧美精品综合久久99| 天天躁夜夜躁狠狠躁躁| 国产精华一区二区三区| 亚洲最大成人中文| 国产伦人伦偷精品视频| 国产亚洲精品综合一区在线观看 | 国产三级黄色录像| 人人澡人人妻人| 在线免费观看的www视频| 国产精品久久电影中文字幕| 国产亚洲精品第一综合不卡| 人人妻人人澡人人看| 国产一级毛片七仙女欲春2 | 成人特级黄色片久久久久久久| 免费搜索国产男女视频| www日本在线高清视频| 91av网站免费观看| 好看av亚洲va欧美ⅴa在| or卡值多少钱| 人妻丰满熟妇av一区二区三区| 丰满的人妻完整版| 日本在线视频免费播放| 国产av一区二区精品久久| 国产av一区在线观看免费| 一二三四社区在线视频社区8| 韩国av一区二区三区四区| 母亲3免费完整高清在线观看| 亚洲精品中文字幕在线视频| 欧美丝袜亚洲另类 | 午夜福利一区二区在线看| 免费在线观看日本一区| 51午夜福利影视在线观看| 久久香蕉精品热| 国产国语露脸激情在线看| 国产一区在线观看成人免费| 夜夜躁狠狠躁天天躁| or卡值多少钱| 在线观看66精品国产| 欧美日韩福利视频一区二区| 精品国产一区二区三区四区第35| 欧美久久黑人一区二区| 嫩草影院精品99| 国产精品一区二区精品视频观看| 在线观看免费午夜福利视频| 午夜福利欧美成人| 啦啦啦韩国在线观看视频| 精品免费久久久久久久清纯| 国产午夜福利久久久久久| 两人在一起打扑克的视频| 黄色女人牲交| 看黄色毛片网站| 男女视频在线观看网站免费 | 久久久久久久午夜电影| 老司机在亚洲福利影院| 1024手机看黄色片| 日韩成人在线观看一区二区三区| 日本一本二区三区精品| 制服丝袜大香蕉在线| 精品不卡国产一区二区三区| 精品无人区乱码1区二区| 婷婷六月久久综合丁香| 精品高清国产在线一区| 精品久久久久久久末码| 嫩草影视91久久| 欧美另类亚洲清纯唯美| 久久香蕉国产精品| 岛国在线观看网站| 欧美日韩福利视频一区二区| av欧美777| 一级毛片精品| 一个人观看的视频www高清免费观看 | 欧美色欧美亚洲另类二区| 久久亚洲精品不卡| 窝窝影院91人妻| 亚洲国产精品成人综合色| 国产精品综合久久久久久久免费| 欧美另类亚洲清纯唯美| 琪琪午夜伦伦电影理论片6080| 亚洲色图av天堂| 午夜精品久久久久久毛片777| 美女大奶头视频| 久久人妻av系列| 国产精品九九99| 成人国产综合亚洲| 亚洲成人久久爱视频| 欧美黑人精品巨大| 色播在线永久视频| a在线观看视频网站| 91字幕亚洲| 在线播放国产精品三级| 深夜精品福利| 搞女人的毛片| 一级作爱视频免费观看| avwww免费| 亚洲在线自拍视频| 最近最新中文字幕大全免费视频| 亚洲熟女毛片儿| 国产单亲对白刺激| 99在线人妻在线中文字幕| 成人国产综合亚洲| 热99re8久久精品国产| 免费av毛片视频| 国产伦在线观看视频一区| 欧美乱妇无乱码| 国产一区在线观看成人免费| 免费一级毛片在线播放高清视频| 中亚洲国语对白在线视频| 婷婷精品国产亚洲av在线| 最近最新中文字幕大全电影3 | 精品高清国产在线一区| 1024视频免费在线观看| 国产野战对白在线观看| 欧美一级a爱片免费观看看 | 一卡2卡三卡四卡精品乱码亚洲| 亚洲精品国产精品久久久不卡| av免费在线观看网站| 久久久精品国产亚洲av高清涩受| 免费电影在线观看免费观看| 一本综合久久免费| 久9热在线精品视频| 国产高清激情床上av| netflix在线观看网站| 久久久久九九精品影院| 亚洲自拍偷在线| 啦啦啦韩国在线观看视频| 日本 欧美在线| 国产亚洲精品第一综合不卡| 高潮久久久久久久久久久不卡| 欧美成人性av电影在线观看| 日韩欧美 国产精品| 高清在线国产一区| 欧美日韩乱码在线| 国内少妇人妻偷人精品xxx网站 | 99久久综合精品五月天人人| 久久久久久久午夜电影| 亚洲成人免费电影在线观看| 欧美中文日本在线观看视频| 女生性感内裤真人,穿戴方法视频| 麻豆成人av在线观看| 久久精品国产99精品国产亚洲性色| 国产黄a三级三级三级人| 少妇 在线观看| 狂野欧美激情性xxxx| 天堂√8在线中文| 一级a爱视频在线免费观看| 欧美色欧美亚洲另类二区| 一二三四社区在线视频社区8| 国产精品99久久99久久久不卡| 亚洲免费av在线视频| 国产午夜精品久久久久久| 国产精品1区2区在线观看.| 成人国语在线视频| 国产一区二区激情短视频| 亚洲三区欧美一区| 久久久久国产一级毛片高清牌| 亚洲无线在线观看| 国产99白浆流出|