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

原來操作系統(tǒng)獲取時間的方式也這么 low

系統(tǒng)
書接上回,上回書咱們說到,通過初始化控制臺的 tty_init 操作,內(nèi)核代碼可以很方便地在控制臺輸出字符啦!

書接上回,上回書咱們說到,通過初始化控制臺的 tty_init 操作,內(nèi)核代碼可以很方便地在控制臺輸出字符啦!

作為用戶也可以通過敲擊鍵盤,或調(diào)用諸如 printf 這樣的庫函數(shù),在屏幕上輸出信息,同時支持換行和滾屏等友好設(shè)計,這些都是 tty_init 初始化,以及其對外封裝的小功能函數(shù),來實現(xiàn)的。

我們繼續(xù)往下看下一個初始化的倒霉鬼,time_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(); 

曾經(jīng)我很好奇,操作系統(tǒng)是怎么獲取到當前時間的呢?

當然,現(xiàn)在都聯(lián)網(wǎng)了,可以從網(wǎng)絡(luò)上實時同步。那當沒有網(wǎng)絡(luò)時,為什么操作系統(tǒng)在啟動之后,可以顯示出當前時間呢?難道操作系統(tǒng)在電腦關(guān)機后,依然不停地在某處運行著,勤勤懇懇數(shù)著秒表么?

當然不是,那我們今天就打開這個 time_init 函數(shù)一探究竟。

打開這個函數(shù)后我又是很開心,因為很短,且沒有更深入的方法調(diào)用。

  1. #define CMOS_READ(addr) ({ \ 
  2.     outb_p(0x80|addr,0x70); \ 
  3.     inb_p(0x71); \ 
  4. }) 
  5.  
  6. #define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10) 
  7.  
  8. static void time_init(void) { 
  9.     struct tm time
  10.     do { 
  11.         time.tm_sec = CMOS_READ(0); 
  12.         time.tm_min = CMOS_READ(2); 
  13.         time.tm_hour = CMOS_READ(4); 
  14.         time.tm_mday = CMOS_READ(7); 
  15.         time.tm_mon = CMOS_READ(8); 
  16.         time.tm_year = CMOS_READ(9); 
  17.     } while (time.tm_sec != CMOS_READ(0)); 
  18.     BCD_TO_BIN(time.tm_sec); 
  19.     BCD_TO_BIN(time.tm_min); 
  20.     BCD_TO_BIN(time.tm_hour); 
  21.     BCD_TO_BIN(time.tm_mday); 
  22.     BCD_TO_BIN(time.tm_mon); 
  23.     BCD_TO_BIN(time.tm_year); 
  24.     time.tm_mon--; 
  25.     startup_time = kernel_mktime(&time); 

夢想的代碼呀!

那主要就是對 CMOS_READ 和 BCD_TO_BIN 都是啥意思展開講一下就明白了了。

首先是 CMOS_READ

  1. #define CMOS_READ(addr) ({ \ 
  2.     outb_p(0x80|addr,0x70); \ 
  3.     inb_p(0x71); \ 
  4. }) 

就是對一個端口先 out 寫一下,再 in 讀一下。

這是 CPU 與外設(shè)交互的一個基本玩法,CPU 與外設(shè)打交道基本是通過端口,往某些端口寫值來表示要這個外設(shè)干嘛,然后從另一些端口讀值來接受外設(shè)的反饋。

至于這個外設(shè)內(nèi)部是怎么實現(xiàn)的,對使用它的操作系統(tǒng)而言,是個黑盒,無需關(guān)心。那對于我們程序員來說,就更不用關(guān)心了。

對 CMOS 這個外設(shè)的交互講起來可能沒感覺,我們看看與硬盤的交互。

最常見的就是讀硬盤了,我們看硬盤的端口表。

 


 

端口


0x1F0

數(shù)據(jù)寄存器 數(shù)據(jù)寄存器

0x1F1

錯誤寄存器 特征寄存器

0x1F2

扇區(qū)計數(shù)寄存器 扇區(qū)計數(shù)寄存器

0x1F3

扇區(qū)號寄存器或 LBA 塊地址 0~7 扇區(qū)號或 LBA 塊地址 0~7
0x1F4
磁道數(shù)低 8 位或 LBA 塊地址 8~15 磁道數(shù)低 8 位或 LBA 塊地址 8~15
0x1F5
磁道數(shù)高 8 位或 LBA 塊地址 16~23 磁道數(shù)高 8 位或 LBA 塊地址 16~23
0x1F6
驅(qū)動器/磁頭或 LBA 塊地址 24~27 驅(qū)動器/磁頭或 LBA 塊地址 24~27
0x1F7
命令寄存器或狀態(tài)寄存器 命令寄存器

那讀硬盤就是,往除了第一個以外的后面幾個端口寫數(shù)據(jù),告訴要讀硬盤的哪個扇區(qū),讀多少。然后再從 0x1F0 端口一個字節(jié)一個字節(jié)的讀數(shù)據(jù)。這就完成了一次硬盤讀操作。

如果覺得不夠具體,那來個具體的版本。

  • 在 0x1F2 寫入要讀取的扇區(qū)數(shù)
  • 在 0x1F3 ~ 0x1F6 這四個端口寫入計算好的起始 LBA 地址
  • 在 0x1F7 處寫入讀命令的指令號
  • 不斷檢測 0x1F7 (此時已成為狀態(tài)寄存器的含義)的忙位
  • 如果第四步驟為不忙,則開始不斷從 0x1F0 處讀取數(shù)據(jù)到內(nèi)存指定位置,直到讀完

看,是不是對 CPU 最底層是如何與外設(shè)打交道有點感覺了?是不是也不難?就是按照人家的操作手冊,然后無腦按照要求讀寫端口就行了。

當然,讀取硬盤的這個無腦循環(huán),可以 CPU 直接讀取并做寫入內(nèi)存的操作,這樣就會占用 CPU 的計算資源。

也可以交給 DMA 設(shè)備去讀,解放 CPU,但和硬盤的交互,通通都是按照硬件手冊上的端口說明,來操作的,實際上也是做了一層封裝。

好了,我們已經(jīng)學會了和一個外設(shè)打交道的基本玩法了。

那我們代碼中要打交道的是哪個外設(shè)呢?就是 CMOS。

它是主板上的一個可讀寫的 RAM 芯片,你在開機時長按某個鍵就可以進入設(shè)置它的頁面。

那我們的代碼,其實就是與它打交道,獲取它的一些數(shù)據(jù)而已。

我們回過頭看代碼。

  1. static void time_init(void) { 
  2.     struct tm time
  3.     do { 
  4.         time.tm_sec = CMOS_READ(0); 
  5.         time.tm_min = CMOS_READ(2); 
  6.         time.tm_hour = CMOS_READ(4); 
  7.         time.tm_mday = CMOS_READ(7); 
  8.         time.tm_mon = CMOS_READ(8); 
  9.         time.tm_year = CMOS_READ(9); 
  10.     } while (time.tm_sec != CMOS_READ(0)); 
  11.     BCD_TO_BIN(time.tm_sec); 
  12.     BCD_TO_BIN(time.tm_min); 
  13.     BCD_TO_BIN(time.tm_hour); 
  14.     BCD_TO_BIN(time.tm_mday); 
  15.     BCD_TO_BIN(time.tm_mon); 
  16.     BCD_TO_BIN(time.tm_year); 
  17.     time.tm_mon--; 
  18.     startup_time = kernel_mktime(&time); 

前面幾個賦值語句 CMOS_READ 就是通過讀寫 CMOS 上的指定端口,依次獲取年月日時分秒等信息。具體咋操作代碼上也寫了,也是按照 CMOS 手冊要求的讀寫指定端口就行了,我們就不展開了。

所以你看,其實操作系統(tǒng)程序,也是要依靠與一個外部設(shè)備打交道,來獲取這些信息的,并不是它自己有什么魔力。操作系統(tǒng)最大的魅力,就在于它借力完成了一項偉大的事,借 CPU 的力,借硬盤的力,借內(nèi)存的力,以及現(xiàn)在借 CMOS 的力。

至于 CMOS 又是如何知道時間的,這個就不在我們討論范圍了。

接下來 BCD_TO_BIN 就是 BCD 轉(zhuǎn)換成 BIN,因為從 CMOS 上獲取的這些年月日都是 BCD 碼值,需要轉(zhuǎn)換成存儲在我們變量上的二進制數(shù)值,所以需要一個小算法來轉(zhuǎn)換一下,沒什么意思。

最后一步 kernel_mktime 也很簡單,就是根據(jù)剛剛的那些時分秒數(shù)據(jù),計算從 1970 年 1 月 1 日 0 時起到開機當時經(jīng)過的秒數(shù),作為開機時間,存儲在 startup_time 這個變量里。

想研究可以仔細看看這段代碼,不過我覺得這種細節(jié)不必看。

  1. startup_time = kernel_mktime(&time); 
  2.  
  3. // kernel/mktime.c 
  4. long kernel_mktime(struct tm * tm) 
  5.     long res; 
  6.     int year
  7.     year = tm->tm_year - 70; 
  8.     res = YEAR*year + DAY*((year+1)/4); 
  9.     res += month[tm->tm_mon]; 
  10.     if (tm->tm_mon>1 && ((year+2)%4)) 
  11.         res -= DAY
  12.     res += DAY*(tm->tm_mday-1); 
  13.     res += HOUR*tm->tm_hour; 
  14.     res += MINUTE*tm->tm_min; 
  15.     res += tm->tm_sec; 
  16.     return res; 

就這。

所以今天其實就是,計算出了一個 startup_time 變量而已,至于這個變量今后會被誰用,怎么用,那就是后話了。

相信你逐漸也體會到了,此時操作系統(tǒng)好多地方都是用外設(shè)要求的方式去詢問,比如硬盤信息、顯示模式,以及今天的開機時間的獲取等。

所以至少到目前來說,你還不應該感覺操作系統(tǒng)有多么的“高端”,很多時候都是繁瑣地,讀人家的硬件手冊,獲取到想要的的信息,拿來給自己用,或者對其進行各種設(shè)置。

但你一定要耐得住寂寞,真正體現(xiàn)操作系統(tǒng)的強大設(shè)計之處,還得接著往下讀。

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

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

 

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

2010-08-02 13:55:20

2010-04-22 14:18:42

Aix操作系統(tǒng)

2018-08-09 16:12:59

操作系統(tǒng)內(nèi)存分配

2019-03-14 09:29:02

Linux系統(tǒng)內(nèi)存

2021-04-19 05:42:51

Mmap文件系統(tǒng)

2010-02-26 14:13:51

Linux操作系統(tǒng)

2010-04-15 14:40:26

Unix操作系統(tǒng)

2023-05-07 23:22:24

golang

2009-12-09 17:25:19

Linux操作系統(tǒng)

2010-04-28 18:59:59

Unix操作系統(tǒng)

2010-03-04 14:34:50

Linux操作系統(tǒng)

2010-04-30 16:02:45

Unix操作系統(tǒng)

2009-12-25 17:05:50

Linux操作系統(tǒng)

2009-07-23 18:43:25

操作系統(tǒng)LinuxWindows

2012-03-30 14:43:23

2015-04-30 08:00:05

數(shù)據(jù)中心多種操作系統(tǒng)

2021-04-19 11:23:29

操作系統(tǒng)計算機DOS

2021-11-15 06:56:46

操作系統(tǒng)U盤

2009-12-02 17:01:05

路由器功能

2022-01-07 13:34:25

Java時間格式化
點贊
收藏

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

国产一区二区三区av在线| 亚洲国产日韩精品在线| 亚洲欧美综合一区| 亚洲图片视频小说| 天天天综合网| 精品奇米国产一区二区三区| heyzo亚洲| 巨骚激情综合| 爽爽淫人综合网网站| 中文字幕亚洲一区二区三区| 国产97色在线 | 日韩| melody高清在线观看| 国产一区二区三区在线看麻豆| 久久国产加勒比精品无码| 国产在线不卡av| jizz内谢中国亚洲jizz| 中文字幕在线一区免费| 国产91免费视频| 极品国产91在线网站| 亚洲精品a级片| 亚洲缚视频在线观看| 欧美在线观看视频网站| 在线观看电影av| 不卡大黄网站免费看| 国产成人精品在线| 18啪啪污污免费网站| 国产欧美自拍一区| 欧洲一区在线电影| 日韩伦理在线免费观看| 国产69精品久久app免费版| 国产精品一区二区无线| 日本国产一区二区三区| 国产女人18水真多毛片18精品| 西野翔中文久久精品国产| 91精品福利在线一区二区三区| 波多野结衣乳巨码无在线| 欧美猛烈性xbxbxbxb| 91亚洲精品一区二区乱码| 91探花福利精品国产自产在线| 欧美另类一区二区| 亚洲在线久久| 在线视频欧美性高潮| 久久无码人妻精品一区二区三区| 韩国三级大全久久网站| 欧美在线观看你懂的| 日本熟妇人妻xxxx| 18+激情视频在线| 国产精品乱人伦一区二区| 极品日韩久久| 亚洲黄色精品视频| 精品一区二区免费视频| 国产成人小视频在线观看| 国产精品6666| 国内在线观看一区二区三区| 久久久久北条麻妃免费看| 国产ts丝袜人妖系列视频| 亚洲一区二区电影| 91福利国产精品| 欧美 国产 综合| 在线观看电影av| 亚洲人成在线观看一区二区| 日韩精品一区二区三区四区五区| 四虎精品成人免费网站| 成人黄色在线看| www久久99| 精品国产无码AV| 国产精品综合av一区二区国产馆| 国产一区欧美二区三区| 中文字幕一二三四| 人妖欧美一区二区| 国产精品美乳一区二区免费| 国产成人自拍偷拍| 日本亚洲天堂网| 国产精品极品尤物在线观看| 亚洲av无码精品一区二区| 久久高清免费观看| 国产精品大陆在线观看| 糖心vlog精品一区二区| 蜜臀av一区二区在线观看| 国产精品入口夜色视频大尺度| 中文亚洲av片在线观看| 久久99国产乱子伦精品免费| 国产精品激情自拍| 香蕉污视频在线观看| 久久久久久久欧美精品| 国产精品免费一区豆花| 国产精品久久久久毛片| 国产传媒日韩欧美成人| 国产视色精品亚洲一区二区| 人人九九精品| 国产精品午夜免费| 中文字幕av日韩精品| 影院在线观看全集免费观看| 午夜欧美一区二区三区在线播放| 一女被多男玩喷潮视频| 91精品店在线| 91精品国产91久久久久久一区二区 | 草草视频在线免费观看| 蜜桃麻豆av在线| 午夜视频在线观看一区二区| 国产黄页在线观看| www.com.cn成人| 欧美日韩aaa| 日本一区二区三区在线免费观看| 97久久综合精品久久久综合| 日韩成人av网| 亚洲女同二女同志奶水| 综合激情视频| 欧美在线视频一区| 一级片在线观看视频| 国产电影精品久久禁18| 欧美日韩亚洲免费| 国产秀色在线www免费观看| 亚洲成人免费观看| 91极品尤物在线播放国产| 国产一区二区三区黄网站| 亚洲国产成人精品女人久久久| 中文字幕第4页| 午夜日韩av| 国产精品成人免费电影| 精品国产av 无码一区二区三区| 成人天堂资源www在线| 麻豆传媒一区二区| 黄色片免费在线观看| 欧美日韩一区二区免费在线观看| 福利视频999| 亚洲最大在线| 欧美大尺度激情区在线播放 | 欧美午夜xxx| 天天av天天操| 亚洲伊人春色| 性亚洲最疯狂xxxx高清| 中文字幕永久在线视频| 播五月开心婷婷综合| 最新av在线免费观看| 国产精品迅雷| 精品成人免费观看| 性色国产成人久久久精品| 亚洲欧美成人| 成人三级视频在线观看一区二区| 91大神xh98hx在线播放| 欧美性xxxx18| 亚洲av成人片无码| 亚洲精品va| 国产免费亚洲高清| 久久久久久久久亚洲精品| 亚洲h动漫在线| 亚洲综合中文网| 91欧美在线| 国产精品高潮呻吟视频| 亚洲精品一区二区三区区别| 18欧美亚洲精品| 久久久久久久久久久免费视频| 成人台湾亚洲精品一区二区| 欧美成人午夜免费视在线看片| 一本色道久久综合亚洲| 国产精品久久久久久一区二区三区 | 久久国产精品亚洲人一区二区三区 | 人体精品一二三区| 午夜国产在线视频| 亚洲成av人片一区二区| 成人性生交免费看| 日韩久久精品网| 国产精品igao视频| 国产在线你懂得| 在线一区二区三区四区| 毛片网站免费观看| 久久男女视频| 日韩av免费电影| 国产一区二区三区影视| 色婷婷**av毛片一区| 91国产免费视频| 日韩一区在线免费观看| 天天色天天干天天色| 亚洲一区 二区 三区| 超碰国产精品久久国产精品99| 日本在线观看大片免费视频| 欧美裸体一区二区三区| 后入内射无码人妻一区| 久久99久国产精品黄毛片色诱| 亚洲精品中文字幕在线| 亚洲人体在线| 欧美高清一级大片| 五月婷中文字幕| 色偷偷成人一区二区三区91| 黄色免费一级视频| 国产一区欧美二区| 日韩国产小视频| 日韩激情毛片| 国产精品老牛影院在线观看| 国产传媒在线播放| 亚洲成人国产精品| 久久精品女人毛片国产| 成人av网在线| 久久国产亚洲精品无码| 日韩成人免费| 亚洲综合中文字幕在线观看| 1区2区在线| 一区二区欧美久久| 国产露脸无套对白在线播放| 亚洲成精国产精品女| 国产又爽又黄无码无遮挡在线观看| 日韩国产欧美一区二区三区| 一区二区视频在线播放| 加勒比视频一区| 国产精品第一区| 天堂va在线| 精品国产欧美一区二区| 久久这里只有精品国产| 国产色产综合产在线视频| 成年人网站av| 久久久久久穴| 日本一区午夜艳熟免费| 青草国产精品| 国产精品一区二区三区观看| 国产一区二区三区影视| 久久男人的天堂| av色图一区| 亚洲精品999| 国产精品伦理一区| 欧美性猛交视频| 黑鬼狂亚洲人videos| www成人在线观看| 91在线第一页| 久久精品欧洲| 成人一区二区免费视频| 99久久99久久精品国产片桃花| 国偷自产av一区二区三区小尤奈| 久久精品xxxxx| 欧美最猛性xxxxx(亚洲精品)| 国产网站在线免费观看| 中文一区二区视频| 视频在线观看你懂的| 日韩欧美一区中文| 一级做a爱片久久毛片| 欧美性精品220| 久久久精品人妻一区二区三区四| 中文字幕av在线一区二区三区| 亚洲一级片免费观看| 蜜桃一区二区三区四区| 精品欧美一区免费观看α√| 激情综合久久| 91免费版看片| 一区二区三区网站| 一区二区三区精品国产| 色综合综合网| 乱一区二区三区在线播放| 综合伊人久久| 国产欧美精品xxxx另类| 欧美精品日日操| 欧美又大又硬又粗bbbbb| 99riav视频在线观看| 欧美大片第1页| 污污的网站在线看| 精品中文字幕乱| 黄色国产网站在线播放| 日韩中文综合网| 青青青手机在线视频观看| 亚洲第一二三四五区| 亚洲av综合色区无码一二三区| 欧美一区二区三区免费视频 | 久久视频精品在线观看| 久久影视一区二区| 中文字幕5566| 久久综合中文字幕| 醉酒壮男gay强迫野外xx| av成人免费在线观看| 无套内谢大学处破女www小说| aaa欧美色吧激情视频| 亚洲天堂成人av| 26uuu色噜噜精品一区二区| 少妇伦子伦精品无吗| 国产盗摄女厕一区二区三区| yjizz视频| 91蜜桃婷婷狠狠久久综合9色| 野花社区视频在线观看| 久久久久久免费| 天堂久久精品忘忧草| 欧美激情在线观看视频免费| 日本免费网站视频| 亚洲色图20p| 国产亚洲精品av| 欧美日韩国产页| 青青国产在线视频| 欧美精品精品一区| 国产裸体永久免费无遮挡| 这里只有精品视频在线观看| 中文字幕在线观看高清| 日韩一区二区影院| 色一情一乱一乱一区91av| 亚洲摸下面视频| 亚洲成人影院麻豆| 欧美日韩国产999| 国产直播在线| 国产精品视频xxx| 欧美久久一区二区三区| 精品免费国产| 久久视频在线| 国产美女主播在线| 日产欧产美韩系列久久99| 亚洲午夜精品一区| 国产精品一区二区久激情瑜伽| 性高潮免费视频| 国产欧美一区二区精品性色| 国产又黄又爽又无遮挡| 欧美日韩一区二区免费视频| 91精品视频免费在线观看| 亚洲国产精品va在线| fc2在线中文字幕| 欧美精品久久久久a| 99亚洲伊人久久精品影院| 动漫美女被爆操久久久| 亚洲精品**不卡在线播he| 亚洲亚洲精品三区日韩精品在线视频| 91精品一区国产高清在线gif| 人人妻人人添人人爽欧美一区| 久久99久久久欧美国产| 国产偷人妻精品一区| 亚洲精品乱码久久久久久黑人| 黄色一级视频免费看| 日韩欧美国产一区二区在线播放 | 国v精品久久久网| 国产熟女一区二区| 亚洲第一福利视频在线| 91麻豆成人精品国产| 亚洲欧洲日产国产网站| 国产精品69xx| 国产精品白嫩美女在线观看| 日韩一二三区在线观看| 一本一道久久久a久久久精品91| 国产美女一区| 9.1在线观看免费| 中文字幕一区二| 国产女优在线播放| 精品小视频在线| 1区2区3区在线| 91九色极品视频| 99欧美视频| 国产三级三级三级看三级| 99久精品国产| 国产精品美女毛片真酒店| 日韩精品一区二区在线| 麻豆影视国产在线观看| 国产91精品网站| 成人资源在线播放| 300部国产真实乱| 精品午夜一区二区三区在线观看| 亚洲精品一区二区三区影院忠贞| 欧美日在线观看| 神马一区二区三区| 久久久久久久久久久久久久久久久久av | 成人写真视频| 在线观看国产一级片| 国产精品久久午夜夜伦鲁鲁| 国产精品毛片久久久久久久av| 操日韩av在线电影| 欧美专区一区| 日韩视频在线视频| 久久免费视频色| 久久精品偷拍视频| 日韩中文字幕在线| 欧洲大片精品免费永久看nba| 天堂8在线天堂资源bt| 不卡的av中国片| 国产性生活视频| 日韩最新免费不卡| 日韩一区二区三区精品| 午夜免费福利小电影| 久久夜色精品一区| 五月天中文字幕| 麻豆国产精品va在线观看不卡| youjizz欧美| 成人三级视频在线播放| 国产精品视频看| 国产国语亲子伦亲子| 7777精品视频| 水蜜桃久久夜色精品一区| 亚欧精品在线视频| 天天做天天摸天天爽国产一区| 国产在线视频网| 亚洲综合中文字幕在线| 香蕉视频成人在线观看| 任我爽在线视频| 亚洲国产欧美一区| 久久久久黄色| 每日在线观看av| 国产精品色一区二区三区| 亚洲高清视频在线播放| 国产精品88a∨| 欧美激情五月| 亚洲黄色小说视频| 日韩视频免费观看高清完整版在线观看| 国产亚洲成av人片在线观看| 亚洲欧美日韩另类精品一区二区三区 | 亚洲成av人片在www色猫咪| 岛国视频免费在线观看| av一区观看| 美女网站色91| 日韩欧美激情视频| 久久伊人精品天天|