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

Linux下訪問匿名頁發生的神奇“化學反應”

系統 Linux
本文中,主要分析匿名頁的訪問將發生哪些可能顛覆我們認知的"化學反應"。

[[436312]]

 Linux中有后備文件支持的頁稱為文件頁,如屬于進程的代碼段、數據段的頁,內存回收的時候這些頁面只需要做臟頁的同步即可(干凈的頁面可以直接丟棄掉)。反之為匿名頁,如進程的堆棧使用的頁,內存回收的時候這些頁面不能簡單的丟棄掉,需要交換到交換分區或交換文件。本文中,主要分析匿名頁的訪問將發生哪些可能顛覆我們認知的"化學反應"。

1.實例代碼

首先以一個簡單的示例代碼來說明: 

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <unistd.h>  
  4. #include <string.h>  
  5. #include <sys/mman.h>  
  6. #define MAP_SIZE (100 * 1024 * 1024)  
  7. int main(int argc, char *argv[])  
  8.  
  9.  char *p;  
  10.  char val;  
  11.  int i; 
  12.  puts("before mmap ok, pleace exec 'free -m'!");  
  13.  sleep(5);  
  14.  //mmap  
  15.  p = mmap(NULL, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);  
  16.  if(p == NULL) {  
  17.   perror("fail to malloc");  
  18.   return -1;  
  19.  }   
  20.  puts("after mmap ok, pleace exec 'free -m'!");  
  21.  sleep(5);  
  22.  //read  
  23.  for (i = 0; i < MAP_SIZE; i++) {  
  24.   val = p[i];  
  25.  }  
  26.  puts("read ok, pleace exec 'free -m'!");  
  27.  sleep(5);  
  28. #if 1  
  29.  //write  
  30.  memset(p, 0x55, MAP_SIZE);  
  31.  puts("write ok, pleace exec 'free -m'!");  
  32. #endif  
  33.  //sleep  
  34.  pause();  
  35.  return 0;  

代碼非常簡單:首先通過mmap分配100M的私有可讀可寫匿名頁面,然后進行讀寫訪問,分別在提示的時候在另外一個窗口執行free -m命令查看輸出結果。

程序執行結果如下: 

  1. $ ./anon_rw_demo  
  2. before mmap ok, pleace exec 'free -m'!  
  3. after mmap ok, pleace exec 'free -m'!  
  4. read ok, pleace exec 'free -m'!  
  5. write ok, pleace exec 'free -m'! 

命令執行結果如下: 

  1. $ free -m  
  2.               總計         已用        空閑      共享    緩沖/緩存    可用  
  3. 內存:       15729        8286        1945         895        5497        6220  
  4. 交換:       16290        1599       14691  
  5. $ free -m  
  6.               總計         已用        空閑      共享    緩沖/緩存    可用  
  7. 內存:       15729        8286        1945         895        5497        6220  
  8. 交換:       16290        1599       14691  
  9. $ free -m  
  10.               總計         已用        空閑      共享    緩沖/緩存    可用  
  11. 內存:       15729        8286        1945         895        5497        6220  
  12. 交換:       16290        1599       14691  
  13. $ free -m  
  14.               總計         已用        空閑      共享    緩沖/緩存    可用  
  15. 內存:       15729        8383        1848         895        5497        6123  
  16. 交換:       16290        1599       14691 

可以看到:

第一次提示執行free命令的時候,我們還沒有開始通過mmap分配內存,此時free命令輸出作為參考。

第二次提示執行free命令的時候,我們已經通過mmap分配了100M的內存,此時發現free命令輸出內存消耗基本沒有變化。

第三次提示執行free命令的時候,我們對于分配的匿名頁面進行了讀操作,此時發現free命令輸出內存消耗頁基本沒有變化, 這基本上會顛覆我們的認知。

第四次提示執行free命令的時候,我們對于分配的匿名頁面進行了寫操作,此時發現free命令輸出內存消耗大概為100M。

2.內核原理

下面我們從Linux內核的層面來解析發生以上神奇現象的原理。

2.1 mmap的內存消耗

mmap申請匿名頁的時候,只是申請了虛擬內存(通過vm_area_struct結構來描述,如描述虛擬內存區域的地址范圍、訪問權限等,以下簡稱vma),實際的物理內存并沒有申請(除了用于管理虛擬內存區域的vma等結構內存的申請),當前虛擬內存和物理內存并沒有建立頁表映射關系,而真正的申請的匿名頁所對應的物理頁在實際訪問的時候按需分配獲得,所以此時我們看不到內存的消耗情況。

2.2 第一次讀匿名頁的內存消耗

通過mmap申請完虛擬內存之后,進程就可以按照之前申請vma的訪問權限進行訪問,第一發生讀訪問,這個時候由于虛擬內存和物理內存并沒有建立頁表映射關系,通過虛擬地址并不能查找到物理內存,所以會發生處理器的異常,最終分析是因為數據訪問異常導致,就由處理器架構相關的代碼進入了我們通用的缺頁異常處理例程中。

缺頁異常調用鏈如下: 

  1. "mm/memory.c" 
  2. 處理器架構相關異常處理代碼  
  3. -> handle_mm_fault  
  4.     -> __handle_mm_fault  
  5.         -> handle_pte_fault  
  6.             ->  if (!vmf->pte) {   ------------------- 1  
  7.                      if (vma_is_anonymous(vmf->vma))  ------------------- 2  
  8.                              return do_anonymous_page(vmf);   ------------------- 3 

缺頁異常進入handle_pte_fault后,在1標簽代碼處,來判斷訪問的虛擬內存頁的頁表項是否為空,為空說明這個這個虛擬頁沒有和物理頁建立映射關系。然后在2標簽代碼處判斷是否為匿名頁缺頁異常(實際上是判斷是否為私有的匿名頁,當前當前示例代碼場景申請的為私有匿名頁面)。在3標簽代碼處,進行真正的私有匿名頁缺頁異常處理。

下面主要看下第一次讀匿名頁的處理: 

  1. do_anonymous_page  
  2. ->pte_alloc(vma->vm_mm, vmf->pmd)   ------------------- 1  
  3. ->/* Use the zero-page for reads */  
  4. if (!(vmf->flags & FAULT_FLAG_WRITE) &&     ------------------- 2  
  5.                 !mm_forbids_zeropage(vma->vm_mm)) { ------------------- 3  
  6.         entry = pte_mkspecial(pfn_pte(my_zero_pfn(vmf->address),  
  7.                                         vma->vm_page_prot));  ------------------- 4  
  8.         vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd,  
  9.                         vmf->address, &vmf->ptl);  ------------------- 5   
  10.           ...  
  11.         goto setpte; 
  12.  
  13. ->  page = alloc_zeroed_user_highpage_movable(vma, vmf->address); ------------------- 6  
  14. -> entry = mk_pte(page, vma->vm_page_prot);  ------------------- 7  
  15.  entry = pte_sw_mkyoung(entry); ------------------- 8  
  16.  if (vma->vm_flags & VM_WRITE)  
  17.          entry = pte_mkwrite(pte_mkdirty(entry));  ------------------- 9  
  18.  vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, vmf->address,  
  19.                  &vmf->ptl); ------------------- 10               
  20.   ->set_pte_at(vma->vm_mm, vmf->address, vmf->pte, entry);  ------------------- 11 

1標簽處:判斷虛擬地址對應的pmd表項是否為空,為空來分配直接頁表設置到pmd表項中。

2標簽處:判斷是否是進行讀訪問。

3標簽處:判斷是否沒有禁止0頁。

4標簽處:就是對于沒有禁止0頁的匿名頁讀訪問設置頁表,這里通過0頁的頁幀號和mmap映射時指定的訪問權限組合頁表項的值。

5標簽處:通過發生缺頁的虛擬地址來計算出頁表項的地址保存在 vmf->pte。

最11標簽處:將4標簽初組合出的頁表項的值寫入到5標簽初計算出的頁表項中。

以上分析可知:對于私有的匿名頁,第一次讀訪問的時候都會發生缺頁異常,然后通過頁表映射0頁,這個0頁沒有什么特殊之處,只不過它是在系統啟動過程中初始化好的一塊內容全為0的頁面,這樣做可以為進程分配了內存只進行讀訪問節省大量物理內存。

2.3 第一次寫匿名頁的內存消耗

大家可以將示例代碼中,讀訪問屏蔽掉只進行寫訪問,觀察內存消耗。

這個時候發生缺頁異常時,不會在走2 3 4 5 便簽處代碼,而在6處分配了一個物理頁面,在7 8 9組合頁表項的值, 10處計算出頁表項的地址,最后把組合的值設置到頁表項中。

需要注意第9處,如果是寫訪問會設置頁表項的可寫標志位。

以上分析可知:對于私有的匿名頁,第一次寫訪問的時候都會發生缺頁異常,會真正分配一個物理頁面,然后將虛擬頁面通過頁面映射到物理頁面,所以我們能觀察到寫之后發生了大量內存消耗。

2.4 第一次讀然后寫匿名頁的內存消耗

這種場景就是示例代碼中所做的實驗,可以看到讀的時候基本上沒有內存消耗,寫的時候發生了大量內存消耗。

關于第一次讀,上面已經做過解釋,下面主要看讀完之后的頁面發生寫訪問的情況。

2.4.1 從mmap說起

實際上,對于一個私有的內存映射,在mmap的時候為頁表映射準備訪問權限的時候并不是給予所有的權限,而是把可寫屬性去掉了。

我們可以從源代碼找到答案: 

  1. "mm/mmap.c"  
  2. do_mmap  
  3. ->mmap_region  
  4.     ->vma_set_page_prot(vma)  
  5.         ->vm_page_prot = vm_pgprot_modify(vma->vm_page_prot, vm_flags);  ---------1  
  6.             ->pgprot_modify(oldprot, vm_get_page_prot(vm_flags))  
  7.         ->WRITE_ONCE(vma->vm_page_prot, vm_page_prot);  ---------------2     
  8.   /* description of effects of mapping type and prot in current implementation.  
  9.   * this is due to the limited x86 page protection hardware.  The expected  
  10.   * behavior is in parens:  
  11.   *  
  12.   * map_type     prot  
  13.   *              PROT_NONE       PROT_READ       PROT_WRITE      PROT_EXEC  
  14.   * MAP_SHARED   r: (no) no      r: (yes) yes    r: (no) yes     r: (no) yes  
  15.   *              w: (no) no      w: (no) no      w: (yes) yes    w: (no) no  
  16.   *              x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes 
  17.   *  
  18.   * MAP_PRIVATE  r: (no) no      r: (yes) yes    r: (no) yes     r: (no) yes  
  19.   *              w: (no) no      w: (no) no      w: (copy) copy  w: (no) no  
  20.   *              x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes  
  21.   */  
  22. ->vm_get_page_prot     
  23.   pgprot_t protection_map[16] __ro_after_init = {  
  24.         __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,  
  25.         __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111  
  26. }; 

對于__Pxxx,  最后一個x表示vma屬性是否可讀,倒數第二個x表示vma屬性是否可寫,P后面的x表示是否可執行。

1標簽處根據mmap傳遞的訪問權限來構造最終的訪問權限標識。

2標簽處將構造好的訪問權限標識記錄到vma->vm_page_prot中,供缺頁異常設置頁表使用。

注釋中已經做了詳細的解釋,具體頁表屬性如何表示由各自的處理器架構相關代碼來做(eg: 對于x86架構 #define __P111  PAGE_COPY_EXEC),我們只需要知道:無論我們想讓vma具備那些屬性組合,都會屏蔽掉寫屬性,具體可以查看相關的處理器架構實現。

所以,再次回到缺頁異常處理代碼中。在2.2小節的4標簽處,使用mmap設置好的頁表訪問權限設置頁表屬性,當前場景我們知道,mmap中指定為私有的可讀可寫屬性,而頁表中只是設置為了只讀屬性。

2.4.2 寫時復制的觸發

讀訪問將虛擬頁以只讀的方式映射到了0頁,當再次發生寫操作時,就會再次觸數據訪問異常,最終進入缺頁異常處理例程中。

下面給出調用鏈: 

  1. "mm/memory.c"  
  2. handle_pte_fault  
  3. ->if (vmf->flags & FAULT_FLAG_WRITE) {  -----------1  
  4.         if (!pte_write(entry)) -----------2  
  5.                 return do_wp_page(vmf); -----------3 

可以看到最終也是在handle_pte_fault中處理:在1標簽處判斷是否為寫訪問。在2標簽處判斷頁表項的屬性是否是只讀。在3標簽處進行實際的寫時復制處理。

以上分析可知:發生寫訪問操作時,如果vma可寫,但是頁表屬性標識不可寫(只讀),會發生寫時復制缺頁異常,對于當前場景的0頁的寫訪問就是如此,在do_wp_page中會重新分配物理頁面映射到虛擬頁面,然后頁表設置為可寫屬性,就完成了缺頁處理。

3.總結

1)mmap分配私有匿名內存時,會設置vma的vm_page_prot成員,去除掉頁表的寫訪問標識。

2)第一次讀匿名頁時,對于可讀可寫的vma,虛擬頁會以只讀的方式映射到0頁。

3)第一次寫匿名頁時,對于可讀可寫的vma,會申請物理頁面,虛擬頁以可讀可寫的方式映射到此物理頁。

4)第一次讀匿名頁后,然后寫匿名頁,先只讀方式映射到0頁,然后發生寫時復制,分配物理頁,虛擬頁以可讀可寫的方式映射到此物理頁。

可以發現,訪問匿名頁面時發生的“化學反應”并不是那么的簡單,其中會涉及mmap的映射原則,0頁的映射,匿名頁面的處理,寫時復制的處理等等,而且讀寫順序不一樣,產生的結果也會不一樣,大家可以結合內核源代碼進行分析,希望對大家理解匿名頁缺頁異常有所幫助。 

 

責任編輯:龐桂玉 來源: 良許Linux
相關推薦

2024-02-29 16:51:36

GenAI運營供應鏈

2019-07-17 15:07:06

物聯網網絡安全技術

2015-11-13 10:35:05

大數據醫院信息化WOT

2018-10-18 14:37:01

國際貿易AI反應

2020-08-28 15:39:26

谷歌量子計算開發者

2019-07-08 08:54:38

5G網絡區塊鏈物聯網設備

2021-04-19 11:25:22

智能制造

2018-12-17 06:02:21

物聯網設備物聯網產業物聯網

2018-01-12 16:02:43

ETC

2020-08-21 18:47:25

阿里云釘釘IaaS

2023-05-31 07:27:54

筆記本電池單元

2023-12-09 15:21:47

模型分子

2021-04-20 19:15:51

瀏覽器網絡URL

2016-10-13 16:47:14

2019-03-19 07:32:32

華為生態大會智能攝像機

2011-03-04 15:38:54

Vsftpd

2010-03-04 14:44:18

2023-08-29 16:26:20

Linux命令行
點贊
收藏

51CTO技術棧公眾號

国产精品第三页| 亚洲男人天天操| 欧美日韩视频免费| 亚洲 欧美 激情 另类| 日韩av电影天堂| 精品自拍视频在线观看| 丰满少妇在线观看资源站| 国产成人亚洲一区二区三区| 亚洲国产中文字幕| 色就是色欧美| 人妻va精品va欧美va| 久久一区国产| 毛片精品免费在线观看| 国产国语性生话播放| 99re8精品视频在线观看| 欧美日韩国产精品专区 | 亚洲欧美一区二区三区久本道91 | 亚洲一区二区三区中文字幕 | a视频在线观看| 91碰在线视频| 福利视频一区二区三区| 在线观看亚洲一区二区| 销魂美女一区二区三区视频在线| 久久久精品国产| 精品无人区无码乱码毛片国产| 蜜桃精品一区二区三区| 欧美日韩激情一区| 国产又黄又大又粗视频| 伦理在线一区| 一区二区三区在线看| 亚洲一区影院| 秋霞av在线| 成人精品视频网站| 亚洲综合在线做性| 国产又黄又爽视频| 日韩av电影天堂| 清纯唯美亚洲激情| 亚洲精品男人天堂| 亚洲国产日本| 午夜精品久久久久久久99黑人| 男人操女人的视频网站| 天天射综合网视频| 日韩一中文字幕| 青青青视频在线免费观看| 天堂成人娱乐在线视频免费播放网站| 精品国产sm最大网站免费看| 青青草原播放器| 国产电影一区二区| 欧美一区欧美二区| 91香蕉国产线在线观看| 国产精品亚洲四区在线观看| 在线不卡中文字幕| 肉色超薄丝袜脚交| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 亚洲v国产v在线观看| 男女视频在线观看免费| 久久这里只有精品首页| 欧美日韩高清在线一区| 欧美日本网站| 中文字幕欧美三区| 中文字幕乱码一区二区三区| 永久av在线| 亚洲人成精品久久久久久 | 国产日韩欧美一区| 日韩美女主播视频| 中文字幕一二区| 久久精品国产亚洲aⅴ| 成人精品一区二区三区电影黑人| 国产在成人精品线拍偷自揄拍| 狠狠色丁香婷综合久久| 亚洲自拍偷拍色片视频| 欧美天堂在线视频| 久久久久久久久免费| 天堂精品视频| 国产成人在线视频免费观看| 亚洲综合免费观看高清完整版在线 | 日本少妇一区二区三区| 91综合精品国产丝袜长腿久久| 精品99一区二区| 久久久久久久无码| 精品国产一区一区二区三亚瑟| 综合av色偷偷网| 久久精品99国产精| 久久精品欧洲| 亚洲aⅴ男人的天堂在线观看| 亚洲国产精品久久久久久6q| 久久综合九色欧美综合狠狠| 亚洲精品二区| 国产精品69xx| 在线观看亚洲专区| 欧美一级大片免费看| 亚洲精品国产setv| 美女精品久久久| 中文字幕一区二区人妻电影| 捆绑紧缚一区二区三区视频 | 天天综合天天综合| 欧美激情一区在线观看| 国产爆乳无码一区二区麻豆| 全亚洲第一av番号网站| 欧美一区二区视频在线观看2020| www.四虎在线| 久久日文中文字幕乱码| 久久久视频精品| 一级黄色免费看| 99久免费精品视频在线观看 | 三级网站在线免费观看| 欧美.www| 国产精品久久久久久久久久小说| 亚洲av无码国产综合专区| 久久久久88色偷偷免费| 777久久精品一区二区三区无码| 毛片免费看不卡网站| 日韩一区二区三区在线| 亚洲精品成人av久久| 亚洲高清久久| 97超级碰碰| 秋霞a级毛片在线看| 欧美日韩一区二区在线播放| 精产国品一区二区三区| 色一区二区三区四区| 欧美与欧洲交xxxx免费观看| www.欧美国产| 亚洲欧洲成人自拍| 日本在线观看免费视频| 欧美激情影院| 欧美国产日本高清在线| 国产一区二区在线视频聊天 | 日韩av在线免费看| 九九热精彩视频| 国产一区二区三区在线观看免费| 手机成人在线| 人人鲁人人莫人人爱精品| 日韩国产精品视频| 日本少妇裸体做爰| 岛国一区二区在线观看| 国产911在线观看| 成人av在线播放| 日韩亚洲综合在线| 伊人免费在线观看高清版| 久久精品免视看| 日韩av一二三四| 狠狠操综合网| 国产极品精品在线观看| 麻豆av电影在线观看| 粉嫩老牛aⅴ一区二区三区| 欧美日韩人妻精品一区在线| 国产一区日韩欧美| 国产精品区一区二区三含羞草| 手机在线免费看av| 欧美sm美女调教| 伊人国产在线观看| www.66久久| 91好吊色国产欧美日韩在线| 一本色道久久综合亚洲精品酒店| 欧洲一区二区视频| av女优在线| 欧美日韩国产乱码电影| 国产老头老太做爰视频| 国产精品一区二区久激情瑜伽| 男人j进女人j| 亚洲国产欧美国产第一区| 欧美日本精品在线| 人妻精品一区二区三区| 欧美视频免费在线观看| 中文字幕在线播放视频| 久久久国产亚洲精品| 日韩免费三级| www.成人| 欧美激情在线观看视频| 三级视频在线| 欧美日韩久久一区| 久久精品www| 久久免费看少妇高潮| 欧美伦理片在线观看| 欧美精品黄色| 欧美不卡福利| 日韩成人在线电影| 欧美激情奇米色| 欧美性孕妇孕交| 欧美猛男男办公室激情| 国产一级做a爱免费视频| 91一区在线观看| 自拍偷拍21p| 欧美亚洲不卡| 日韩精彩视频| 91国内精品| 国产精品人成电影| 丁香花在线高清完整版视频 | 性少妇bbw张开| 精品一区二区影视| 免费国产a级片| 91综合视频| 精品综合久久久| 日本午夜精品久久久久| 97碰碰碰免费色视频| 五月天婷婷在线视频| 日韩av影视综合网| 国产乱色精品成人免费视频| 欧美日韩亚洲成人| 99久久婷婷国产综合| 久久综合国产精品| 欧美日韩一区二区区别是什么| 日韩高清在线观看| 国产精品成人久久电影| 日韩成人影院| 免费看成人午夜电影| 日韩精品一区二区三区中文在线| 奇米影视亚洲狠狠色| 女子免费在线观看视频www| 国产一区二区日韩精品欧美精品| 亚洲精品视频91| 欧美日韩国产小视频| 五月天综合激情网| 亚洲一区二区三区激情| av资源在线免费观看| 26uuu国产电影一区二区| 超碰在线超碰在线| 蜜桃av一区二区三区电影| 免费在线a视频| 国产精品vip| 色撸撸在线观看| 精品九九在线| 欧美日韩电影一区二区| 久久午夜影院| 国产精品日韩高清| 久久国产精品免费一区二区三区| 国产精品一区二区久久久久| 性欧美18一19sex性欧美| 国产91精品久久久久久| xxxx另类黑人| 国外成人在线直播| 男男gaygays亚洲| 欧美国产日韩一区二区三区| www视频在线免费观看 | 狠狠操一区二区三区| 久久97久久97精品免视看| 精品美女在线观看视频在线观看| 一区二区三欧美| youjizz在线播放| 在线视频欧美日韩精品| 国产女人在线视频| 中文字幕av一区二区| 成人在线观看一区| 尤物九九久久国产精品的分类| jizz在线观看中文| 中文字幕欧美国内| 免费在线观看av片| 久久精品视频99| 主播国产精品| 久久久久久久久久久免费| 91制片在线观看| 韩日精品中文字幕| 中文av在线全新| 国产va免费精品高清在线| 99九九久久| 91精品在线影院| 日韩一区免费| 精品国产乱码久久久久久丨区2区| 粉嫩久久久久久久极品| 精品日本一区二区三区| 国产尤物久久久| 亚洲一区二区三区精品视频| 91精品国产视频| 久久手机在线视频| 午夜宅男久久久| 欧美三级理论片| 国产麻豆精品在线| 污污内射在线观看一区二区少妇| 久久这里都是精品| 国产一二三四视频| 亚洲资源在线观看| 日韩一区二区视频在线| 欧美日精品一区视频| 99精品视频免费看| 亚洲二区中文字幕| 国产黄色片在线播放| 超碰91人人草人人干| 成人三级小说| 国产精品福利网站| 婷婷综合国产| 欧美一级二级三级| 亚洲欧洲美洲一区二区三区| 国产青青在线视频| 久久精品国产99久久6| 少妇伦子伦精品无吗| 国产亚洲综合色| 青娱乐国产在线| 91福利国产精品| 亚洲av无码片一区二区三区| 亚洲精品视频免费| av网站导航在线观看免费| 欧美在线亚洲在线| 激情五月综合婷婷| 欧美日韩亚洲免费| 欧美三级网页| 日韩精品你懂的| 99免费精品在线观看| 91久久国产综合| 在线视频中文字幕一区二区| 国内老熟妇对白hdxxxx| 亚洲性69xxxbbb| 91桃色在线观看| 91日本在线视频| 国产一区网站| 91免费视频网站在线观看| 国产精品一二三四五| 娇妻被老王脔到高潮失禁视频| 亚洲女女做受ⅹxx高潮| 欧美videossex极品| 欧美精品色一区二区三区| 欧美69xxxxx| 久久久免费av| 日韩中文字幕无砖| 在线观看一区二区三区三州| 免费看的黄色欧美网站| 欧美图片自拍偷拍| 亚洲欧美韩国综合色| 亚洲性猛交富婆| 亚洲人成啪啪网站| 国产精品一区二区日韩| www.一区二区三区| 91成人影院| 国产乱女淫av麻豆国产| 欧美国产在线观看| 天堂网中文字幕| 亚洲毛茸茸少妇高潮呻吟| 丁香花在线高清完整版视频 | 欧美熟妇交换久久久久久分类| 久久国产精品99国产精| 亚洲a成人v| 亚洲精品一区二区三| 视频一区二区三区在线| 中文精品在线观看| 欧美日韩国产在线播放| 隣の若妻さん波多野结衣| 欧美精品在线免费播放| 二区三区精品| 中文字幕乱码免费| 国产伦理精品不卡| 久久久无码精品亚洲国产| 91麻豆精品久久久久蜜臀| 黄色av电影在线观看| 国产在线观看91精品一区| 欧美高清视频手机在在线| 九九热99视频| 亚洲免费看黄网站| 精品人妻伦一二三区久久| 欧美成人精品在线播放| 精品国产一区二区三区2021| 欧美三级午夜理伦三级老人| 国产毛片精品一区| 久久精品一区二区三| 精品国内二区三区| 国产精品原创| 日本一区二区精品| 毛片一区二区三区| 麻豆天美蜜桃91| 精品国产精品网麻豆系列| 欧美78videosex性欧美| 久久亚洲高清| 日本成人超碰在线观看| 日本精品在线免费观看| 日韩精品中文字幕一区二区三区| 3344国产永久在线观看视频| 精品在线观看一区二区| 日本欧美一区二区| 99鲁鲁精品一区二区三区| 日韩精品一区在线| 最新欧美色图| 亚洲精品影院| 国产成人av电影免费在线观看| 久草手机在线观看| 国产丝袜一区二区| 欧美啪啪网站| 搞av.com| 欧美激情综合网| 亚洲高清视频网站| 国产脚交av在线一区二区| 午夜天堂精品久久久久| 800av在线播放| 欧美日韩视频第一区| 国内老司机av在线| 神马影院午夜我不卡影院| 国产一区二区三区久久久| 久久亚洲天堂网| 久久激情五月丁香伊人| 卡通动漫国产精品| wwwwwxxxx日本| 欧美日韩一区二区三区| 超碰在线无需免费| 另类小说综合网| 国产麻豆视频一区| 色老头在线视频| 久久理论片午夜琪琪电影网| 国模吧精品视频| 艳妇乳肉豪妇荡乳xxx| 欧美美女bb生活片| 伊人久久视频| 成年女人18级毛片毛片免费 | 永久久久久久|