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

大名鼎鼎的進(jìn)程調(diào)度就是從這里開始的

開發(fā) 測試
書接上回,上回書咱們說到,time_init 方法通過與 CMOS 端口進(jìn)行讀寫交互,獲取到了年月日時分秒等數(shù)據(jù),并通過這些計算出了開機(jī)時間 startup_time 變量,是從 1970 年 1 月 1 日 0 時起到開機(jī)當(dāng)時經(jīng)過的秒數(shù)。

書接上回,上回書咱們說到,time_init 方法通過與 CMOS 端口進(jìn)行讀寫交互,獲取到了年月日時分秒等數(shù)據(jù),并通過這些計算出了開機(jī)時間 startup_time 變量,是從 1970 年 1 月 1 日 0 時起到開機(jī)當(dāng)時經(jīng)過的秒數(shù)。

我們繼續(xù)往下看,大名鼎鼎的進(jìn)程調(diào)度初始化,shed_init。

  1. void main(void) { 
  2.     ... 
  3.     mem_init(main_memory_start,memory_end); 
  4.     trap_init(); 
  5.     blk_dev_init(); 
  6.     chr_dev_init(); 
  7.     tty_init(); 
  8.     time_init(); 
  9.     sched_init(); 
  10.     buffer_init(buffer_memory_end); 
  11.     hd_init(); 
  12.     floppy_init(); 
  13.      
  14.     sti(); 
  15.     move_to_user_mode(); 
  16.     if (!fork()) {init();} 
  17.     for(;;) pause(); 

這方法可了不起,因?yàn)樗褪嵌噙M(jìn)程的基石!

終于來到了興奮的時刻,是不是很激動?不過先別激動,這里只是進(jìn)程調(diào)度的初始化,也就是為進(jìn)程調(diào)度所需要用到的數(shù)據(jù)結(jié)構(gòu)做個準(zhǔn)備,真正的進(jìn)程調(diào)度還需要調(diào)度算法、時鐘中斷等機(jī)制的配合。

當(dāng)然,對于理解操作系統(tǒng),流程和數(shù)據(jù)結(jié)構(gòu)最為重要了,而這一段作為整個流程的起點(diǎn),以及建立數(shù)據(jù)結(jié)構(gòu)的地方,就顯得格外重要了。

我們進(jìn)入這個方法,一點(diǎn)點(diǎn)往后看。

  1. void sched_init(void) { 
  2.     set_tss_desc(gdt+4, &(init_task.task.tss)); 
  3.     set_ldt_desc(gdt+5, &(init_task.task.ldt)); 
  4.     ... 

兩行代碼初始化了下 TSS 和 LDT。

先別急問這倆結(jié)構(gòu)是啥。還記得之前講的全局描述符表 gdt 么?它在內(nèi)存的這個位置,并且被設(shè)置成了這個樣子。

忘了的看一下第八回 | 煩死了又要重新設(shè)置一遍 idt 和 gdt,這就說明之前看似沒用的細(xì)節(jié)有多重要了,大家一定要有耐心。

說回這兩行代碼,其實(shí)就是往后又加了兩項(xiàng),分別是 TSS 和 LDT。

好,那再說說這倆結(jié)構(gòu)是干嘛的,不過本篇先簡單理解,后面會詳細(xì)講到。

TSS 叫任務(wù)狀態(tài)段,就是保存和恢復(fù)進(jìn)程的上下文的,所謂上下文,其實(shí)就是各個寄存器的信息而已,這樣進(jìn)程切換的時候,才能做到保存和恢復(fù)上下文,繼續(xù)執(zhí)行。

由它的數(shù)據(jù)結(jié)構(gòu)你應(yīng)該可以看出點(diǎn)意思。

  1. struct tss_struct{ 
  2.     long back_link; 
  3.     long esp0; 
  4.     long ss0; 
  5.     long esp1; 
  6.     long ss1; 
  7.     long esp2; 
  8.     long ss2; 
  9.     long cr3; 
  10.     long eip; 
  11.     long eflags; 
  12.     long eax, ecx, edx, ebx; 
  13.     long esp; 
  14.     long ebp; 
  15.     long esi; 
  16.     long edi; 
  17.     long es; 
  18.     long cs; 
  19.     long ss; 
  20.     long ds; 
  21.     long fs; 
  22.     long gs; 
  23.     long ldt; 
  24.     long trace_bitmap; 
  25.     struct i387_struct i387; 
  26. }; 

而 LDT 叫局部描述符表,是與 GDT 全局描述符表相對應(yīng)的,內(nèi)核態(tài)的代碼用 GDT 里的數(shù)據(jù)段和代碼段,而用戶進(jìn)程的代碼用每個用戶進(jìn)程自己的 LDT 里得數(shù)據(jù)段和代碼段。

先不管它,我這里放一張超綱的圖,你先找找感覺。

我們接著往下看。

  1. struct desc_struct { 
  2.     unsigned long a,b; 
  3.  
  4. struct task_struct * task[64] = {&(init_task.task), }; 
  5.  
  6. void sched_init(void) { 
  7.     ... 
  8.     int i; 
  9.     struct desc_struct * p; 
  10.         p = gdt+6; 
  11.     for(i=1;i<64;i++) { 
  12.         task[i] = NULL
  13.         p->a=p->b=0; 
  14.         p++; 
  15.         p->a=p->b=0; 
  16.         p++; 
  17.     } 
  18.     ... 

這段代碼有個循環(huán),干了兩件事。

一個是給一個長度為 64,結(jié)構(gòu)為 task_struct 的數(shù)組 task 附上初始值。

這個 task_struct 結(jié)構(gòu)就是代表每一個進(jìn)程的信息,這可是個相當(dāng)相當(dāng)重要的結(jié)構(gòu)了,把它放在心里。

  1. struct task_struct { 
  2. /* these are hardcoded - don't touch */ 
  3.     long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 
  4.     long counter; 
  5.     long priority; 
  6.     long signal; 
  7.     struct sigaction sigaction[32]; 
  8.     long blocked; /* bitmap of masked signals */ 
  9.   /* various fields */ 
  10.     int exit_code; 
  11.     unsigned long start_code,end_code,end_data,brk,start_stack; 
  12.     long pid,father,pgrp,session,leader; 
  13.     unsigned short uid,euid,suid; 
  14.     unsigned short gid,egid,sgid; 
  15.     long alarm; 
  16.     long utime,stime,cutime,cstime,start_time; 
  17.     unsigned short used_math; 
  18.   /* file system info */ 
  19.     int tty;  /* -1 if no tty, so it must be signed */ 
  20.     unsigned short umask; 
  21.     struct m_inode * pwd; 
  22.     struct m_inode * root; 
  23.     struct m_inode * executable; 
  24.     unsigned long close_on_exec; 
  25.     struct file * filp[NR_OPEN]; 
  26.   /* ldt for this task 0 - zero 1 - cs 2 - ds&ss */ 
  27.     struct desc_struct ldt[3]; 
  28.   /* tss for this task */ 
  29.     struct tss_struct tss; 
  30. }; 

這個循環(huán)做的另一件事,是給 gdt 剩下的位置填充上 0,也就是把剩下留給 TSS 和 LDT 的描述符都先附上空值。

往后展望一下的話,就是以后每創(chuàng)建一個新進(jìn)程,就會在后面添加一組 TSS 和 LDT 表示這個進(jìn)程的任務(wù)狀態(tài)段以及局部描述符表信息。

還記得剛剛的超綱圖吧,未來整個內(nèi)存的規(guī)劃就是這樣的,不過你先不用理解得很細(xì)。

那為什么一開始就先有了一組 TSS 和 LDT 呢?現(xiàn)在也沒創(chuàng)建進(jìn)程呀。錯了,現(xiàn)在雖然我們還沒有建立起進(jìn)程調(diào)度的機(jī)制,但我們正在運(yùn)行的代碼就是會作為未來的一個進(jìn)程的指令流。

也就是當(dāng)未來進(jìn)程調(diào)度機(jī)制一建立起來,正在執(zhí)行的代碼就會化身成為進(jìn)程 0 的代碼。所以我們需要提前把這些未來會作為進(jìn)程 0 的信息寫好。

如果你覺得很疑惑,別急,等后面整個進(jìn)程調(diào)度機(jī)制建立起來,并且讓你親眼看到進(jìn)程 0 以及進(jìn)程 1 的創(chuàng)建,以及它們后面因?yàn)檫M(jìn)程調(diào)度機(jī)制而切換,你就明白這一切的意義了。

好,收回來,初始化了一組 TSS 和 LDT 后,再往下看兩行。

  1. #define ltr(n) __asm__("ltr %%ax"::"a" (_TSS(n))) 
  2. #define lldt(n) __asm__("lldt %%ax"::"a" (_LDT(n))) 
  3.  
  4. void sched_init(void) { 
  5.     ... 
  6.     ltr(0); 
  7.     lldt(0); 
  8.     ... 

這又涉及到之前的知識咯。

還記得 lidt 和 lgdt 指令么?一個是給 idtr 寄存器賦值,以告訴 CPU 中斷描述符表 idt 在內(nèi)存的位置;一個是給 gdtr 寄存器賦值,以告訴 CPU 全局描述符表 gdt 在內(nèi)存的位置。

那這兩行和剛剛的類似,ltr 是給 tr 寄存器賦值,以告訴 CPU 任務(wù)狀態(tài)段 TSS 在內(nèi)存的位置;lldt 一個是給 ldt 寄存器賦值,以告訴 CPU 局部描述符 LDT 在內(nèi)存的位置。

這樣,CPU 之后就能通過 tr 寄存器找到當(dāng)前進(jìn)程的任務(wù)狀態(tài)段信息,也就是上下文信息,以及通過 ldt 寄存器找到當(dāng)前進(jìn)程在用的局部描述符表信息。

我們繼續(xù)看。

  1. void sched_init(void) { 
  2.     ... 
  3.     outb_p(0x36,0x43);      /* binary, mode 3, LSB/MSB, ch 0 */ 
  4.     outb_p(LATCH & 0xff , 0x40);    /* LSB */ 
  5.     outb(LATCH >> 8 , 0x40);    /* MSB */ 
  6.     set_intr_gate(0x20,&timer_interrupt); 
  7.     outb(inb_p(0x21)&~0x01,0x21); 
  8.     set_system_gate(0x80,&system_call); 
  9.     ... 

四行端口讀寫代碼,兩行設(shè)置中斷代碼。

端口讀寫我們已經(jīng)很熟悉了,就是 CPU 與外設(shè)交互的一種方式,之前講硬盤讀寫以及 CMOS 讀寫時,已經(jīng)接觸過了。

而這次交互的外設(shè)是一個可編程定時器的芯片,這四行代碼就開啟了這個定時器,之后這個定時器變會持續(xù)的、以一定頻率的向 CPU 發(fā)出中斷信號。

而這段代碼中設(shè)置的兩個中斷,第一個就是時鐘中斷,中斷號為 0x20,中斷處理程序?yàn)?timer_interrupt。那么每次定時器向 CPU 發(fā)出中斷后,便會執(zhí)行這個函數(shù)。

這個定時器的觸發(fā),以及時鐘中斷函數(shù)的設(shè)置,是操作系統(tǒng)主導(dǎo)進(jìn)程調(diào)度的一個關(guān)鍵!沒有他們這樣的外部信號不斷觸發(fā)中斷,操作系統(tǒng)就沒有辦法作為進(jìn)程管理的主人,通過強(qiáng)制的手段收回進(jìn)程的 CPU 執(zhí)行權(quán)限。

第二個設(shè)置的中斷叫系統(tǒng)調(diào)用 system_call,中斷號是 0x80,這個中斷又是個非常非常非常非常非常非常非常重要的中斷,所有用戶態(tài)程序想要調(diào)用內(nèi)核提供的方法,都需要基于這個系統(tǒng)調(diào)用來進(jìn)行。

比如 Java 程序員寫一個 read,底層會執(zhí)行匯編指令 int 0x80,這就會觸發(fā)系統(tǒng)調(diào)用這個中斷,最終調(diào)用到 Linux 里的 sys_read 方法。

這個過程之后會重點(diǎn)講述,現(xiàn)在只需要知道,在這個地方,偷偷把這個極為重要的中斷,設(shè)置好了。

所以你看這一章的內(nèi)容,偷偷設(shè)置了影響進(jìn)程和影響用戶程序調(diào)用系統(tǒng)方法的兩個重量級中斷處理函數(shù),不簡單呀~

到目前為止,中斷已經(jīng)設(shè)置了不少了,我們現(xiàn)在看看所設(shè)置好的中斷有哪些。


中斷號 中斷處理函數(shù)
0 ~ 0x10
trap_init 里設(shè)置的一堆
0x20
timer_interrupt
0x21
keyboard_interrupt
0x80
system_call

其中 0-0x10 這 17 個中斷是 trap_init 里初始化設(shè)置的,是一些基本的中斷,比如除零異常等。這個在 第14回 中斷初始化 trap_init 有講到。

之后,在控制臺初始化 con_init 里,我們又設(shè)置了 0x21 鍵盤中斷,這樣按下鍵盤就有反應(yīng)了。這個在 第16回 控制臺初始化 tty_init 有講到。

現(xiàn)在,我們又設(shè)置了 0x20 時鐘中斷,并且開啟定時器。最后又偷偷設(shè)置了一個極為重要的 0x80 系統(tǒng)調(diào)用中斷。

找到些感覺沒,有沒有越來越發(fā)現(xiàn),操作系統(tǒng)有點(diǎn)靠中斷驅(qū)動的意思,各個模塊不斷初始化各種中斷處理函數(shù),并且開啟指定的外設(shè)開關(guān),讓操作系統(tǒng)自己慢慢“活”了起來,逐漸通過中斷忙碌于各種事情中,無法自拔。

恭喜你,我們已經(jīng)逐漸在接近操作系統(tǒng)的本質(zhì)了。

回顧一下我們今天干了什么,就三件事。

第一,我們往全局描述符表寫了兩個結(jié)構(gòu),TSS 和 LDT,作為未來進(jìn)程 0 的任務(wù)狀態(tài)段和局部描述符表信息。

第二,我們初始化了一個結(jié)構(gòu)為 task_struct 的數(shù)組,未來這里會存放所有進(jìn)程的信息,并且我們給數(shù)組的第一個位置附上了 init_task.init 這個具體值,也是作為未來進(jìn)程 0 的信息。

第三,設(shè)置了時鐘中斷 0x20 和系統(tǒng)調(diào)用 0x80,一個作為進(jìn)程調(diào)度的起點(diǎn),一個作為用戶程序調(diào)用操作系統(tǒng)功能的橋梁,非常之重要。

后面,我們將會逐漸看到,這些重要的事情,是如何緊密且精妙地結(jié)合在一起,發(fā)揮出奇妙的作用。

欲知后事如何,且聽下回分解。

本文轉(zhuǎn)載自微信公眾號「低并發(fā)編程」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系低并發(fā)編程公眾號。本網(wǎng)站已獲得低并發(fā)編程的授權(quán)

 

責(zé)任編輯:武曉燕 來源: 低并發(fā)編程
相關(guān)推薦

2010-03-03 13:35:06

紅帽Linux

2024-06-12 12:47:44

Fiddler開發(fā)網(wǎng)絡(luò)

2017-02-08 10:00:29

大數(shù)據(jù)hadoopHDFS

2009-01-05 10:47:50

2020-11-23 16:57:50

數(shù)據(jù)泄漏/個人身份信息

2011-06-30 15:09:37

QT 繪制 圖形

2020-06-01 08:46:35

機(jī)器學(xué)習(xí)數(shù)學(xué)Python

2019-06-04 08:09:39

物聯(lián)網(wǎng)工程師物聯(lián)網(wǎng)IOT

2025-05-08 10:00:00

算法數(shù)據(jù)結(jié)構(gòu)

2023-06-12 08:32:05

2015-05-05 09:06:59

2024-05-29 12:52:33

Pytho函數(shù)開發(fā)

2019-11-28 15:30:46

收藏微軟PPT

2021-07-03 23:40:27

CTR算法工程師

2009-04-02 10:23:13

實(shí)現(xiàn)JoinMySQL

2022-07-11 20:47:30

電力專網(wǎng)通信通信技術(shù)

2021-03-02 08:49:00

區(qū)塊鏈比特幣技術(shù)

2020-08-21 08:22:24

SpringMVC

2020-08-24 12:15:51

TomcatUndertow容器

2020-07-03 17:20:07

Redux前端代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

中国老女人av| 91pron在线| 精品无码在线观看| vam成人资源在线观看| 亚洲一区二区av在线| 久久国产精品99久久久久久丝袜| 蜜臀尤物一区二区三区直播| 亚洲最新色图| 亚洲欧美国产精品| 天天做天天干天天操| 51精品视频| 国产精品视频一二三| 波多野结衣精品久久| 久久久久久久久久成人| 欧美成人一品| 亚洲性生活视频在线观看| 在线观看视频在线观看| 欧美成人影院| 亚洲在线观看免费| 亚洲国产精品久久久久久女王| 国产成人精品毛片| 天堂久久一区二区三区| 欧美激情久久久| 中文字幕免费在线看线人动作大片| 日韩成人在线观看视频| 在线免费av一区| 2018日日夜夜| 污污在线观看| 国产精品国产三级国产aⅴ中文 | 亚洲区成人777777精品| 日本中文字幕一区二区有码在线| 国产一区二区调教| 国产精品夜间视频香蕉| 亚洲精品男人的天堂| 综合一区av| 日韩在线小视频| 日本二区在线观看| 在线看成人短视频| 精品乱人伦小说| 手机在线国产视频| 成人性片免费| 欧美性猛交xxxxxx富婆| 波多野结衣家庭教师视频| 久草在线视频资源| 亚洲私人影院在线观看| 亚洲蜜桃在线| 天堂中文8资源在线8| 国产欧美日韩在线视频| 蜜桃精品久久久久久久免费影院| 日本黄色一区二区三区| 懂色av一区二区夜夜嗨| 亚洲最大福利网站| 国产av一区二区三区| 狠狠色狠狠色合久久伊人| 国产日韩精品在线播放| 一级成人免费视频| 九九视频精品免费| 91久久精品一区| 国产日韩欧美中文字幕| 国产一区视频导航| 999日本视频| 精品国产va久久久久久久| 国产在线观看免费一区| 亚洲va欧美va在线观看| www.黄色片| 成人av网站在线观看| 国产伦精品一区二区三区四区视频 | 永久免费成人代码| 国产一区二区三区站长工具| 在线观看91久久久久久| 国产精品嫩草影院俄罗斯| 欧美~级网站不卡| 97久久久久久| 无码人妻一区二区三区免费| 免费在线观看日韩欧美| 成人国内精品久久久久一区| 午夜精品一二三区| www激情久久| 亚洲国产成人不卡| 日韩123区| 欧美日韩人人澡狠狠躁视频| 国产天堂在线播放| 99久热在线精品视频观看| 欧美va亚洲va在线观看蝴蝶网| 国产极品一区二区| 国产影视一区| 九九精品在线播放| 欧美一区二区激情视频| 日av在线不卡| 91在线视频一区| 日韩性xxxx| 亚洲国产精品传媒在线观看| 成年人视频大全| 刘亦菲一区二区三区免费看| 在线观看91精品国产麻豆| 亚洲欧美高清在线| 日本午夜一区| 久久久久久久爱| 波多野结衣视频在线看| 国产黄色精品网站| 欧美日韩精品综合| 18videosex性欧美麻豆| 欧美日韩国产精品专区| 国内外成人免费在线视频| 国产精品久久久网站| 最新国产精品亚洲| 日本少妇毛茸茸高潮| 另类专区欧美蜜桃臀第一页| 国产美女99p| 亚洲天天影视| 日韩欧美亚洲综合| 韩国三级丰满少妇高潮| 精品国产午夜| 97免费在线视频| 99热这里精品| 国产精品天美传媒| 色综合av综合无码综合网站| 在线精品国产亚洲| 日韩在线视频免费观看| 天干夜夜爽爽日日日日| 岛国av在线一区| 伊人久久大香线蕉午夜av| 欧美黑人粗大| 亚洲国产日韩欧美综合久久| 尤物在线免费视频| 日产国产高清一区二区三区| 久久亚洲午夜电影| 国产乱妇乱子在线播视频播放网站| 欧美伊人久久久久久午夜久久久久| 污污免费在线观看| 一区二区三区四区在线观看国产日韩 | 日韩精品一区二区三区三区免费 | 一区二区三区成人在线视频| av免费一区二区| 欧美中文一区二区| 热re99久久精品国产66热| 乱精品一区字幕二区| 亚洲精品视频一区| 在线视频一二区| 色婷婷亚洲mv天堂mv在影片| 国产成人精品午夜| 暖暖视频在线免费观看| 岛国av一区二区| 国产麻豆xxxvideo实拍| 在线视频观看日韩| 国产精品一国产精品最新章节| 亚洲区欧洲区| 欧美一卡二卡三卡四卡| 亚洲二区在线播放| 国产一区中文字幕| 潘金莲一级淫片aaaaa免费看| 欧美大陆国产| 裸体女人亚洲精品一区| av网站在线免费看| 亚洲一区二区三区爽爽爽爽爽| 97人人模人人爽人人澡| 91成人精品| 97神马电影| av2020不卡| 精品视频在线导航| 青青草视频在线观看免费| 国产日产欧美一区| 日韩一区二区三区久久| 久久久久久免费视频| 2020国产精品久久精品不卡| 黄色影院在线看| 亚洲精品美女网站| 波多野结衣电车| 国产精品欧美久久久久一区二区| 色天使在线观看| 韩国亚洲精品| 久久久久久久久久久久久久一区| 亚洲免费福利| www.亚洲人.com| 精品区在线观看| 无码av免费一区二区三区试看 | 九热爱视频精品视频| 国产精品日韩一区| 成人高清免费在线| 精品国产凹凸成av人网站| 日本韩国欧美中文字幕| 欧美国产精品专区| 一级黄色免费毛片| 国产亚洲高清视频| 一区二区三区免费看| 午夜电影一区| 国产成人精品av在线| 黄色一级大片在线免费看产| 亚洲а∨天堂久久精品喷水| 亚洲 欧美 日韩 在线| |精品福利一区二区三区| 久久久久无码国产精品一区李宗瑞| 国产亚洲永久域名| 伊人情人网综合| 欧美日韩破处| 亚洲一区二区三| 成人免费网站视频| 精品中文字幕视频| 成人精品一区| 精品va天堂亚洲国产| 中文字幕人妻一区二区三区视频| 一级中文字幕一区二区| 国产亚洲精品熟女国产成人| 国产高清在线精品| 亚洲成人福利在线观看| 在线播放不卡| 永久免费精品视频网站| 西野翔中文久久精品国产| 成人有码视频在线播放| 亚洲天堂资源| 欧美福利视频在线| 青青青青在线| 亚洲欧洲日韩国产| 黄色aaa毛片| 欧美一区二区在线看| 亚洲成熟少妇视频在线观看| 亚洲曰韩产成在线| 亚洲色图27p| 国产欧美日韩另类一区| 亚洲国产第一区| 国产成人免费xxxxxxxx| 15—17女人毛片| 老司机精品福利视频| 国产精品久久..4399| 亚洲综合五月| 在线视频精品一区| 精品免费av| 欧美成人dvd在线视频| 国产精品chinese在线观看| 91久久精品在线| 人人精品久久| 国产精品亚洲自拍| 国产69精品久久久久9999人| 国产mv久久久| 免费福利视频一区二区三区| 98视频在线噜噜噜国产| 91在线超碰| 欧美激情国产精品| 肉肉视频在线观看| 精品视频9999| 久久亚洲资源| 欧美激情一区二区三区久久久| 成人国产免费电影| 欧美理论电影在线播放| 亚洲羞羞网站| 欧美日韩福利视频| 精品精品导航| 色在人av网站天堂精品| 中文字幕免费高清电视剧网站在线观看 | 香蕉久久网站| 中文字幕超清在线免费观看| 久久精品青草| 特级西西人体www高清大胆| 伊人情人综合网| 国产 国语对白 露脸 | 国产女同互慰高潮91漫画| 国产免费无遮挡吸奶头视频| 国产日产亚洲精品系列| 国产极品视频在线观看| 国产精品久久久久久福利一牛影视 | 国产又黄又爽视频| 欧美一卡二卡三卡四卡| 国产综合无码一区二区色蜜蜜| 亚洲国产成人精品久久| 日本1级在线| 亚洲一级黄色av| 2019中文字幕在线视频| 久久久久999| 日本片在线看| 欧美尤物巨大精品爽| 日韩和的一区二在线| 91精品国产综合久久久久久久久| 成人97精品毛片免费看| 国产精品区免费视频| 亚洲国产网址| 一区二区在线观看网站| 亚洲婷婷免费| 午夜欧美福利视频| 国产美女一区二区| 美女又爽又黄免费| 欧美激情一区在线| 青青草免费av| 色综合色综合色综合| 国产女人18毛片水真多| 亚洲国产精品成人精品| 一级日本在线| 国内精久久久久久久久久人| 黑人巨大精品| 99久久精品久久久久久ai换脸| 亚洲精品进入| 小说区视频区图片区| 亚洲少妇自拍| 中文字幕66页| 91免费看片在线观看| 三级黄色在线观看| 狠狠综合久久av一区二区小说 | 亚洲成av人影院在线观看| 国产主播福利在线| 欧美激情亚洲视频| 久久99国产精品二区高清软件| av在线不卡一区| 欧美日韩国产免费观看视频| 800av在线免费观看| 日本vs亚洲vs韩国一区三区二区 | 精品按摩偷拍| 一区二区三区四区视频在线| 99综合精品| 永久av免费在线观看| 国产清纯白嫩初高生在线观看91| 久久免费公开视频| 欧美三级在线播放| 欧美69xxxxx| 97涩涩爰在线观看亚洲| 国产亚洲久久| 亚洲日本japanese丝袜| 久久国产日本精品| 小毛片在线观看| 一区二区三区欧美日| 一区二区三区免费在线| 亚洲日本中文字幕| 碰碰在线视频| 国产精品我不卡| 国内自拍视频一区二区三区| 成人不卡免费视频| 国产精品美女久久久久久| 男人日女人网站| 亚洲激情第一页| 888av在线视频| 99久久无色码| 牛牛国产精品| 三级av免费看| 亚洲人成网站色在线观看 | 欧美一区二区三区人| eeuss影院在线播放| 国产www精品| 国产一区二区三区四区大秀| 日韩精品一区二区三区久久| jiyouzz国产精品久久| 精品少妇爆乳无码av无码专区| 欧美一区二区黄色| 综合久久2019| 粉嫩精品一区二区三区在线观看| 一区二区三区四区日韩| 国产农村妇女精品久久| 日韩美女精品在线| 国产精品亚洲欧美在线播放| 精品国产一区二区三区久久久| 久久天堂影院| 国产精品亚洲天堂| 国产一区激情在线| 在线免费日韩av| 欧美成人艳星乳罩| 超级碰碰不卡在线视频| 国产精品一区而去| 国产视频一区免费看| 久久无码人妻精品一区二区三区| 精品人伦一区二区三区蜜桃免费| 欧美白人做受xxxx视频| 国产国语刺激对白av不卡| 精品免费一区二区| 久久久久久久久久一区| 亚洲毛片av在线| 亚洲精华国产精华精华液网站| 久久久久久国产三级电影| 加勒比色综合久久久久久久久 | 精品国产乱码久久久久久鸭王1| 日韩一区二区电影| a√中文在线观看| 牛人盗摄一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲ⅴ国产v天堂a无码二区| 欧美日韩一区 二区 三区 久久精品| 欧美高清视频| 国产91精品入口17c| 国产视频亚洲| 啪啪一区二区三区| 日韩精品一区二区三区四区| 色多多在线观看| 性欧美精品一区二区三区在线播放 | 国产精品高清网站| 99久久亚洲精品| 在线观看亚洲免费视频| 在线免费视频一区二区| 成人影院在线观看| 久久大片网站| 韩日欧美一区二区三区| 日韩精品无码一区二区| 中文字幕亚洲欧美在线| 亚洲免费一区三区| 欧美精品一区二区三区免费播放| 亚洲天堂成人在线观看| 亚洲欧美日韩综合在线| 国产一区二中文字幕在线看| 在线免费高清一区二区三区| 日本爱爱爱视频| 精品国产一区二区在线观看| 成人黄色视屏网站| 男人添女荫道口图片| 国产精品久久久久久久久晋中 | 蜜桃一区二区|