精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高頻考點之六大進程通信機制

系統
初學操作系統的時候,我就一直懵逼,為啥進程同步與互斥機制里有信號量機制,進程通信里又有信號量機制,然后你再看網絡上的各種面試題匯總或者博客,你會發現很多都是千篇一律的進程通信機制有哪些?

 [[383760]]

本文轉載自微信公眾號「飛天小牛肉」,作者飛天小牛肉 。轉載本文請聯系飛天小牛肉公眾號。

初學操作系統的時候,我就一直懵逼,為啥進程同步與互斥機制里有信號量機制,進程通信里又有信號量機制,然后你再看網絡上的各種面試題匯總或者博客,你會發現很多都是千篇一律的進程通信機制有哪些?進程同步與互斥機制鮮有人問津。看多了我都想把 CSDN 屏了.....,最后知道真相的我只想說為啥不能一篇博客把東西寫清楚,沒頭沒尾真的浪費時間。

希望這篇文章能夠拯救某段時間和我一樣被繞暈的小伙伴。上篇文章我已經講過進程間的同步與互斥機制,各位小伙伴看完這個再來看進程通信比較好。

全文脈絡思維導圖如下:

 

1. 什么是進程通信

顧名思義,進程通信( InterProcess Communication,IPC)就是指「進程之間的信息交換」。實際上,「進程的同步與互斥本質上也是一種進程通信」(這也就是待會我們會在進程通信機制中看見信號量和 PV 操作的原因了),只不過它傳輸的僅僅是信號量,通過修改信號量,使得進程之間建立聯系,相互協調和協同工作,但是它「缺乏傳遞數據的能力」。

雖然存在某些情況,進程之間交換的信息量很少,比如僅僅交換某個狀態信息,這樣進程的同步與互斥機制完全可以勝任這項工作。但是大多數情況下,「進程之間需要交換大批數據」,比如傳送一批信息或整個文件,這就需要通過一種新的通信機制來完成,也就是所謂的進程通信。

再來從操作系統層面直觀的看一些進程通信:我們知道,為了保證安全,每個進程的用戶地址空間都是獨立的,一般而言一個進程不能直接訪問另一個進程的地址空間,不過內核空間是每個進程都共享的,所以「進程之間想要進行信息交換就必須通過內核」。

 

下面就來我們來列舉一下 Linux 內核提供的常見的進程通信機制:

  • 管道(也稱作共享文件)
  • 消息隊列(也稱作消息傳遞)
  • 共享內存(也稱作共享存儲)
  • 信號量和 PV 操作
  • 信號
  • 套接字(Socket)

2. 管道

匿名管道

各位如果學過 Linux 命令,那對管道肯定不陌生,Linux 管道使用豎線 | 連接多個命令,這被稱為管道符。

  1. $ command1 | command2 

以上這行代碼就組成了一個管道,它的功能是將前一個命令(command1)的輸出,作為后一個命令(command2)的輸入,從這個功能描述中,我們可以看出「管道中的數據只能單向流動」,也就是半雙工通信,如果想實現相互通信(全雙工通信),我們需要創建兩個管道才行。

另外,通過管道符 | 創建的管道是匿名管道,用完了就會被自動銷毀。并且,匿名管道只能在具有親緣關系(父子進程)的進程間使用,。也就是說,「匿名管道只能用于父子進程之間的通信」。

在 Linux 的實際編碼中,是通過 pipe 函數來創建匿名管道的,若創建成功則返回 0,創建失敗就返回 -1:

  1. int pipe (int fd[2]); 

該函數擁有一個存儲空間為 2 的文件描述符數組:

fd[0] 指向管道的讀端,fd[1] 指向管道的寫端

fd[1] 的輸出是 fd[0] 的輸入

粗略的解釋一下通過匿名管道實現進程間通信的步驟:

1)父進程創建兩個匿名管道,管道 1(fd1[0]和 fd1[1])和管道 2(fd2[0]和 fd2[1]);

因為管道的數據是單向流動的,所以要想實現數據雙向通信,就需要兩個管道,每個方向一個。

2)父進程 fork 出子進程,于是對于這兩個匿名管道,子進程也分別有兩個文件描述符指向匿名管道的讀寫兩端;

3)父進程關閉管道 1 的讀端 fd1[0] 和 管道 2 的寫端 fd2[1],子進程關閉管道 1 的寫端 fd1[1] 和 管道 2 的讀端 fd2[0],這樣,管道 1 只能用于父進程寫、子進程讀;管道 2 只能用于父進程讀、子進程寫。管道是用「環形隊列」實現的,數據從寫端流入從讀端流出,這就實現了父子進程之間的雙向通信。

 

看完上面這些講述,我們來理解下管道的本質是什么:對于管道兩端的進程而言,管道就是一個文件(這也就是為啥管道也被稱為共享文件機制的原因了),但它不是普通的文件,它不屬于某種文件系統,而是自立門戶,單獨構成一種文件系統,并且只存在于內存中。

簡單來說,「管道的本質就是內核在內存中開辟了一個緩沖區,這個緩沖區與管道文件相關聯,對管道文件的操作,被內核轉換成對這塊緩沖區的操作」。

有名管道

匿名管道由于沒有名字,只能用于父子進程間的通信。為了克服這個缺點,提出了有名管道,也稱做 FIFO,因為數據是先進先出的傳輸方式。

所謂有名管道也就是提供一個路徑名與之關聯,這樣,即使與創建有名管道的進程不存在親緣關系的進程,只要可以訪問該路徑,就能夠通過這個有名管道進行相互通信。

使用 Linux 命令 mkfifo 來創建有名管道:

  1. $ mkfifo myPipe 

myPipe 就是這個管道的名稱,接下來,我們往 myPipe 這個有名管道中寫入數據:

  1. $ echo "hello" > myPipe 

執行這行命令后,你會發現它就停在這了,這是因為管道里的內容沒有被讀取,只有當管道里的數據被讀完后,命令才可以正常退出。于是,我們執行另外一個命令來讀取這個有名管道里的數據:

  1. $ cat < myPipe 
  2. hello 

3. 消息隊列可以看出,「管道這種進程通信方式雖然使用簡單,但是效率比較低,不適合進程間頻繁地交換數據,并且管道只能傳輸無格式的字節流」。為此,消息傳遞機制(Linux 中稱消息隊列)應用而生。比如,A 進程要給 B 進程發送消息,A 進程把數據放在對應的消息隊列后就可以正常返回了,B 進程在需要的時候自行去消息隊列中讀取數據就可以了。同樣的,B 進程要給 A 進程發送消息也是如此。

 

「消息隊列的本質就是存放在內存中的消息的鏈表,而消息本質上是用戶自定義的數據結構」。如果進程從消息隊列中讀取了某個消息,這個消息就會被從消息隊列中刪除。對比一下管道機制:

  • 消息隊列允許一個或多個進程向它寫入或讀取消息。
  • 消息隊列可以實現消息的「隨機查詢」,不一定非要以先進先出的次序讀取消息,也可以按消息的類型讀取。比有名管道的先進先出原則更有優勢。
  • 對于消息隊列來說,在某個進程往一個隊列寫入消息之前,并不需要另一個進程在該消息隊列上等待消息的到達。而對于管道來說,除非讀進程已存在,否則先有寫進程進行寫入操作是沒有意義的。
  • 消息隊列的生命周期隨內核,如果沒有釋放消息隊列或者沒有關閉操作系統,消息隊列就會一直存在。而匿名管道隨進程的創建而建立,隨進程的結束而銷毀。

需要注意的是,消息隊列對于交換較少數量的數據很有用,因為無需避免沖突。但是,由于用戶進程寫入數據到內存中的消息隊列時,會發生從用戶態「拷貝」數據到內核態的過程;同樣的,另一個用戶進程讀取內存中的消息數據時,會發生從內核態拷貝數據到用戶態的過程。因此,「如果數據量較大,使用消息隊列就會造成頻繁的系統調用,也就是需要消耗更多的時間以便內核介入」。

4. 共享內存

為了避免像消息隊列那樣頻繁的拷貝消息、進行系統調用,共享內存機制出現了。

顧名思義,共享內存就是允許不相干的進程將同一段物理內存連接到它們各自的地址空間中,使得這些進程可以訪問同一個物理內存,這個物理內存就成為共享內存。如果某個進程向共享內存寫入數據,所做的改動將「立即」影響到可以訪問同一段共享內存的任何其他進程。

集合內存管理的內容,我們來深入理解下共享內存的原理。首先,每個進程都有屬于自己的進程控制塊(PCB)和邏輯地址空間(Addr Space),并且都有一個與之對應的頁表,負責將進程的邏輯地址(虛擬地址)與物理地址進行映射,通過內存管理單元(MMU)進行管理。「兩個不同進程的邏輯地址通過頁表映射到物理空間的同一區域,它們所共同指向的這塊區域就是共享內存」。

 

不同于消息隊列頻繁的系統調用,對于共享內存機制來說,僅在建立共享內存區域時需要系統調用,一旦建立共享內存,所有的訪問都可作為常規內存訪問,無需借助內核。這樣,數據就不需要在進程之間來回拷貝,所以這是最快的一種進程通信方式。

 

5. 信號量和 PV 操作

實際上,對具有多 CPU 系統的最新研究表明,在這類系統上,消息傳遞的性能其實是要優于共享內存的,因為「消息隊列無需避免沖突,而共享內存機制可能會發生沖突」。也就是說如果多個進程同時修改同一個共享內存,先來的那個進程寫的內容就會被后來的覆蓋。

并且,在多道批處理系統中,多個進程是可以并發執行的,但由于系統的資源有限,進程的執行不是一貫到底的, 而是走走停停,以不可預知的速度向前推進(異步性)。但有時候我們又希望多個進程能密切合作,按照某個特定的順序依次執行,以實現一個共同的任務。

舉個例子,如果有 A、B 兩個進程分別負責讀和寫數據的操作,這兩個線程是相互合作、相互依賴的。那么寫數據應該發生在讀數據之前。而實際上,由于異步性的存在,可能會發生先讀后寫的情況,而此時由于緩沖區還沒有被寫入數據,讀進程 A 沒有數據可讀,因此讀進程 A 被阻塞。

 

因此,為了解決上述這兩個問題,保證共享內存在任何時刻只有一個進程在訪問(互斥),并且使得進程們能夠按照某個特定順序訪問共享內存(同步),我們就可以使用進程的同步與互斥機制,常見的比如信號量與 PV 操作。

「進程的同步與互斥其實是一種對進程通信的保護機制,并不是用來傳輸進程之間真正通信的內容的,但是由于它們會傳輸信號量,所以也被納入進程通信的范疇,稱為低級通信」。

下面的內容和上篇文章【看完了進程同步與互斥機制,我終于徹底理解了 PV 操作】中所講的差不多,看過的小伙伴可直接跳到下一標題。

信號量其實就是一個變量 ,我們可以用一個信號量來表示系統中某種資源的數量,比如:系統中只有一臺打印機,就可以設置一個初值為 1 的信號量。

用戶進程可以通過使用操作系統提供的一對原語來對信號量進行操作,從而很方便的實現進程互斥或同步。這一對原語就是 PV 操作:

1)「P 操作」:將信號量值減 1,表示「申請占用一個資源」。如果結果小于 0,表示已經沒有可用資源,則執行 P 操作的進程被阻塞。如果結果大于等于 0,表示現有的資源足夠你使用,則執行 P 操作的進程繼續執行。

可以這么理解,當信號量的值為 2 的時候,表示有 2 個資源可以使用,當信號量的值為 -2 的時候,表示有兩個進程正在等待使用這個資源。不看這句話真的無法理解 V 操作,看完頓時如夢初醒。

2)「V 操作」:將信號量值加 1,表示「釋放一個資源」,即使用完資源后歸還資源。若加完后信號量的值小于等于 0,表示有某些進程正在等待該資源,由于我們已經釋放出一個資源了,因此需要喚醒一個等待使用該資源(就緒態)的進程,使之運行下去。

我覺得已經講的足夠通俗了,不過對于 V 操作大家可能仍然有困惑,下面再來看兩個關于 V 操作的問答:

問:「信號量的值 大于 0 表示有共享資源可供使用,這個時候為什么不需要喚醒進程」?

答:所謂喚醒進程是從就緒隊列(阻塞隊列)中喚醒進程,而信號量的值大于 0 表示有共享資源可供使用,也就是說這個時候沒有進程被阻塞在這個資源上,所以不需要喚醒,正常運行即可。

問:「信號量的值 等于 0 的時候表示沒有共享資源可供使用,為什么還要喚醒進程」?

答:V 操作是先執行信號量值加 1 的,也就是說,把信號量的值加 1 后才變成了 0,在此之前,信號量的值是 -1,即有一個進程正在等待這個共享資源,我們需要喚醒它。

信號量和 PV 操作具體的定義如下:

 

互斥訪問共享內存

兩步走即可實現不同進程對共享內存的互斥訪問:

  • 定義一個互斥信號量,并初始化為 1
  • 把對共享內存的訪問置于 P 操作和 V 操作之間

 

「P 操作和 V 操作必須成對出現」。缺少 P 操作就不能保證對共享內存的互斥訪問,缺少 V 操作就會導致共享內存永遠得不到釋放、處于等待態的進程永遠得不到喚醒。

 

 

實現進程同步

回顧一下進程同步,就是要各并發進程按要求有序地運行。

舉個例子,以下兩個進程 P1、P2 并發執行,由于存在異步性,因此二者交替推進的次序是不確定的。假設 P2 的 “代碼4” 要基于 P1 的 “代碼1” 和 “代碼2” 的運行結果才能執行,那么我們就必須保證 “代碼4” 一定是在 “代碼2” 之后才會執行。

 

如果 P2 的 “代碼4” 要基于 P1 的 “代碼1” 和 “代碼2” 的運行結果才能執行,那么我們就必須保證 “代碼4” 一定是在 “代碼2” 之后才會執行。

使用信號量和 PV 操作實現進程的同步也非常方便,三步走:

  • 定義一個同步信號量,并初始化為當前可用資源的數量
  • 在優先級較「高」的操作的「后」面執行 V 操作,釋放資源
  • 在優先級較「低」的操作的「前」面執行 P 操作,申請占用資源

 

配合下面這張圖直觀理解下:

 

6. 信號

注意!「信號和信號量是完全不同的兩個概念」!

信號是進程通信機制中唯一的「異步」通信機制,它可以在任何時候發送信號給某個進程。「通過發送指定信號來通知進程某個異步事件的發送,以迫使進程執行信號處理程序。信號處理完畢后,被中斷進程將恢復執行」。用戶、內核和進程都能生成和發送信號。

信號事件的來源主要有硬件來源和軟件來源。所謂硬件來源就是說我們可以通過鍵盤輸入某些組合鍵給進程發送信號,比如常見的組合鍵 Ctrl+C 產生 SIGINT 信號,表示終止該進程;而軟件來源就是通過 kill 系列的命令給進程發送信號,比如 kill -9 1111 ,表示給 PID 為 1111 的進程發送 SIGKILL 信號,讓其立即結束。我們來查看一下 Linux 中有哪些信號:

 

7. Socket

至此,上面介紹的 5 種方法都是用于同一臺主機上的進程之間進行通信的,如果想要「跨網絡與不同主機上的進程進行通信」,那該怎么做呢?這就是 Socket 通信做的事情了(「當然,Socket 也能完成同主機上的進程通信」)。

 

Socket 起源于 Unix,原意是「插座」,在計算機通信領域,Socket 被翻譯為「套接字」,它是計算機之間進行通信的一種約定或一種方式。通過 Socket 這種約定,一臺計算機可以接收其他計算機的數據,也可以向其他計算機發送數據。

從計算機網絡層面來說,「Socket 套接字是網絡通信的基石」,是支持 TCP/IP 協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的 IP 地址,本地進程的協議端口,遠地主機的 IP 地址,遠地進程的協議端口。

Socket 的本質其實是一個編程接口(API),是應用層與 TCP/IP 協議族通信的中間軟件抽象層,它對 TCP/IP 進行了封裝。它「把復雜的 TCP/IP 協議族隱藏在 Socket 接口后面」。對用戶來說,只要通過一組簡單的 API 就可以實現網絡的連接。

 

8. 總結

簡單總結一下上面六種 Linux 內核提供的進程通信機制:

1)首先,最簡單的方式就是「管道」,管道的本質是存放在內存中的特殊的文件。也就是說,內核在內存中開辟了一個緩沖區,這個緩沖區與管道文件相關聯,對管道文件的操作,被內核轉換成對這塊緩沖區的操作。管道分為匿名管道和有名管道,匿名管道只能在父子進程之間進行通信,而有名管道沒有限制。

2)雖然管道使用簡單,但是效率比較低,不適合進程間頻繁地交換數據,并且管道只能傳輸無格式的字節流。為此「消息隊列」應用而生。消息隊列的本質就是存放在內存中的消息的鏈表,而消息本質上是用戶自定義的數據結構。如果進程從消息隊列中讀取了某個消息,這個消息就會被從消息隊列中刪除。

3)消息隊列的速度比較慢,因為每次數據的寫入和讀取都需要經過用戶態與內核態之間數據的拷貝過程,「共享內存」可以解決這個問題。所謂共享內存就是:兩個不同進程的邏輯地址通過頁表映射到物理空間的同一區域,它們所共同指向的這塊區域就是共享內存。如果某個進程向共享內存寫入數據,所做的改動將立即影響到可以訪問同一段共享內存的任何其他進程。

對于共享內存機制來說,僅在建立共享內存區域時需要系統調用,一旦建立共享內存,所有的訪問都可作為常規內存訪問,無需借助內核。這樣,數據就不需要在進程之間來回拷貝,所以這是最快的一種進程通信方式。

4)共享內存速度雖然非常快,但是存在沖突問題,為此,我們可以使用信號量和 PV 操作來實現對共享內存的互斥訪問,并且還可以實現進程同步。

5)「信號」和信號量是完全不同的兩個概念!信號是進程通信機制中唯一的異步通信機制,它可以在任何時候發送信號給某個進程。通過發送指定信號來通知進程某個異步事件的發送,以迫使進程執行信號處理程序。信號處理完畢后,被中斷進程將恢復執行。用戶、內核和進程都能生成和發送信號。

6)上面介紹的 5 種方法都是用于同一臺主機上的進程之間進行通信的,如果想要跨網絡與不同主機上的進程進行通信,就需要使用 「Socket」 通信。另外,Socket 也能完成同主機上的進程通信。

總結完畢!

 

責任編輯:武曉燕 來源: 飛天小牛肉
相關推薦

2016-11-15 15:20:42

光通信市場5G

2025-04-02 00:00:04

2009-01-04 15:38:07

索引SQL Server數據庫

2023-10-18 10:48:44

Python解釋器

2010-07-30 13:15:17

Flex優勢

2010-09-25 15:22:19

DHCP故障處理

2010-08-16 10:14:23

云計算誤區

2024-10-22 14:42:14

2009-05-21 18:21:25

HP虛擬化網絡

2009-05-21 18:34:45

HP虛擬化群集

2009-05-21 18:25:40

HP虛擬化分區

2023-11-01 16:01:00

數據類型Rust

2021-08-12 14:31:52

邊緣計算云計算數據

2023-05-05 18:32:04

React開發工具

2022-01-23 10:44:39

零信任網絡安全網絡攻擊

2023-08-31 22:12:51

低代碼隱患技術

2013-08-23 10:42:03

Hadoop

2009-06-10 17:13:50

Java開源軟件

2023-05-11 11:36:56

云計算云供應商

2010-09-09 10:54:58

點贊
收藏

51CTO技術棧公眾號

免费观看成人性生生活片 | 偷拍与自拍一区| 亚洲第一精品夜夜躁人人爽| 777精品久无码人妻蜜桃| 亚洲 欧美 激情 小说 另类| 日韩av一级片| 欧美精品成人91久久久久久久| 国产吞精囗交久久久| 久久久加勒比| 欧美日韩另类字幕中文| 色婷婷精品国产一区二区三区| 国产孕妇孕交大片孕| 夜夜精品视频| 理论片在线不卡免费观看| 国产成人精品无码片区在线| 99欧美精品| 亚洲成av人片一区二区梦乃| 亚洲精品日韩在线观看| 婷婷久久久久久| 国产一区二区三区四区五区入口 | 黄色网址在线免费看| 视频国产在线观看| 国产在线视频一区二区| 国产精品福利小视频| 日本一区二区不卡在线| 综合精品一区| 中文字幕日韩视频| 好吊视频在线观看| 欧美1区2区3区4区| 欧美不卡一区二区三区| 91 视频免费观看| 成人看片网站| 欧美性xxxx18| 91视频最新入口| av影片在线| 亚洲一区二区在线免费观看视频 | 亚洲精品男同| 欧美寡妇偷汉性猛交| 熟女少妇a性色生活片毛片| 免费欧美激情| 亚洲精品日韩久久久| 日本50路肥熟bbw| 在线免费观看黄色av| 91丝袜美腿高跟国产极品老师| 亚洲xxx大片| 91麻豆成人精品国产免费网站| 日精品一区二区三区| 清纯唯美亚洲激情| 欧美国产成人精品一区二区三区| 在线精品观看| 久久琪琪电影院| 久久草视频在线| 一区福利视频| 97超级碰碰碰久久久| 日本三级免费看| 亚洲精品美女| 欧亚精品在线观看| 无码人妻黑人中文字幕| 天堂成人免费av电影一区| 奇米一区二区三区四区久久| 久久久久久91亚洲精品中文字幕| 香蕉久久久久久久av网站| 欧美在线日韩在线| 午夜一区二区三区四区| 日本中文字幕一区二区有限公司| 国产精品色悠悠| 一本久道久久综合无码中文| 韩国v欧美v亚洲v日本v| 91精品国产综合久久久久久丝袜 | 亚洲精品成a人在线观看| 你懂的在线观看网站| 美女视频免费精品| 亚洲欧美制服丝袜| 99热6这里只有精品| 自拍日韩欧美| 欧美亚洲一区在线| 中文字幕视频免费观看| 久久成人免费网| 亚洲精品日韩激情在线电影| 性做久久久久久久| 99精品黄色片免费大全| 亚洲成人自拍视频| 99福利在线| 午夜精品在线视频一区| 久久久久久久久久福利| 色999韩欧美国产综合俺来也| 日韩欧美一区二区视频| 麻豆国产精品一区| www999久久| 亚洲国产成人精品女人久久久| 蜜桃av免费看| 你懂的视频一区二区| 欧美孕妇性xx| 国产日韩欧美一区二区东京热| 成人做爰69片免费看网站| 久久国产精品高清| 老司机午夜在线视频| 亚洲图片欧美色图| 天天干天天干天天干天天干天天干| 成人网av.com/| 亚洲国产成人精品久久久国产成人一区 | 亚洲片在线观看| 国产男女猛烈无遮挡在线喷水| 亚洲国产精品一区制服丝袜| 国产精品一区二区性色av| 丰满熟妇人妻中文字幕| 国产精品素人视频| 久久久久久久午夜| 亚洲伊人伊成久久人综合网| 亚洲国产日韩精品在线| 天堂网中文在线观看| 国产精品五区| 99在线热播| 天堂资源在线中文| 色妹子一区二区| 亚洲色图欧美日韩| 亚洲精品午夜av福利久久蜜桃| 97精品久久久| а√天堂资源在线| 国产欧美日韩在线| 99在线精品免费视频| 国产在线一区不卡| 中文字幕精品www乱入免费视频| 国产精品30p| 国产精品 欧美精品| 一本色道久久综合亚洲精品婷婷| 欧美国产大片| 亚洲黄页网在线观看| 久久久久久激情| 经典三级在线一区| 亚洲五月六月| 成人在线观看免费视频| 亚洲人成网站777色婷婷| 日韩欧美一区二区一幕| 成人一区二区视频| 免费在线黄网站| 香蕉大人久久国产成人av| 久久精品亚洲94久久精品| 又污又黄的网站| 国产视频一区二区三区在线观看| aaa毛片在线观看| 伊人久久大香线蕉av不卡| 97久久久久久| 日本波多野结衣在线| 夜夜嗨av一区二区三区中文字幕| 日韩不卡的av| 午夜日韩视频| 成人综合电影| 国产福利电影在线播放| 亚洲成人在线网| 国产亚洲精品久久777777| 高清国产一区二区| 男人添女人下部高潮视频在观看 | 日韩在线电影一区| 成人国产一区| www.国产一区| 999av视频| 亚洲自拍偷拍九九九| 日韩精品aaa| 综合天堂av久久久久久久| 91影视免费在线观看| 亚洲大胆人体大胆做受1| 日韩久久久久久| 日韩三级视频在线| 久久久亚洲精品一区二区三区| 国产精品乱码久久久久| 99精品视频在线| 99在线视频免费观看| 麻豆国产在线| 自拍偷拍亚洲在线| 国产偷拍一区二区| 精品久久久久久久久久| 精品国产成人亚洲午夜福利| 久国产精品韩国三级视频| 亚洲av综合色区| 国产suv精品一区二区四区视频| 欧美一区二区三区……| 137大胆人体在线观看| 欧美一级艳片视频免费观看| 国产一级淫片免费| 久久品道一品道久久精品| 中国黄色片一级| 国产一区日韩一区| 欧美一区二区三区四区在线观看地址| 亚洲mmav| 久久久久久免费精品| 国产精品四虎| 欧美一卡在线观看| 国产在线观看黄色| 国产精品国产三级国产aⅴ无密码| 四虎国产精品永久免费观看视频| 国产精品美女久久久| 中文字幕日韩一区二区三区| 国产日韩三级| 成人免费自拍视频| 欧美gv在线观看| 久久综合国产精品台湾中文娱乐网| 少妇人妻偷人精品一区二区| 欧美日韩激情一区二区三区| 日韩欧美视频在线免费观看| 日韩一区中文字幕| 波多野结衣福利| 国产老女人精品毛片久久| 国产无套粉嫩白浆内谢的出处| 在线看片不卡| 亚洲国产精品久久久久久女王| 国产精品99久久免费观看| 国产又爽又黄的激情精品视频| 97蜜桃久久| 久久综合88中文色鬼| 91在线高清| 亚洲老头同性xxxxx| www.五月婷| 欧美猛男gaygay网站| 国产精品乱子伦| 亚洲午夜在线观看视频在线| 四虎影视1304t| 久久婷婷色综合| 久久出品必属精品| 欧美96一区二区免费视频| 日韩欧美一区二| 欧美黄色一区二区| 亚洲丰满在线| 欧美国产极品| 国产精品传媒毛片三区| 精品一区二区三区视频在线播放| 国产精品久久久久久久久久久久久 | 黄色一区二区在线观看| 免费日韩在线视频| 亚洲色图视频网| 国产亚洲精品熟女国产成人| 91在线国内视频| 久久久久久久久久久久国产精品| 国产尤物一区二区| 免费看黄色一级大片| 亚洲在线国产日韩欧美| 成年人视频观看| 校园激情久久| 成人免费观看毛片| 夜久久久久久| 国产精品沙发午睡系列| 狠狠入ady亚洲精品经典电影| 在线丝袜欧美日韩制服| 成人综合一区| 亚洲精品二区| 婷婷综合亚洲| 400部精品国偷自产在线观看| 亚洲v在线看| 欧美精品在欧美一区二区| 中文在线播放一区二区 | 99热国产在线中文| 久久99久久久久久久噜噜| 超碰在线无需免费| 欧美美最猛性xxxxxx| 亚洲妇熟xxxx妇色黄| 欧美精品福利在线| а√在线天堂官网| 欧美一级黄色网| 日韩欧美看国产| 国产精品青青在线观看爽香蕉| 国产麻豆一区| 91精品视频免费| 91九色鹿精品国产综合久久香蕉| 成人性色av| 亚洲精品中文字幕99999| 欧美日韩综合网| 久久视频精品| 色婷婷777777仙踪林| 欧美黄色免费| 女人和拘做爰正片视频| 毛片av中文字幕一区二区| 一级黄色免费毛片| 国产高清视频一区| 国产极品一区二区| 国产日产欧美一区二区视频| 中国一级片在线观看| 亚洲一区二区欧美激情| 日韩av大片在线观看| 欧美专区在线观看一区| 国产老女人乱淫免费| 亚洲第一免费播放区| 国产二区在线播放| 欧美日韩爱爱视频| 免费成人动漫| 91免费视频网站| 天堂俺去俺来也www久久婷婷| 亚洲一二三区精品| 黄色日韩精品| 一道本视频在线观看| 国产suv精品一区二区883| 亚洲精品国产一区黑色丝袜| 亚洲色图另类专区| 69成人免费视频| 日韩欧美国产午夜精品| 欧美美女搞黄| 欧美国产第一页| 91国内外精品自在线播放| 国产精品免费一区二区三区观看| 精品日本12videosex| 嫩草影院中文字幕| 卡一卡二国产精品| 日本黄色免费观看| 亚洲精品一二三区| 国产一级片免费视频| 欧美精品一区二区三区在线| 午夜在线播放| 人人爽久久涩噜噜噜网站| 中文字幕亚洲在线观看| 亚洲精品视频一二三| 久久不射网站| 久久久久亚洲无码| 亚洲另类一区二区| 真实新婚偷拍xxxxx| 日韩成人性视频| 日本在线视频中文有码| 国产精品日韩专区| 九色精品91| 欧美视频在线播放一区| 成人午夜短视频| 日本黄色小说视频| 欧美日韩激情在线| av电影在线观看网址| 日本国产欧美一区二区三区| 久久丝袜视频| 成人精品视频在线播放| 国产一区不卡精品| 午夜激情视频在线播放| 欧美在线看片a免费观看| 天天在线女人的天堂视频| 国内精品国产三级国产在线专| 豆花视频一区| 三年中国中文在线观看免费播放 | 亚洲不卡av一区二区三区| 911美女片黄在线观看游戏| 一本大道亚洲视频| 日韩成人高清| 欧洲亚洲一区二区| 中文日韩在线| 色婷婷精品久久二区二区密| 亚洲成av人影院| 黄色小视频免费观看| 久久国产精品久久久| 日韩精品中文字幕吗一区二区| 欧美与动交zoz0z| 国产专区综合网| 538任你躁在线精品视频网站| 欧美一区二视频| 中文在线免费| 国产精品成人一区二区三区| 激情婷婷久久| 97人妻精品一区二区三区免 | 欧美日韩xxxx| 国产三级三级三级看三级| 日本一区二区免费在线观看视频| 国产精品高清无码| 久久精品国产2020观看福利| 成人豆花视频| 丁香花在线影院观看在线播放| a在线播放不卡| 三级网站在线播放| 色偷偷888欧美精品久久久| 中文成人在线| 国产精品无码免费专区午夜| 99精品久久免费看蜜臀剧情介绍| 成年人av网站| 中文在线资源观看视频网站免费不卡 | 亚洲欧美日韩高清在线| 亚洲午夜精品在线观看| 无吗不卡中文字幕| 国产高清一区在线观看| 国产久一一精品| 欧美午夜在线视频| aaaaa一级片| 欧美日韩精品综合在线| 国产又色又爽又黄刺激在线视频| 久久99精品久久久久久三级| 日日欢夜夜爽一区| www.超碰在线观看| 日韩国产精品一区| 亚洲欧美一级| 国产免费黄色av| 国产精品人人做人人爽人人添| 国内老熟妇对白hdxxxx| 97在线视频一区| 欧美高清在线| 亚洲熟女乱综合一区二区三区 | 国语对白做受69| blacked蜜桃精品一区| 99热这里只有精品2| 色偷偷久久一区二区三区| 国产剧情在线| 欧美一区二区高清在线观看| 国产aⅴ综合色| 最新黄色网址在线观看| 欧美激情性做爰免费视频| 精品国产一区二区三区香蕉沈先生 | 视频一区二区三区四区五区| 久久精品男人天堂| 亚洲美女久久| 极品白嫩的小少妇|