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

設置Linux進程的睡眠和喚醒

系統 Linux
在Linux中,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀 態標志位為TASK_RUNNING。一旦一個運行中的進程時間片用完, Linux 內核的調度器會剝奪這個進程對CPU的控制權,并且從運行隊列中選擇一個合適的進程投入運行。

在Linux中,僅等待CPU時間的進程稱為就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀 態標志位為TASK_RUNNING。一旦一個運行中的進程時間片用完, Linux 內核的調度器會剝奪這個進程對CPU的控制權,并且從運行隊列中選擇一個合適的進程投入運行。

當然,一個進程也可以主動釋放CPU的控制權。函數 schedule()是一個調度函數,它可以被一個進程主動調用,從而調度其它進程占用CPU。一旦這個主動放棄CPU的進程被重新調度占用 CPU,那么它將從上次停止執行的位置開始執行,也就是說它將從調用schedule()的下一行代碼處開始執行。

有時候,進程需要等待直到某個特定的事件發生,例如設備初始化完成、I/O 操作完成或定時器到時等。在這種情況下,進程則必須從運行隊列移出,加入到一個等待隊列中,這個時候進程就進入了睡眠狀態。

 

Linux 中的進程睡眠狀態分類

一種是可中斷的睡眠狀態,其狀態標志位TASK_INTERRUPTIBLE;

另一種是不可中斷 的睡眠狀態,其狀態標志位為TASK_UNINTERRUPTIBLE。可中斷的睡眠狀態的進程會睡眠直到某個條件變為真,比如說產生一個硬件中斷、釋放 進程正在等待的系統資源或是傳遞一個信號都可以是喚醒進程的條件。不可中斷睡眠狀態與可中斷睡眠狀態類似,但是它有一個例外,那就是把信號傳遞到這種睡眠 狀態的進程不能改變它的狀態,也就是說它不響應信號的喚醒。不可中斷睡眠狀態一般較少用到,但在一些特定情況下這種狀態還是很有用的,比如說:進程必須等 待,不能被中斷,直到某個特定的事件發生。

在現代的Linux操作系統中,進程一般都是用調用schedule()的方法進入睡眠狀態的,下面的代碼演

示了如何讓正在運行的進程進入睡眠狀態。

  1. sleeping_task = current
  2.  
  3. set_current_state(TASK_INTERRUPTIBLE); 
  4.  
  5. schedule(); 
  6.  
  7. func1(); 
  8.  
  9. /* Rest of the code ... */  

在***個語句中,程序存儲了一份進程結構指針sleeping_task,current 是一個宏,它指向正在執行

的進程結構。set_current_state()將該進程的狀態從執行狀態TASK_RUNNING 變成睡眠狀態

TASK_INTERRUPTIBLE。 如果schedule()是被一個狀態為TASK_RUNNING 的進程調度,那么schedule()將調度另外一個進程占用CPU;如果schedule()是被一個狀態為TASK_INTERRUPTIBLE 或TASK_UNINTERRUPTIBLE 的進程調度,那么還有一個附加的步驟將被執行:當前執行的進程在另外一個進程被調度之前會被從運行隊列中移出,這將導致正在運行的那個進程進入睡眠,因為 它已經不在運行隊列中了。

我們可以使用下面的這個函數將剛才那個進入睡眠的進程喚醒。

  1. wake_up_process(sleeping_task); 

在調用了wake_up_process()以后,這個睡眠進程的狀態會被設置為TASK_RUNNING,而且調度器

會把它加入到運行隊列中去。當然,這個進程只有在下次被調度器調度到的時候才能真正地投入運行。

無效喚醒

幾乎在所有的情況下,進程都會在檢查了某些條件之后,發現條件不滿足才進入睡眠??墒怯械臅r候

進程卻會在 判定條件為真后開始睡眠,如果這樣的話進程就會***期地休眠下去,這就是所謂的無效喚醒問題。在操作系統中,當多個進程都企圖對共享數據進行某種處理,而 ***的結果又取決于進程運行的順序時,就會發生競爭條件,這是操作系統中一個典型的問題,無效喚醒恰恰就是由于競爭條件導致的。

設想有兩個進程A 和B,A 進程正在處理一個鏈表,它需要檢查這個鏈表是否為空,如果不空就對鏈

表里面的數據進行一些操作,同時B進程也在往這個鏈表添加節點。當這個鏈表是空的時候,由于無數據可操作,這時A進程就進入睡眠,當B進程向鏈表里面添加了節點之后它就喚醒A 進程,其代碼如下:

A進程:

  1. spin_lock(&list_lock); 
  2.  
  3. if(list_empty(&list_head)) { 
  4.  
  5.   spin_unlock(&list_lock); 
  6.  
  7.   set_current_state(TASK_INTERRUPTIBLE); 
  8.  
  9.   schedule(); 
  10.  
  11.   spin_lock(&list_lock); 
  12.  
  13.  
  14. /* Rest of the code ... */ 
  15.  
  16. spin_unlock(&list_lock);  

B進程:

  1. spin_lock(&list_lock); 
  2.  
  3. list_add_tail(&list_head, new_node); 
  4.  
  5. spin_unlock(&list_lock); 
  6.  
  7. wake_up_process(processa_task);  

這里會出現一個問題,假如當A進程執行到第3行后第4行前的時候,B進程被另外一個處理器調度

投 入運行。在這個時間片內,B進程執行完了它所有的指令,因此它試圖喚醒A進程,而此時的A進程還沒有進入睡眠,所以喚醒操作無效。在這之后,A 進程繼續執行,它會錯誤地認為這個時候鏈表仍然是空的,于是將自己的狀態設置為TASK_INTERRUPTIBLE然后調用schedule()進入睡 眠。由于錯過了B進程喚醒,它將會***期的睡眠下去,這就是無效喚醒問題,因為即使鏈表中有數據需要處理,A 進程也還是睡眠了。

避免無效喚醒

如何避免無效喚醒問題呢?我們發現無效喚醒主要發生在檢查條件之后和進程狀態被設置為睡眠狀

態之前, 本來B進程的wake_up_process()提供了一次將A進程狀態置為TASK_RUNNING 的機會,可惜這個時候A進程的狀態仍然是TASK_RUNNING,所以wake_up_process()將A進程狀態從睡眠狀態轉變為運行狀態的努力 沒有起到預期的作用。要解決這個問題,必須使用一種保障機制使得判斷鏈表為空和設置進程狀態為睡眠狀態成為一個不可分割的步驟才行,也就是必須消除競爭條 件產生的根源,這樣在這之后出現的wake_up_process ()就可以起到喚醒狀態是睡眠狀態的進程的作用了。

找到了原因后,重新設計一下A進程的代碼結構,就可以避免上面例子中的無效喚醒問題了。

A進程:

  1. set_current_state(TASK_INTERRUPTIBLE); 
  2.  
  3. spin_lock(&list_lock); 
  4.  
  5. if(list_empty(&list_head)) { 
  6.  
  7. spin_unlock(&list_lock); 
  8.  
  9. schedule(); 
  10.  
  11. spin_lock(&list_lock); 
  12.  
  13.  
  14. set_current_state(TASK_RUNNING); 
  15.  
  16.  /* Rest of the code ... */ 
  17.  
  18. spin_unlock(&list_lock);  

可以看到,這段代碼在測試條件之前就將當前執行進程狀態轉設置成TASK_INTERRUPTIBLE了,并且在鏈表不為空的情況下又將自己置為TASK_RUNNING狀態。這樣一來如果B進程在A進程進程檢查

了鏈表為空以后調用wake_up_process(),那么A進程的狀態就會自動由原來TASK_INTERRUPTIBLE

變成TASK_RUNNING,此后即使進程又調用了schedule(),由于它現在的狀態是TASK_RUNNING,所以仍然不會被從運行隊列中移出,因而不會錯誤的進入睡眠,當然也就避免了無效喚醒問題。

Linux內核的例子

在Linux操作系統中,內核的穩定性至關重要,為了避免在Linux操作系統內核中出現無效喚醒問題,

Linux內核在需要進程睡眠的時候應該使用類似如下的操作:

  1. /* ‘q’是我們希望睡眠的等待隊列 */ 
  2.  
  3. DECLARE_WAITQUEUE(wait,current); 
  4.  
  5. add_wait_queue(q, &wait); 
  6.  
  7. set_current_state(TASK_INTERRUPTIBLE); 
  8.  
  9. /* 或TASK_INTERRUPTIBLE */ 
  10.  
  11. while(!condition) /* ‘condition’ 是等待的條件*/ 
  12.  
  13. schedule(); 
  14.  
  15. set_current_state(TASK_RUNNING); 
  16.  
  17. remove_wait_queue(q, &wait);  

上面的操作,使得進程通過下面的一系列步驟安全地將自己加入到一個等待隊列中進行睡眠:首先調

用DECLARE_WAITQUEUE ()創建一個等待隊列的項,然后調用add_wait_queue()把自己加入到等待隊列中,并且將進程的狀態設置為 TASK_INTERRUPTIBLE 或者TASK_INTERRUPTIBLE。然后循環檢查條件是否為真:如果是的話就沒有必要睡眠,如果條件不為真,就調用schedule()。當進程 檢查的條件滿足后,進程又將自己設置為TASK_RUNNING 并調用remove_wait_queue()將自己移出等待隊列。

從上面可以看到,Linux的內核代碼維護者也是在進程檢查條件之前就設置進程的狀態為睡眠狀態,

然后才循環檢查條件。如果在進程開始睡眠之前條件就已經達成了,那么循環會退出并用set_current_state()將自己的狀態設置為就緒,這樣同樣保證了進程不會存在錯誤的進入睡眠的傾向,當然也就不會導致出現無效喚醒問題。

下面讓我們用linux 內核中的實例來看看Linux 內核是如何避免無效睡眠的,這段代碼出自Linux2.6的內核(linux-2.6.11/kernel/sched.c: 4254):

  1. /* Wait for kthread_stop */ 
  2.  
  3. set_current_state(TASK_INTERRUPTIBLE); 
  4.  
  5. while (!kthread_should_stop()) { 
  6.  
  7. schedule(); 
  8.  
  9. set_current_state(TASK_INTERRUPTIBLE); 
  10.  
  11.  
  12. __set_current_state(TASK_RUNNING); 
  13.  
  14. return 0;  

上面的這些代碼屬于遷移服務線程migration_thread,這個線程不斷地檢查kthread_should_stop(),

直 到kthread_should_stop()返回1它才可以退出循環,也就是說只要kthread_should_stop()返回0該進程就會一直睡 眠。從代碼中我們可以看出,檢查kthread_should_stop()確實是在進程的狀態被置為TASK_INTERRUPTIBLE后才開始執行 的。因此,如果在條件檢查之后但是在schedule()之前有其他進程試圖喚醒它,那么該進程的喚醒操作不會失效。

總結

通過上面的討論,可以發現在Linux 中避免進程的無效喚醒的關鍵是在進程檢查條件之前就將進程的

狀態置為TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE,并且如果檢查的條件滿足的話就應該

將其狀態重新設置為TASK_RUNNING。這樣無論進程等待的條件是否滿足, 進程都不會因為被移出就緒隊列而錯誤地進入睡眠狀態,從而避免了無效喚醒問題。 

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關推薦

2018-03-19 08:32:16

Linux 進程睡眠喚醒

2021-07-26 07:47:36

數據庫

2017-12-06 10:50:50

Linux自動喚醒系統運行時間

2021-07-20 08:02:41

Linux進程睡眠

2011-09-09 19:46:46

windows7睡眠

2013-03-25 14:29:23

Surface Pro

2010-09-02 16:40:15

SQL刪除

2016-09-07 18:42:02

Linux進程監控

2020-06-02 17:07:56

內核阻塞進程

2023-01-18 23:06:23

Linux鬧鐘

2010-02-25 10:28:43

Linux進程管理

2010-06-04 14:31:59

Linux 查看進程

2009-12-07 09:35:33

linux內核linuxS3C2410

2010-06-04 15:16:36

Linux 查看進程

2010-06-13 15:17:16

Linux 查看進程

2010-03-03 14:30:35

Linux睡眠休眠

2025-01-26 08:00:00

遠程喚醒技術WOL網卡

2017-03-03 09:40:52

Linux休眠喚醒

2012-08-22 13:53:15

Windows 8Linux

2023-03-02 23:50:36

Linux進程管理
點贊
收藏

51CTO技術棧公眾號

www.爱久久| 国产高清免费观看| 亚洲理论电影片| 色婷婷久久久综合中文字幕| 欧洲一区二区日韩在线视频观看免费| 久草国产在线视频| 欧美自拍视频| 在线一区二区三区| 一区二区三区四区国产| 亚洲免费成人网| 在线亚洲成人| 亚洲视频在线看| 五月花丁香婷婷| av在线网页| 久久综合九色综合97婷婷| 国产欧美在线视频| 久久久久久天堂| 国产一区二区三区四区五区 | 国产亚洲欧美精品久久久www| 久久久免费毛片| 欧美性受xxxx| www.av91| 五月婷婷丁香花| 九九九久久久精品| 久久频这里精品99香蕉| 91狠狠综合久久久久久| 日本成人手机在线| 色一区在线观看| 91手机视频在线| 日漫免费在线观看网站| 日韩成人一级大片| 久久久人成影片一区二区三区| 国产三级av在线播放| 久久久久久久久久久久电影| 日本丰满少妇一区二区三区| 免费的av在线| 搞黄视频在线观看| 日韩视频中午一区| 欧美日韩在线中文| 特级毛片在线| 国产精品三级av| 久久99精品久久久久久久青青日本| 97精品人妻一区二区三区在线| 香蕉国产精品偷在线观看不卡| 欧美成年人视频| 萌白酱视频在线| 亚洲精品动态| 亚洲成人网在线观看| 亚洲一级片av| 丝袜美腿一区| 欧美性猛交xxxx偷拍洗澡| 国产精品一二三在线观看| 在线播放麻豆| 欧美激情一区二区三区四区| 欧美不卡在线一区二区三区| 天天摸天天碰天天爽天天弄| 成人午夜免费电影| 国产精品综合网站| 艳妇乳肉豪妇荡乳av| 激情综合中文娱乐网| 欧美成人自拍视频| 成年人一级黄色片| 中文字幕午夜精品一区二区三区| 色偷偷噜噜噜亚洲男人的天堂| 黄色在线观看av| 日日天天久久| 亚洲色图13p| 性欧美精品男男| 精品99久久| 成人免费视频网址| 一本色道久久88亚洲精品综合| 性生活免费在线观看| 僵尸再翻生在线观看| 亚洲综合在线第一页| 亚洲精品免费在线看| 国产在线网站| 久久香蕉av| 久久久99精品免费观看| 久久人人九九| 青青青草原在线| av高清久久久| 久久国产日韩欧美| 精品欧美不卡一区二区在线观看| 91老司机福利 在线| 日本一区二区三区在线视频| 成人在线播放视频| 久久久99精品免费观看| 亚洲v日韩v欧美v综合| 五月香视频在线观看| 中文字幕一区二区三区在线播放 | 国精产品一区一区二区三区mba| 久久一级电影| 久久九九国产精品怡红院| 欧美做爰爽爽爽爽爽爽| 欧美在线日韩| 97久久久免费福利网址| 中文字幕在线播| 日韩和的一区二区| 亚洲综合精品一区二区| 四虎影院在线域名免费观看| 国产精品视频一二三区| 久久成人福利视频| jizzjizz少妇亚洲水多| 精品国产乱码久久久久久影片| 一级黄色片网址| 好看的日韩av电影| 国产欧美日韩免费看aⅴ视频| 黄频网站在线观看| 中文字幕一区二区三区蜜月| 男人天堂1024| 97人人澡人人爽91综合色| 一本大道亚洲视频| 日本免费观看视| 国产乱码精品一品二品| 日韩一区免费观看| 成人一级福利| 日韩一区二区三区av| 精品人妻一区二区三区视频| 国产精品成人一区二区网站软件| 国产精品久久久久久久9999| 深夜福利免费在线观看| 夜夜夜精品看看| 五月天丁香花婷婷| 极品美女一区二区三区| 欧美性受xxxx白人性爽| 成人精品在线播放| 一区二区三区欧美亚洲| 性欧美1819| 三上亚洲一区二区| 国产精品扒开腿做| 麻豆app在线观看| 亚洲成人久久影院| 特黄特色免费视频| 欧美91福利在线观看| 成人综合网网址| a√在线中文网新版址在线| 色成年激情久久综合| 亚洲第九十七页| 一本久道综合久久精品| 国产精品国产三级国产专区53| 主播国产精品| 日韩午夜激情av| 国产黄在线免费观看| 国产精品一二一区| 男人天堂成人网| 精品久久国产一区| 欧美精品一区在线播放| a毛片在线免费观看| 一区二区国产盗摄色噜噜| 中文字幕av一区二区三区人妻少妇| 亚洲精品国产偷自在线观看| 亚洲已满18点击进入在线看片| 国产原创在线观看| 欧美一区二区免费| 欧美片一区二区| 成人免费视频视频在线观看免费 | 免费视频一区二区| 亚洲一区二区在| av成人在线网站| 欧美日韩第一视频| 欧美一级特黄aaaaaa| 午夜精品久久久久久久99水蜜桃| 中文文字幕文字幕高清| 美女日韩在线中文字幕| 国产精品伦一区二区| 欧美性20hd另类| 波多野结衣 在线| 视频在线观看91| 亚洲欧美日韩精品在线| 欧美亚洲爱爱另类综合| 精彩国产在线| 欧美在线|欧美| 182在线观看视频| 国产一区二区三区四| h无码动漫在线观看| 日韩精选在线| 国产精品永久在线| 色婷婷av在线| 亚洲人成电影网站色| 在线观看亚洲国产| 伊人一区二区三区| 亚洲黄色免费在线观看| 青青青伊人色综合久久| 国产精品久久久影院| 思热99re视热频这里只精品 | 日本免费观看视| 国产日韩精品一区| 日本高清免费观看| 中国女人久久久| 一区二区三区观看| 女同一区二区三区| 国产伊人精品在线| 成年女人在线看片| 日韩在线国产精品| 亚洲欧洲国产综合| 666欧美在线视频| 国产尤物在线视频| 亚洲毛片av在线| 亚洲a v网站| 福利一区福利二区| www.超碰com| 日韩亚洲精品在线| 激情五月五月婷婷| 成人激情视频| 好吊妞www.84com只有这里才有精品 | 国产探花一区二区三区| 久久激情综合| 波多野结衣 作品| 成人影视亚洲图片在线| 国产精品日韩一区二区| 亚洲电影有码| 欧美中文在线观看| 四虎亚洲精品| 色偷偷av一区二区三区乱| 欧美美女搞黄| 亚洲电影免费观看高清完整版在线观看| 中文字幕久久网| 欧美日韩国产精品专区 | 日本福利在线| 亚洲图片在区色| 天天干天天爽天天操| 日韩视频免费直播| 国产免费一区二区三区最新不卡| 91传媒视频在线播放| www.com国产| 综合久久综合久久| 蜜桃av免费观看| 国产视频一区不卡| 色欲av无码一区二区三区| 成人综合在线网站| 亚洲性图第一页| 国产综合成人久久大片91| 一区二区三区在线免费看| 变态调教一区二区三区| 99pao成人国产永久免费视频| 99久久精品一区二区成人| jlzzjlzz亚洲女人| 国产婷婷色一区二区三区| 国产亚洲欧洲高清一区| 欧美日韩激情一区二区| 国产精品久久久久久久午夜 | 日韩va欧美va亚洲va久久| 精品影视av免费| 久久九九99视频| 在线观看亚洲精品| 欧美日韩福利视频| 韩国黄色一级大片| 香蕉视频网站入口| 久久久老熟女一区二区三区91| 久久人人爽人人爽人人| 国产特级aaaaaa大片| 九九九伊在线综合永久| 久久99精品国产自在现线| 在线精品国产| 成人sese在线| 欧美三级韩国三级日本三斤| 久久精品99久久久香蕉| 欧美日韩福利视频| 91精品在线观看视频| 91免费视频黄| 国产精品无码一区二区三区免费| 国产一区二区女内射| 色开心亚洲综合| 日本少妇精品亚洲第一区| 中文字幕av亚洲精品一部二部| 成人av资源网站| 欧美三级日韩三级| 亚洲欧美激情另类校园| 国产精品日韩精品| koreanbj精品视频一区| 久久伊人成人网| 黄色网页在线观看| 中文字幕亚洲影视| 天堂成人免费av电影一区| 亚洲精品一卡二卡| 美女精品视频一区| 日韩国产小视频| 久久精品综合视频| 天天干天天色综合| 蜜桃成人365av| 影音先锋亚洲电影| 91精品国模一区二区三区| 国产香蕉一区二区三区| 欧美福利专区| 免费在线a视频| 免播放器亚洲一区| 色悠悠在线视频| 久久精品综合网| 欧美做爰爽爽爽爽爽爽| 精品国产福利视频| 在线播放国产一区| 亚洲第一视频网| jzzjzzjzz亚洲成熟少妇| 欧美麻豆久久久久久中文| 亚洲一区资源| 91丨九色丨国产在线| 亚洲精华一区二区三区| 4444在线观看| 日韩1区2区3区| 国产伦精品一区二区三区精品| 国产欧美一区二区三区鸳鸯浴| 免费一级肉体全黄毛片| 欧美色综合久久| 无码h黄肉3d动漫在线观看| 久久精品亚洲国产| 竹内纱里奈兽皇系列在线观看| 亚洲一区中文字幕在线观看| 国产欧美亚洲精品a| 欧美视频在线观看视频| 激情成人午夜视频| 国产黄片一区二区三区| 亚洲午夜久久久久久久久电影院| 中文字幕av网站| 亚洲老头同性xxxxx| 欧美寡妇性猛交xxx免费| 国产在线播放不卡| 精品国产精品国产偷麻豆| 免费看国产曰批40分钟| 国产精品主播直播| 91嫩草|国产丨精品入口| 欧美色网一区二区| 国内av一区二区三区| 欧美亚洲国产成人精品| 国产成人一二| 亚洲精品少妇一区二区| 激情综合五月天| 老司机精品免费视频| 日本韩国欧美一区| 三级视频网站在线| 88xx成人精品| 欧美自拍一区| 奇米精品一区二区三区| 成人精品国产一区二区4080| 久久网中文字幕| 日韩一区二区三区免费看| 八戒八戒神马在线电影| 成人www视频在线观看| 日本高清免费电影一区| 欧美婷婷精品激情| 国产欧美精品在线观看| 国产精品免费无遮挡无码永久视频| 亚洲精品白浆高清久久久久久| 嗯啊主人调教在线播放视频| 国产偷国产偷亚洲高清97cao| 国产精品theporn| 国产精品一区二区无码对白| 亚洲一区二区免费视频| 欧美一区二区黄片| 91精品国产沙发| 尤物tv在线精品| 日韩av手机版| 中文字幕一区二区三区在线不卡| 国产女人18毛片水真多| 欧美精品一区三区| 国语一区二区三区| 国产97在线 | 亚洲| 久久男人中文字幕资源站| 波多野结衣一区二区三区四区| 在线看国产精品| 99精品女人在线观看免费视频 | 欧美高清视频在线观看mv| 艹b视频在线观看| 亚洲欧美电影一区二区| 亚洲黄色在线免费观看| 8x拔播拔播x8国产精品| 国模吧精品视频| 999在线精品视频| 亚洲一区二区三区四区在线免费观看| 人妻精品一区二区三区| 国产成人精品最新| 亚洲第一偷拍| 午夜激情影院在线观看| 一区二区三区中文字幕在线观看| 日韩中文字幕综合| 国产精国产精品| 在线国产一区| 免费看污黄网站在线观看| 欧美三级蜜桃2在线观看| 日本三级在线观看网站| 蜜桃视频在线观看91| 精品综合免费视频观看| 日本污视频在线观看| 伊人成人开心激情综合网| 天堂久久av| 啊啊啊国产视频| 亚洲电影中文字幕在线观看| 成人高清免费观看mv| www 成人av com| 日韩电影在线一区二区| 欧美黄片一区二区三区| 欧美人成免费网站| 夜夜爽妓女8888视频免费观看| www.久久久久| 人人香蕉久久| 五月天开心婷婷| 欧美午夜影院在线视频| 超碰在线免费播放| 日本一区二区三区视频在线播放 | 亚洲熟女一区二区| 欧美视频第二页|