《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > Linux進程是如何創建出來的?

Linux進程是如何創建出來的?

2022-11-18
作者:張彥飛allen
來源:電子技術應用專欄作家 一口Linux
關鍵詞: Linux進程

  在 Linux 中,進程是我們非常熟悉的東東了,哪怕是只寫過一天代碼的人也都用過它。但是你確定它不是你最熟悉的陌生人?我們今天通過深度剖析進程的創建過程,幫助你提高對進程的理解深度。

  在這篇文章中,我會用 Nginx 創建 worker 進程的例子作為引入,然后帶大家了解一些進程的數據結構 task_struct,最后再帶大家看一下 fork 執行的過程。

  學習完本文,你將深度理解進程中的那些關鍵要素,諸如進程地址空間、當前目錄、父子進程關系、進程打開的文件 fd 表、進程命名空間等。也能學習到內核在保存已經使用的 pid 號時是如何優化內存占用的。我們展開今天的拆解!

  一、Nginx 之 fork 創建 worker

  在 Linux 進程的創建中,最核心的就是 fork 系統調用。不過我們先不著急介紹它,先拿多進程服務中的一個經典例子 - Nginx,來看看他是如何使用 fork 來創建 worker 的。

  Nginx 服務采用的是多進程方式來工作的,它啟動的時候會創建若干個 worker 進程出來,來響應和處理用戶請求。創建 worker 子進程的源碼位于 nginx 源碼的 src/os/unix/ngx_process_cycle.c 文件中。通過循環調用 ngx_spawn_process 來創建 n 個 worker 出來。

 微信截圖_20221118145602.png

  在 ngx_spawn_process 中調用 fork 來創建進程,創建成功后 Worker 進程就將進入自己的入口函數中開始工作了。

  二、Linux 中對進程的表示

  在深入理解進程創建之前,我們先來看一下進程的數據結構。

  在 Linux 中,是用一個 task_struct 來實現 Linux 進程的(其實 Linux 線程也同樣是用 task_struct 來表示的,這個我們以后文章單獨再說)。

  微信截圖_20221118145630.png

  我們來看看 task_struct 具體的定義,它位于 include/linux/sched.h

  微信截圖_20221118145648.png

  2.1 進程線程狀態

  進程線程都是有狀態的,它的狀態就保存在 state 字段中。常見的狀態中 TASK_RUNNING 表示進程線程處于就緒狀態或者是正在執行。TASK_INTERRUPTIBLE 表示進程線程進入了阻塞狀態。

  一個任務(進程或線程)剛創建出來的時候是 TASK_RUNNING 就緒狀態,等待調度器的調度。調度器執行 schedule 后,任務獲得 CPU 后進入  執行進行運行。當需要等待某個事件的時候,例如阻塞式 read 某個 socket 上的數據,但是數據還沒有到達的時候,任務進入 TASK_INTERRUPTIBLE 或 TASK_UNINTERRUPTIBLE 狀態,任務被阻塞掉。

  當等待的事件到達以后,例如 socket 上的數據到達了。內核在收到數據后會查看 socket 上阻塞的等待任務隊列,然后將之喚醒,使得任務重新進入 TASK_RUNNING 就緒狀態。任務如此往復地在各個狀態之間循環,直到退出。

  一個任務(進程或線程)的大概狀態流轉圖如下。

  微信截圖_20221118145721.png

  全部的狀態值在 include/linux/sched.h 中進行了定義。

  微信截圖_20221118145747.png

  2.2 進程 ID

  我們知道,每一個進程都有一個進程 id 的概念。在 task_struct 中有兩個相關的字段,分別是 pid 和 tgid。

 微信截圖_20221118145836.png

  其中 pid 是 Linux 為了標識每一個進程而分配給它們的唯一號碼,稱做進程 ID 號,簡稱 PID。對于沒有創建線程的進程(只包含一個主線程)來說,這個 pid 就是進程的 PID,tgid 和 pid 是相同的。

  微信截圖_20221118145858.png

  2.3 進程樹關系

  在 Linux 下所有的進程都是通過一棵樹來管理的。在操作系統啟動的時候,會創建 init 進程,接下來所有的進程都是由這個進程直接或者間接創建的的。通過 pstree 命令可以查看你當前服務器上的進程樹信息。

微信截圖_20221118150005.png

  那么,這棵進程樹就是由 task_struct 下的 parent、children、sibling 等字段來表示的。這幾個字段將系統中的所有 task 串成了一棵樹。

  微信截圖_20221118150036.png

  2.4 進程調度優先級

  在 task_struct 中有幾個字段是表示進程優先級的,在進程調度的時候會根據這幾個字段來決定優先讓哪個任務(進程或線程)開始執行。

  static_prio: 用來保存靜態優先級,可以調用 nice 系統直接來修改取值范圍為 100~139

  rt_priority: 用來保存實時優先級,取值范圍為 0~99

  prio: 用來保存動態優先級

  normal_prio: 它的值取決于靜態優先級和調度策略

  2.5 進程地址空間

  對于用戶進程來講,內存描述符 mm_struct( mm 代表的是 memory descriptor)是非常核心的數據結構。整個進程的虛擬地址空間部分都是由它來表示的。

  進程在運行的時候,在用戶態其所需要的代碼,全局變量數據,以及 mmap 內存映射等全部都是通過 mm_struct 來進行內存查找和尋址的。這個數據結構的定義位于 include/linux/mm_types.h 文件下。

 微信截圖_20221118150057.png

  其中 start_code、end_code 分別指向代碼段的開始與結尾、start_data 和 end_data 共同決定數據段的區域、start_brk 和 brk 中間是堆內存的位置、start_stack 是用戶態堆棧的起始地址。整個 mm_struct 和地址空間、頁表、物理內存的關系如下圖。

  微信截圖_20221118150126.png

  在內核內存區域,可以通過直接計算得出物理內存地址,并不需要復雜的頁表計算。而且最重要的是所有內核進程、以及用戶進程的內核態,這部分內存都是共享的。

  微信截圖_20221118150145.png

  另外要注意的是,mm(mm_struct)表示的是虛擬地址空間。而對于內核線程來說,是沒有用戶態的虛擬地址空間的。所以內核線程的 mm 的值是 null。

  2.6 進程文件系統信息(當前目錄等)

  進程的文件位置等信息是由 fs_struct 來描述的,它的定義位于 include/linux/fs_struct.h 文件中。

 微信截圖_20221118150200.png

  通過以上代碼可以看出,在 fs_struct 中包含了兩個 path 對象,而每個 path 中都指向了一個 struct dentry。在 Linux 內核中,denty 結構是對一個目錄項的描述。

  微信截圖_20221118150225.png

  拿 pwd 來舉例,該指針指向的是進程當前目錄所處的 denty 目錄項。假如我們在 shell 進程中執行 pwd,或者用戶進程查找當前目錄下的配置文件的時候,都是通過訪問 pwd 這個對象,進而找到當前目錄的 denty 的。

  2.7 進程打開的文件信息

  每個進程用一個 files_struct 結構來記錄文件描述符的使用情況, 這個 files_struct 結構稱為用戶打開文件表。它的定義位于 include/linux/fdtable.h。

  注意:飛哥用的內核源碼一直是 3.10.0, 所以本文也不例外。不同版本的源碼這里稍微可能有些出入。

 微信截圖_20221118150248.png

  在 files_struct 中,最重要的是在 fdtable 中包含的 file **fd 這個數組。這個數組的下標就是文件描述符,其中 0、1、2 三個描述符總是默認分配給標準輸入、標準輸出和標準錯誤。這就是你在 shell 命令中經常看到的 2>&1 的由來。這幾個字符的含義就是把標準錯誤也一并打到標準輸出中來。

  微信截圖_20221118150318.png

  在數組元素中記錄了當前進程打開的每一個文件的指針。這個文件是 Linux 中抽象的文件,可能是真的磁盤上的文件,也可能是一個 socket。

  2.8 namespaces

  在 Linux 中,namespace 是用來隔離內核資源的方式。通過 namespace 可以讓一些進程只能看到與自己相關的一部分資源,而另外一些進程也只能看到與它們自己相關的資源,這兩撥進程根本就感覺不到對方的存在。

  具體的實現方式是把一個或多個進程的相關資源指定在同一個 namespace 中,而進程究竟是屬于哪個 namespace,都是在 task_struct 中由 *nsproxy 指針表明了這個歸屬關系。

微信截圖_20221118150345.png

  命名空間包括PID命名空間、掛載點命名空間、網絡命名空間等多個。飛哥在咱們「開發內功修煉」前面的一篇文章《動手實驗+源碼分析,徹底弄懂Linux網絡命名空間》這一文中詳細介紹過網絡命名空間,感興趣的同學可以詳細閱讀。

  三、解密 fork 系統調用

  前面我們看了 Nginx 使用 fork 來創建 worker 進程,也了解了進程的數據結構 task_struct ,我們再來看看 fork 系統調用的內部邏輯。

  這個 fork 在內核中是以一個系統調用來實現的,它的內核入口是在 kernel/fork.c 下。

 微信截圖_20221118150411.png

  這里注意下調用 do_fork 時傳入的第一個參數,這個參數是一個 flag 選項。它可以傳入的值包括 CLONE_VM、CLONE_FS 和 CLONE_FILES 等等很多,但是這里只傳了一個 SIGCHLD(子進程在終止后發送 SIGCHLD 信號通知父進程),并沒有傳 CLONE_FS 等其它 flag。

  微信截圖_20221118150421.png

  在 do_fork 的實現中,核心是一個 copy_process 函數,它以拷貝父進程的方式來生成一個新的 task_struct 出來。

 微信截圖_20221118150435.png

  在創建完畢后,調用 wake_up_new_task 將新創建的任務添加到就緒隊列中,等待調度器調度執行。

  copy_process 的代碼很長,我對其進行了一定程度的精簡,參加下面的代碼。

  微信截圖_20221118150457.png

  可見,copy_process 先是復制了一個新的 task_struct 出來,然后調用 copy_xxx 系列的函數對 task_struct 中的各種核心對象進行拷貝處理,還申請了 pid。接下來我們分小節來查看該函數的每一個細節。

  3.1 復制進程 task_struct 結構體

  注意一下,上面調用 dup_task_struct 時傳入的參數是 current,它表示的是當前進程。在 dup_task_struct 里,會申請一個新的 task_struct 內核對象,然后將當前進程復制給它。需要注意的是,這次拷貝只會拷貝 task_struct 結構體本身,它內部包含的 mm_struct 等成員只是復制了指針,仍然指向和 current 相同的對象。

微信截圖_20221118150548.png

  

  3.2 拷貝 files_struct

  由于進程之間都是獨立的,所以創建出來的新進程需要拷貝一份獨立的 files 成員出來。

微信截圖_20221118150653.png

  我們看 copy_files 是如何申請和拷貝 files 成員的。

  微信截圖_20221118150703.png

  看上面代碼中判斷了是否有 CLONE_FILES 標記,如果有的話就不執行 dup_fd 函數了,增加個引用計數就返回了。前面我們說了,do_fork 被調用時并沒有傳這個標記。所以還是會執行到 dup_fd 函數:

 微信截圖_20221118150725.png

  這個函數就是到內核中申請一塊內存出來,保存 files_struct 使用。然后對新的 files_struct 進行各種初始化和拷貝。至此,新進程有了自己獨立的 files 成員了。

  3.3 拷貝 fs_struct

  同樣,新進程也需要一份獨立的文件系統信息 - fs_struct 成員的。

微信截圖_20221118150753.png

  在創建進程的時候,沒有傳遞 CLONE_FS 這個標志,所會進入到 copy_fs_struct 函數中申請新的 fs_struct 并進行賦值。

  微信截圖_20221118150808.png

  3.4 拷貝 mm_struct

  前面我們說過,對于進程來講,地址空間是一個非常重要的數據結構。而且進程之間地址空間也必須是要隔離的,所以還會新建一個地址空間。

 微信截圖_20221118150825.png

  do_fork 被調用時也沒有傳 CLONE_VM,所以會調用 dup_mm 申請一個新的地址空間出來。

  微信截圖_20221118150845.png

  在 dup_mm 中,通過 allocate_mm 申請了新的 mm_struct,而且還將當前進程地址空間 current->mm 拷貝到新的 mm_struct 對象里了。

  地址空間是進程線程最核心的東西,每個進程都有獨立的地址空間

  3.5 拷貝進程的命名空間 nsproxy

  在創建進程或線程的時候,還可以讓內核幫我們創建獨立的命名空間。在默認情況下,創建進程沒有指定命名空間相關的標記,因此也不會創建。新舊進程仍然復用同一套命名空間對象。

微信截圖_20221118150906.png

  注意下,在調用 alloc_pid 的時候,其參數傳遞的是新進程的 pid namespace。我們來深看一下 alloc_pid 的執行邏輯。

 微信截圖_20221118150926.png

  這里的 PID 并不是一個整數,而是一個結構體,所以先試用 kmem_cache_alloc 把它申請出來。接下來調用 alloc_pidmap 到 pid 命名空間中申請一個 pid 號出來,申請完后賦值記錄。

  回顧我們開篇提到的一個問題:操作系統是如何記錄使用過的進程號的?在 Linux 內部,為了節約內存,進程號是通過 bitmap 來管理的。

  微信截圖_20221118150942.png

  在每一個 pid 命名空間內部,會有一個或者多個頁面來作為 bitmap。其中每一個 bit 位(注意是 bit 位,不是字節)的 0 或者 1 的狀態來表示當前序號的 pid 是否被占用。

 微信截圖_20221118150957.png

  在各種語言中,一般一個 int 都是 4 個字節,換算成 bit 就是 32 bit。而使用這種 bitmap 的思想的話,只需要一個 bit 就可以表示一個整數,相當的節約內存。所以,在很多超大規模數據處理中都會用到這種思想來進行優化內存占用的。

  3.7 進入就緒隊列

  當 copy_process 執行完畢的時候,表示新進程的一個新的 task_struct 對象就創建出來了。接下來內核會調用 wake_up_new_task 將這個新創建出來的子進程添加到就緒隊列中等待調度。

 微信截圖_20221118151021.png

  等操作系統真正調度開始的時候,子進程中的代碼就可以真正開始執行了。

  四、總結

  在這篇文章中,我用 Nginx 創建 worker 進程的例子作為引入,然后帶大家了解一些進程的數據結構 task_struct,最后又帶大家看一下 fork 執行的過程。

  在 fork 創建進程的時候,地址空間 mm_struct、掛載點 fs_struct、打開文件列表 files_struct 都要是獨立擁有的,所以都去申請內存并初始化了它們。但由于今天我們的例子父子進程是同一個命名空間,所以 nsproxy 還仍然是共用的。

  微信截圖_20221118151037.png

  其中 mm_struct 是一個非常核心的數據結構,用戶進程的虛擬地址空間就是用它來表示的。對于內核線程來講,不需要虛擬地址空間,所以 mm 成員的值為 null。

  另外還學到了內核是用 bitmap 來管理使用和為使用的 pid 號的,這樣做的好處是極大地節約了內存開銷。而且由于數據存儲的足夠緊湊,遍歷起來也是非常的快。一方面原因是數據小,加載起來快。另外一方面是會加大提高 CPU 緩存的命中率,訪問非常快。

  今天的進程創建過程就學習完了。不過細心的同學可能發現了,我們這里只介紹了子進程的調用。但是對于 Nginx 主進程如何加載起來執行的還沒有講到。我們將來還會展開敘述,敬請期待!

  更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 诱惑の诱惑筱田优在线播放 | 欧美性色网 | 国产成人欧美一区二区三区一色天 | 成人免费看片39在线 | youjizzcom国产 | 一本之道高清无码视频 | 久久99精品久久久久久久青青日本 | 亚洲偷| 91一区二区在线观看 | 黑丝国产在线 | 妇与子乱肉肉在线观看 | 国产 日韩 欧美 中文 在线播放 | 成人免费视频视频在线观看 免费 | 中文字幕亚洲综合久久综合 | 中国农村少妇xxxx视频 | 久久精品日产第一区二区三区乱码 | 亚洲女人天堂av | 国产激情av在线 | 香蕉国产片一级一级一级一级 | tube少妇高潮| 国产精欧美一区二区三区久久久 | 国精产品一区一区三区视频 | 欧美日韩性生活视频 | 少妇吹潮| 毛片视屏 | 男人猛躁进女人免费播放 | 欧美人与性动交α欧美精品 | 啪啪资源 | 国产视频精品在线 | 亚洲成人久久久 | 六月婷婷激情 | 波多野吉衣av在线 | 欧美美女一区二区 | 国产一区a | 国产精品久久久一区二区三区网站 | 国产乱子伦无套一区二区三区 | 午夜视频在线观看视频 | 巨肉超污巨黄h文小短文 | 扒开双腿被两个男人玩弄视频 | 六月丁香色婷婷 | 欧美抠逼视频 | 日韩精品无码一区二区三区不卡 | 国产亚洲精品久久网站 | 人人爽人人爽人人爽人人片av | 精品无码av一区二区三区不卡 | 亚洲一久久久久久久久 | 香蕉一区二区 | 国产精品无码免费播放 | 欧美久久一区 | 夜夜艹 | 懂色av一区在线播放 | 正在播放国产老头老太色公园 | 国内毛片精品av一二三 | 国产精品久久久久久久久久红粉 | 国产第1页 | 136av导航| 国产精品性做久久久久久 | 黄色5级片| 欧洲乱码伦视频免费 | 国产肉体xxxx裸体137大胆 | 想看一级黄色片 | 三区四区 | 日韩三级黄色 | 高清免费毛片 | 伊人资源网| 国产精品久久久久久久久久精爆 | 噜噜啪永久免费视频 | 免费麻豆视频 | 色婷婷av一区二区三区gif | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 快播av在线| 日本少妇被黑人xxxxx | 97精品在线视频 | 久久99国产精品久久99果冻传媒新版本 | 四虎影视18库在线影院 | 成人伊人 | 中国女人精69xxx25 | 国产在线不卡视频 | 国产成人三级视频在线播放 | 成人免费区一区二区三区 | 蜜桃视频一区二区三区四区开放时间 | 视频一区 视频二区 视频三区 视频四区 国产 | 黄色资源在线 | 黄色片在线播放 | 婷婷四月开心色房播播网 | 狠狠做深爱婷婷久久综合一区 | 国产99久久久久久免费看 | 日韩性猛交ⅹxxx乱大交 | 精品人妻伦一二三区久久 | 天天躁狠狠躁狠狠躁性色牛牛影视 | 欧美mv日韩mv国产网站app | 少妇又紧又深又湿又爽视频 | 一级生活毛片 | 日日噜噜夜夜狠狠久久丁香五月 | 日韩免费在线观看 | 国产精品九色 | 91视频免费 | 欧美在线免费播放 | 亚洲免费不卡视频 | 午夜肉伦伦 | 免费精品一区二区三区视频日产 | 亚洲乱码少妇 | 日韩和欧美一区二区三区 | 亚洲国产一区在线 | 国产精品无码无卡在线播放 | av无码国产在线看免费网站 | 欧美性猛交99久久久久99按摩 | 中文字幕无码乱人伦 | 日本人与黑人做爰视频 | 久久免费看少妇高潮 | 日本爽爽爽爽爽爽在线观看免 | 婷婷开心深爱五月天播播 | 国产精品欧美在线 | 久久精品国产99久久久古代 | 国产精品一二区 | 久久亚洲国产成人精品无码区 | 网友真实露脸自拍10p | 成人天堂 | 成人男女做爰免费视频网老司机 | 国产精品自拍合集 | 欧美黄色小说 | 婷婷亚洲综合五月天小说 | 色欲av无码一区二区人妻 | 欧美黑人xxxx高潮猛交 | 亚洲桃色综合影院 | 91精品国产一区二区三区 | 亚洲激情图片 | 韩国v欧美v亚洲v日本v | 中文在线观看免费高清 | 天堂av官网 | 亚洲孕交 | 日本 片 成人 在线 日本 在线 | 日本视频在线看 | 亚洲精品成人福利网站 | 亚洲另类春色 | 成人必看www| 国产精品丝袜久久久久久不卡 | 免费观看又色又爽又黄的韩国 | 国产精品欧美久久久久久 | 免费一级片网站 | 熟妇人妻av中文字幕老熟妇 | 久久精品亚洲中文字幕无码网站 | 关秀媚三级露全乳 | 色综亚洲国产vv在线观看 | 日韩国产欧美在线视频 | 超碰在线进入 | 最新国产麻豆aⅴ精品无码 天天摸天天透天天添 | 乳霸冲田杏梨中文字幕担心学生的 | 在线观看毛片av | 国产精品第十页 | 区二区欧美性插b在线视频网站 | 亚洲热热 | 中文字幕无码热在线视频 | 亚洲精品大片www | 国产超级va在线观看视频 | 波多野结衣在线免费视频 | 色偷偷91 | 国产欧美一区二区精品性色超碰 | 亚洲日韩在线观看免费视频 | 在线观看国产日韩 | 91精品啪在线观看国产老湿机 | 日韩三级毛片 | 岛国精品一区二区 | 久久久麻豆精品一区二区 | 久久亚洲精品成人无码网站蜜桃 | 色偷偷色噜噜狠狠成人免费视频 | 日日碰狠狠添天天爽超碰97 | ktv偷拍视频一区二区 | 欧美性网址 | 日韩男人的天堂 | 男人边吃奶边做好爽免费视频 | 亚洲日本aⅴ片在线观看香蕉 | 99久久精品免费看国产免费粉嫩 | 伊人365| 亚洲va中文在线播放免费 | 奇米影视奇奇米色狠狠色777 | 欧美高清视频一区二区 | 亚洲色图在线观看视频 | 少妇哺乳期在线喷奶 | 牛牛影视一区二区 | 性高爱久久久久久久久 | 女人与拘性猛交视频 | 日本欧美韩国国产精品 | 国产又黄又硬又湿又黄 | 日本丰满的人妻hd高清在线 | 在线小视频 | 老牛精品亚洲成av人片 | 国产日韩精品欧美一区喷水 | 国产又粗又猛又黄又爽无遮挡 | 久久精品69 | 四色最新网址 | 国产精品久久久久四虎 | 国产美女久久久亚洲综合 | 欧美日韩亚洲另类 | 国产精品久久久久久模特 | 日韩中文字幕在线看 | 99热久久成人免费频精品2 | 一交一性一色一伦一区二 | 欧美午夜三级 | 国产亚洲精久久久久久无码苍井空 | 中文字幕少妇在线三级hd | 日本xxxx色| 69综合| aa黄色毛片| 尤物精品| 国产 欧美 日韩 在线 | 久久午夜色播影院 | 欧美日韩视频在线观看免费 | 中文字幕亚洲一区二区三区 | 在线免费不卡视频 | 日韩欧美亚洲国产精品字幕久久久 | 99re6在线| 免费福利av | 人人妻人人爽人人做夜欢视频九色 | 欧美性xxxx狂欢老少配 | 久久精品亚洲一区二区三区浴池 | 日本欧美久久久 | 日本亚洲最大的色成网站www | 四虎影视4hu4虎成人 | 久久狼人天堂 | 成人性视频欧美一区二区三区 | 国产69精品久久久久久妇女迅雷 | 亚洲精品成人天堂一二三 | mm131国产精品 | 8090理论片午夜理伦片 | √最新版天堂资源网在线 | 日批视频免费播放 | 在线色网 | 91嫩草香蕉 | av网页在线 | 97久久天天综合色天天综合色hd | 亚洲咪咪| 小h片网站 | 免费污片网站 | 理论片亚洲 | 欧美日韩在线视频观看 | 黄色三级视频网站 | 成人免费在线播放视频 | 在线a视频网站 | 免费不卡av | 日韩精品一区二区三区免费视频观看 | 亚洲加勒比久久88色综合 | 欧美福利一区二区三区 | 中国黄色a级片 | 一区二区在线免费 | 大又大又粗又硬又爽少妇毛片 | 亚洲mv高清砖码区2022伊甸园 | 成人91免费视频 | 一级少妇淫片免费观看 | 国产无遮挡呻吟娇喘视频 | 北条一二三区 | 中文字幕一区二区三区四区欧美 | 51啪影院 | 亚洲精品久久久久久下一站 | av不卡免费看 | 久久亚洲中文字幕无码 | 97精品国产97久久久久久春色 | 精品国产麻豆免费人成网站 | 色婷婷国产精品免费网站 | 亚洲精品视频在线看 | 美女视频黄a视频免费全程软件 | av小次郎收藏 | 日韩亚洲欧美中文在线 | 97精品国产97久久久久久粉红 | 天堂在线网 | 91九色丨porny丨肉丝 | 超碰在线综合 | 搡老女人老妇女老熟妇 | 五月综合激情 | 国产伦精品一区二区三区四区视频 | 亚州视频在线 | 又大又粗又爽的少妇免费视频 | 无码人妻毛片丰满熟妇区毛片 | 亚洲伊人色综合网站小说 | a视频免费看 | 国产大片黄在线观看 | 成人av资源| 最新国产精品自拍 | 国产良家自拍 | 国产真实的和子乱拍在线观看 | 自拍亚洲欧美 | 男人的天堂中文字幕 | 韩国性经典xxxxhd | 亚洲图片欧美在线看 | 亚洲精品国产品国语在线观看 | 亚洲少妇xxx | 日本无遮挡大尺度床戏网站 | 日韩毛片免费在线观看 | 欧美女同网站 | 有夫之妇3高潮中文字幕 | 狠狠撸在线视频 | 噼里啪啦在线高清观看免费 | 亚洲精品久久久乳夜夜欧美 | 国产在线视频91 | 91视频黄色 | 免费的一级片 | 香蕉视频性 | 亚洲日韩国产中文其他 | 日本免费人成视频播放 | 女体拷问一区二区三区 | 亚洲qvod激情经典在线观看 | 华人少妇被黑人粗大的猛烈进 | 国产成人av大片大片在线播放 | 久久av一区 | 韩日一区二区 | 给个av网站 | 亚洲中文字幕乱码av波多ji | 日本高清裸体私密写真集 | 国产天码青椒老色批青椒影视 | 69堂成人精品视频在线观看 | 男人天堂avav| 亚洲香蕉视频天天爽 | 少妇性xxxx性开放黄色 | 91亚洲精品国产成人 | 四色米奇777狠狠狠me | 亚洲欧美激情精品一区二区 | 荫蒂被男人添的好舒服爽免费视频 | 男女啪啪免费体验区 | 日韩欧美一中文字暮视频 | 国产 日韩 欧美 一区 | 男女吃奶做爰猛烈紧视频 | 男人天堂网av| 亚洲欧美在线一区 | 日本一区二区三区日本免费 | 日本成人在线播放 | 亚洲免费视频一区二区 | 日本网站在线看 | 国产成人精品免费视频 | 激情五月深爱五月 | 男女啪啪网站 | 亚洲国产高清视频 | 黄片毛片视频 | 91看片淫黄大片一级在线观看 | 污视频免费在线观看 | 亚洲吧| 日本一道在线 | 久久婷婷久久一区二区三区 | 日本少妇做爰大尺裸体视频 | 超污网站在线观看 | 国产农村妇女精品久久 | 黑人巨大亚洲一区二区久 | 日本中文在线视频 | 国产精品天天干 | 玛雅精品福利视频在线导航 | 欧洲亚洲精品久久久久 | 成人mv在线观看 | 精品久久久噜噜噜久久久 | 成人性做爰aaa片免费看曹查理 | 国产 字幕 制服 中文 在线 | 亚洲国产成人精品久久久国产成人 | 性猛交xxxx | 午夜a区| 精品国产乱码久久久久久郑州公司 | 免费观看全黄做爰的视频 | 欧美另类精品xxxxxx高跟鞋 | 欧美午夜性春猛交xxxx按摩师 | 超碰在线a | 欧美一区二区网站 | 亚洲天堂影院 | 国产乱肥老妇女精品视频网站 | 欧美日韩一区二区三区四区在线观看 | 免费一区二区三区 | 亚洲无圣光 | 久草福利在线观看 | 国产农村老太xxxxhdxx | 亚洲国产午夜精品理论片在线播放 | 调教丰满的已婚少妇在线观看 | 国产91丝袜在线播放九色 | 中文字幕亚洲欧美日韩在线不卡 | 日韩中文字幕亚洲欧美 | 涩涩网站入口 | 日本肥老妇色xxxxx日本老妇 | 精品国产一区二区在线 | 日韩美女视频一区 | 精品熟人一区二区三区四区 | 国内精品久久久久久久影视蜜臀 | 97精品一区二区视频在线观看 | 久久久国产精品消防器材 | 四虎永久在线精品免费观看网站 | 天天干天天射天天爽 | 黄色小网站在线观看 | 在线观看日本 | 国产精品入口尤物 | 农民人伦一区二区三区剧情简介 | 性――交――性――乱 | 亚洲日韩欧洲乱码av夜夜摸 | 亚洲春色在线观看 | 午夜福利国产成人无码gif动图 | 大胸喷奶水www视频妖精网站 | 日韩精品av久久有码一区浪潮 | 在线国产三级 | 国产精品毛多多水多 | 91亚洲国产 | 午夜精品久久久久久久久久 | 日本一区二区不卡在线 | 99在线成人精品视频 | 韩国一区二区三区视频 | 国av在线| 国产免费观看黄av片 | 全黄一级裸片视频 | 中文字幕2018| 亚洲乱人伦中文字幕无码 | 少妇毛片久久久久久久久竹菊影院 | ass精品国模裸体pics | 性少妇mdms丰满hdfilm | 噼里啪啦完整高清观看视频 | 天天看片中文字幕 | 久久国产精品99久久久久久进口 | 亚洲天堂男 | 五月天婷婷缴情五月免费观看 | 人妻丰满熟av无码区hd | 天堂√最新版中文在线地址 | 性生交大片免费全片 | 色综合天天综合色综合av | aaa日本高清在线播放免费观看 | 香港三级午夜理伦三级 | 国产精品久久久久久久 | www亚洲精品少妇裸乳一区二区 | 国产精品v欧美精品v日韩精品v | 亚洲毛片在线观看 | 国产精品久久久久久亚洲影视内衣 | 成人免费毛片偷拍 | av无码精品一区二区三区 | 日韩成人在线网站 | 麻豆精品久久久 | 毛片黄片视频 | 懂色av一区二区三区四区 | 欧美日韩中文字幕视频 | 日日摸天天摸爽爽狠狠97 | 欧美日韩一卡2卡三卡4卡 乱码欧美孕交 | 高潮中文字幕 | 99久久精品免费视频 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 波多野结衣av无码久久一区 | 精品国产久| 狠狠色欧美亚洲狠狠色www | 丝袜美腿一区二区三区 | 7777kkk亚洲综合欧美网站 | www日本久久 | 人妖天堂狠狠ts人妖天堂狠狠 | 91精品国产综合久久香蕉麻豆 | 在线亚洲精品 | 青青伊人影院 | 欧美一级一级一级 | 久久亚洲日韩看片无码 | av噜噜在线 | 国产一区=区 | 人妻少妇精品无码专区 | 一区综合| 噜噜高清欧美内射短视频 | 亚洲福利视频网站 | 精品国产免费一区二区三区五区 | 五月天精品视频在线观看 | 四色永久网址在线观看 | 精品人妻午夜一区二区三区四区 | 国产精品美女久久久久久久 | 懂色av成人一区二区三区 | 一边cao一边粗话打奶视频 | 亚洲人午夜色婷婷 | 手机看片日韩在线 | 欧美一级专区 | 波多野结衣黄色 | 亚洲日韩小电影在线观看 | 国产成人免费xxxxxxxx | 六月丁香婷婷网 | 撕开少妇裙子猛然进入 | 日本少妇乱xxxxx | 国产爆初菊在线观看免费视频网站 | 红猫大本营在线观看的 | 国产hxc132乱人免费视频 | 国产肉体xxxx裸体视频 | 国产一区2区3区 | 永久免费d站视频 | www国产亚洲精品久久麻豆 | 亚洲成av人片在线观看香蕉 | 一级中文片 | 国产福利一区二区三区在线视频 | 亚洲视频在线一区二区 | 国色天香网www在线观看 | 女同久久另类99精品蜜臀 | 亚洲精品美女久久久 | 手机在线观看日韩av | 日日干影院 | 性欧美videos高清hd4k | 成人免费看片网站 | 一本大道久久东京热无码av | 日韩在线免费视频 | 999精品在线视频 | 天天草夜夜操 | 18禁黄久久久aaa片 | 日韩黄色影院 | 极品销魂美女少妇尤物优美 | 乱码av| 99国产精品丝袜久久久久久 | 国产农村妇女精品 | 黄色福利 | 九九九在线视频 | 玩弄人妻少妇500系列视频 | 欧美成人久久久免费播放 | 久久精品79国产精品 | 亚洲最新无码中文字幕久久 | 久久人人爽人人爽人人片ⅴ | 九色丨9lpony丨大学生 | 北条麻妃一区二区三区av高清 | 中文字幕婷婷 | 成人 黄 色 免费播放 | 一级录像免费录像性高湖 | 日韩在线视频观看 | 天堂久久精品忘忧草 | 天天干天天爱天天操 | 亚洲午夜一区 | 好吊妞无缓冲视频观看 | 尤物九九久久国产精品的特点 | 亚洲欧美日韩国产成人精品影院 | 国产成人精品一区二区三区在线 | 国产美女爆我菊免费观看88av | 人人狠狠综合久久亚洲 | 91视频久久久 | 国内精品伊人久久久久av影院 | 免费久久日韩aaaaa大片 | 在线aⅴ亚洲中文字幕 | 国产全肉乱妇杂乱视频 | 亚洲天堂热 | 国产成人亚洲综合色婷婷 | 正在播放酒店约少妇高潮 | 国产一区二区三区免费观看网站上 | 日韩精品无玛区免费专区又长又大 | 欧美日韩精品一区二区三区不卡 | 国产成人综合在线女婷五月99播放 | 香蕉久久夜色精品国产更新时间 | 中文字幕日韩一区二区 | 强迫凌虐淫辱の牝奴在线观看 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 秋霞影院av| 亚洲涩涩爱 | 日本在线免费视频 | 国产一级片av大片 | 狠狠干av | 欧美爽爽爽 | 青青青手机视频在线观看 | 午夜免费福利视频 | 三级毛片国产三级毛片 | 久草97| 日韩精品在线观看网站 | 欧美与黑人午夜性猛交久久久 | 人妻少妇被猛烈进入中文字幕 | 婷婷国产天堂久久综合五月 | 欧美男人的天堂 | 亚洲不卡高清视频 | 综合香蕉| 日韩精品一区二区av在线 | 小12萝8禁在线喷水观看 | 久久激情小说 | 色婷婷av一区 | 精品亚洲一区二区三区四区五区 | 第一宅男av导航入口 | 久久丫精品久久丫 | 欧美一级录像 | 国产影音先锋 | 日韩三级在线播放 | 七七久久 | 久久岛国搬运工 | 午夜精品久久久久 | 国产精品爽 | 国产亚洲精品久久久456 | 一区二区三区国产在线观看 | 无遮挡呻吟娇喘视频免费播放 | 97精品国产露脸对白 | 亚洲一区二区三区偷拍女厕 | 古代中国春交性视频xxx | 一区国产在线 | 成人黄色三级视频 | 亚洲国产精品成人天堂 | 久久久久久美女精品啪啪 | 日韩一欧美内射在线观看 | 国产青青 | 欧美日韩精品一区二区在线观看 | 婷婷五月小说 | 国产精品视频二区不卡 | 国产成人精品亚洲午夜麻豆 | 艳妇臀荡乳欲伦交换日本 | 国产精品视频大全 | 亚洲毛片儿| 日韩精品一区二区免费视频 | 久久91精品国产91久久小草 | 一区二区三区在线播放视频 | 亚洲欧洲一区二区三区四区 | 99精品国产在热久久 | 蜜臀一区 | 欧美激情一区在线 | 成年人在线视频网站 | 亚洲乱码一区二区三区在线观看 | 久久久受 | 久久久久久一区国产精品 | 日本大学生三级三少妇 | 亚洲视频久久 | 福利视频一二三区 | 国产午夜一级一片免费播放 | 国产偷自拍| 色网在线免费观看 | 精品国产一区二区三区小蝌蚪 | 亚洲午夜久久久精品一区二区三区 | 国产日韩精品视频一区二区三区 | 国产精品国产馆在线真实露脸 | 最新中文字幕在线 | 波多野结衣久久精品 | 国产成人在线视频 | 91理论片午午伦夜理片久久 | 精品午夜一区二区 | 国产绿帽口舌视频vk | 国产999精品久久久久久 | 综合色视频 | 男操女逼网站 | 国产亚洲精品久久久久久久久动漫 | 性中国妓女毛茸茸视频 |