亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務(wù)器 > Linux服務(wù)器 > 正文

Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)存管理筆記整理

2024-09-05 23:05:28
字體:
供稿:網(wǎng)友
/********************** * linux的內(nèi)存管理 **********************/

到目前為止,內(nèi)存管理是unix內(nèi)核中最復(fù)雜的活動。我們簡單介紹一下內(nèi)存管理,并通過實例說明如何在內(nèi)核態(tài)獲得內(nèi)存。

(1)各種地址

對于x86處理器,需要區(qū)分以下三種地址:

*邏輯地址(logical address)

只有x86支持。每個邏輯地址都由一個段(segment)和一個偏移量(offset)組成,偏移量指明了從段的開始到實際地址之間的距離。

邏輯地址共48位,段選擇符16位,偏移量32位。linux對邏輯地址的支持很有限

*線性地址(linear address)

也稱為虛擬地址(virtual address)。

32位無符號整數(shù),從0x0000,0000到0xffff,ffff,共4GB的地址范圍。無論是應(yīng)用程序還是驅(qū)動程序,我們在程序中使用的地址都是虛擬地址。

*物理地址(physical address)

32位無符號整數(shù),與從CPU的地址引腳發(fā)送到存儲器總線上的電信號相對應(yīng)。用于存儲器尋址。

找一個程序,如scanf.c,運行兩個,然后執(zhí)行下面指令觀察:

$>pmap $(pid)$>cat /proc/$(pid)/maps

(2)物理內(nèi)存和虛擬內(nèi)存

a.物理內(nèi)存

就是系統(tǒng)中實際存在的RAM,比如我們常說的一條256兆RAM。x86處理器和物理內(nèi)存之間是通過實際的物理線路連接的。

另外,x86處理器還通過主板連接了很多的外設(shè),這些外設(shè)也通過實際的物理線路和處理器相連。

對于處理器來說,多數(shù)的外設(shè)和RAM的訪問方式是一致的,都是由程序發(fā)出物理地址訪問實際的物理器件。

外設(shè)和RAM共享一個4G大小的物理內(nèi)存空間。

b.虛擬內(nèi)存

是在物理內(nèi)存之上為每個進程構(gòu)架的一種邏輯內(nèi)存,處于應(yīng)用程序的內(nèi)存請求與硬件內(nèi)存管理單元(Memory Management Unit, MMU) 之間.MMU將應(yīng)用程序使用的虛擬內(nèi)存根據(jù)預(yù)先定義好的頁表轉(zhuǎn)化為物理地址,然后通過物理地址對實際的外設(shè)或RAM進行訪問。

虛擬內(nèi)存有很多用途和優(yōu)點:

  • *若干個進程可以并發(fā)地執(zhí)行
  • *應(yīng)用程序所需內(nèi)存大于物理內(nèi)存時也可以運行
  • *程序只有部分代碼裝入內(nèi)存時進程可以執(zhí)行它
  • *允許每個進程訪問可用物理內(nèi)存的一個子集
  • *進程可以共享庫函數(shù)或程序的一個單獨內(nèi)存映像
  • *程序是可重定位的,也就是說,可以把程序放在物理內(nèi)存的任何地方
  • *編程者可以編寫與機器無關(guān)的代碼,不必關(guān)心物理內(nèi)存的組織結(jié)構(gòu)

(3)RAM的使用

linux將實際的物理RAM劃分為兩部分使用,其中若干兆字節(jié)專門用于存放內(nèi)核映像(也就是內(nèi)核代碼和內(nèi)核靜態(tài)數(shù)據(jù)結(jié)構(gòu)),RAM的其余部分通常由虛擬內(nèi)存系統(tǒng)來處理,并用在以下3種可能的方面:

  • *滿足內(nèi)核對緩存,描述符和其他動態(tài)內(nèi)核數(shù)據(jù)結(jié)構(gòu)的請求
  • *滿足進程對一般內(nèi)存區(qū)的請求及對文件內(nèi)存映射的請求
  • *借助于高速緩存從磁盤及其他緩沖設(shè)備獲得較好的性能

虛擬內(nèi)存必須解決的一個主要問題是內(nèi)存碎片,因為通常內(nèi)核使用連續(xù)的物理內(nèi)存,所以碎片過多可能導(dǎo)致請求失敗。

/********************** * 在內(nèi)核中獲取內(nèi)存 **********************/

和在用戶空間中一樣,在內(nèi)核中也可以動態(tài)分配和釋放內(nèi)存,但受到的限制要比用戶空間多一些。

(1)內(nèi)核中的內(nèi)存管理

內(nèi)核把物理頁作為內(nèi)存管理的基本單位。這主要是因為內(nèi)存管理單元(MMU)是以頁為單位進行虛擬地址和物理地址轉(zhuǎn)換的,從虛擬內(nèi)存的角度來看,頁就是最小單位。大多數(shù)32位體系結(jié)構(gòu)支持4KB的頁。

a.頁

內(nèi)核用struct page表示系統(tǒng)中的每個物理頁。

包括<linux/mm.h>就可以使用page,其實際定義在<linux/mm_types.h>

struct page{ page_flags_t flags; atomic_t _count; atomic_t _mapcount; unsigned long private; struct address_space *mapping; pgoff_t index; struct list_head lru; void *virtual;};

flags用于存放頁的狀態(tài),定義在<linux/page-flags.h>,狀態(tài)包括頁是不是臟的,是不是被鎖定在內(nèi)存中等等。_count存放頁的引用計數(shù)。

page結(jié)構(gòu)與物理頁相關(guān),并非與虛擬頁相關(guān)。結(jié)構(gòu)的目的再于描述物理內(nèi)存本身,而不是其中的數(shù)據(jù)。

內(nèi)核根據(jù)page結(jié)構(gòu)來管理系統(tǒng)中所有的頁,內(nèi)核通過page可以知道一個頁是否空閑(也就是頁有沒有被分配)。

如果頁已經(jīng)被分配,內(nèi)核還需要知道誰擁有這個頁。

擁有者可能是用戶空間進程,動態(tài)分配的內(nèi)核數(shù)據(jù),靜態(tài)內(nèi)核代碼,或頁高速緩存等。

系統(tǒng)中的每個物理頁都要分配這樣一個結(jié)構(gòu)。如果結(jié)構(gòu)體40字節(jié)大小,則128MB物理內(nèi)存(4K的頁)需要分配1MB多用于page結(jié)構(gòu)。

b.區(qū)

由于硬件的限制,內(nèi)核不能對所有的頁一視同仁。內(nèi)核使用區(qū)(zone)對具有相似特性的頁進行分組。這些特性包括:

  • *一些硬件只能用某些特定的內(nèi)存地址來執(zhí)行DMA
  • *一些體系結(jié)構(gòu)其內(nèi)存的物理尋址范圍遠大于虛擬尋址范圍,這樣,就有一些內(nèi)存不能永久地映射到內(nèi)核空間

針對這些限制,linux采用了三種區(qū)(<linux/mmzone.h>):

  • ZONE_DMA:這個區(qū)包含的頁能執(zhí)行DMA操作
  • ZONE_NORMAL:這個區(qū)包含的都是能正常映射的頁
  • ZONE_HIGHMEM:這個區(qū)包含高端內(nèi)存(大于896M),其中的頁不能永久地映射到內(nèi)核的地址空間

對于x86,這3個區(qū)對于的物理內(nèi)存分別是:

  • ZONE_DMA: <16MB
  • ZONE_NORMAL: 16~896MB
  • ZONE_HIGHMEM: >896MB

見<linux/mmzone.h>中的struct zone。

系統(tǒng)中只有3個這樣的區(qū)結(jié)構(gòu)。

(2)頁分配

內(nèi)核是使用頁進行內(nèi)存管理的,因此,我們在內(nèi)核中也可以要求系統(tǒng)以頁為單位給我們分配內(nèi)存。當(dāng)然,以頁為單位分配可能造成內(nèi)存浪費,因此,只有在我們確定需要整頁內(nèi)存時才調(diào)用他們。

a.分配

#include <linux/gfp.h>1. struct page * alloc_pages(    unsigned int gfp_mask,     unsigned int order);//分配2的order次方個連續(xù)的物理頁。2. void *page_address(    struct page *page);//返回一個指針,指向給定物理頁當(dāng)前的虛擬地址3. unsigned long __get_free_pages(    unsigned int gfp_mask,     unsigned int order);//相當(dāng)于上兩個函數(shù)結(jié)合4. struct page * alloc_page(    unsigned int gfp_mask);5. unsigned long __get_free_page(    unsigned int gfp_mask);6. unsigned long get_zeroed_page(    unsigned int gfp_mask);//只分配一頁

b.gfp_mask標志

這個標志決定了內(nèi)核在分配內(nèi)存時的行為,以及從哪里分配內(nèi)存。

#include <linux/gfp.h>#define GFP_ATOMIC//原子分配,不會休眠,可用于中斷處理。#define GFP_KERNEL //首選,內(nèi)核可能會睡眠,用在進程上下文中

c.釋放頁

void __free_pages(struct page *page,    unsigned int order);void free_pages(unsigned long addr,    unsigned int order);void free_page(unsigned long addr);

注意!只能釋放屬于你的頁。錯誤的參數(shù)可能導(dǎo)致內(nèi)核崩潰。

(3)通過kmalloc獲取內(nèi)存

kmalloc和malloc很象,是內(nèi)核中最常用的內(nèi)存分配函數(shù)。

kmalloc不會對分配的內(nèi)存區(qū)域清0,分配的區(qū)域在物理內(nèi)存中是連續(xù)的。

a.分配

#include <linux/slab.h>void *kmalloc(size_t size, int flags)

size是要求分配的內(nèi)存的大小

kmalloc的參數(shù)flags可以控制kmalloc分配時的行為。和alloc_page時使用的標志是一致的。注意,kmalloc不能分配高端內(nèi)存

b.釋放

#include <linux/slab.h> void kfree(const void *ptr);

如果要釋放的內(nèi)存已經(jīng)被釋放了,或者釋放屬于內(nèi)核其他部分的內(nèi)存,則會產(chǎn)生嚴重的后果。調(diào)用kfree(NULL)是安全的。

要注意!內(nèi)核只能分配一些預(yù)定義的,固定大小的字節(jié)數(shù)組。kmalloc能處理的最小內(nèi)存塊是32或64。由于kmalloc分配的內(nèi)存在物理上連續(xù),所以有分配上限,通常不要超過128KB。

(4)通過vmalloc獲得內(nèi)存

vmalloc()分配的內(nèi)存虛擬地址是連續(xù)的,但物理地址不需要連續(xù)。這也是malloc()的分配方式。vmalloc分配非連續(xù)的內(nèi)存塊,再修改頁表,把內(nèi)存映射到邏輯空間連續(xù)的區(qū)域內(nèi)。

大多數(shù)情況下,只有硬件設(shè)備需要得到物理地址連續(xù)的內(nèi)存,內(nèi)核可以使用通過vmalloc獲得的內(nèi)存。但內(nèi)核中多采用kmalloc,這主要是考慮性能,因為vmalloc會引起較大的TLB抖動,除非映射大塊內(nèi)存時采用vmalloc。例如模塊動態(tài)加載時,就是加載到通過vmalloc分配的內(nèi)存。

vmalloc在<linux/vmalloc.h>聲明,在<mm/vmalloc.c>定義,用法和malloc()相同。

 void* vmalloc(unsigned long size); void vfree(void *addr);

vmalloc會引起睡眠  

(5)通過slab機制獲得內(nèi)存

分配和釋放數(shù)據(jù)結(jié)構(gòu)是內(nèi)核最普遍的操作之一。

一種常用的方法是構(gòu)建一個空閑鏈表,其中包含有可供使用的,已經(jīng)分配好的數(shù)據(jù)結(jié)構(gòu)塊。

每次要分配數(shù)據(jù)結(jié)構(gòu)就不用再申請內(nèi)存,而是直接從這個空閑鏈表中分配數(shù)據(jù)塊,釋放結(jié)構(gòu)時將內(nèi)存還回這個鏈表。

這實際上是一種對象高速緩存(緩存對象).

linux針對這種要求提供了一個slab分配器來完成這一工作。

slab分配器要在幾個基本原則之間尋求平衡:

  • *頻繁使用的數(shù)據(jù)結(jié)構(gòu)會頻繁分配和釋放,需要緩存
  • *頻繁分配和回收必然導(dǎo)致內(nèi)存碎片,為避免這一現(xiàn)象,空閑鏈表中的緩存會連續(xù)存放,從而避免碎片
  • *分配器可以根據(jù)對象大小,頁大小和總的高速緩存大小來進行優(yōu)化

kmalloc就建立在slab之上。

a.創(chuàng)建一個新的高速緩存

#include <linux/slab.h>struct kmem_cache *kmem_cache_create(   const char *name,    size_t size,   size_t align,   unsigned long flags,   void(*ctor)(...));

name: 高速緩存的名字。出現(xiàn)在/proc/slabinfo
size: 緩存中每個元素的大小
align: 緩存中第一個對象的偏移,常用0
flags:分配標志。常用SLAB_HWCACHE_ALIGH,表明按cache行對齊,見slab.h

b.銷毀高速緩存

#include <linux/slab.h>void kmem_cache_destroy(struct kmem_cache *cachep);

必須在緩存中的所有對象都被釋放后才能調(diào)用。

c.從高速緩存中獲得對象

void *kmem_cache_alloc(   struct kmem_cache *cachep, int flags);flags:   GFP_KERNEL

d.將對象釋放回高速緩存

void kmem_cache_free(   struct kmem_cache *cachep, void *objp);

可參見kernel/fork.c

(6)高端內(nèi)存的映射

在高端內(nèi)存中的頁不能永久地映射到內(nèi)核地址空間,因此,通過alloc_pages()函數(shù)以__GFP_HIGHMEM標志獲得的頁不可能有虛擬地址。需要通過函數(shù)為其動態(tài)分配。

a.映射

要映射一個給定的page結(jié)構(gòu)到內(nèi)核地址空間,可以使用:

void *kmap(struct page *page);

函數(shù)可以睡眠

b.解除映射

void kunmap(struct page* page);

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美人与禽猛交乱配视频| 视频在线观看91| 色综合久久网| 国产精品乱码一区二区视频| 日韩一级不卡| 一本一本大道香蕉久在线精品| 亚洲美女色视频| 亚洲免费福利| 粉嫩tv在线播放| 一级做a爱片久久| 午夜a一级毛片亚洲欧洲| 波多野结衣激情视频| 免费成人在线网站| 久久久久国色av免费观看性色| 91免费综合在线| 欧美国产日韩一区二区在线观看| 中文无码精品一区二区三区| 国产91高潮流白浆在线麻豆| 五月婷婷激情综合网| 欧美性videosxxxxx| 亚洲在线观看免费| 亚洲一区二区三区四区五区午夜| 天天爱天天做天天爽| 捆绑紧缚一区二区三区在线观看| 亚洲成人精品影院| 污的网站在线观看| 182在线视频观看| 亚洲欧美另类一区| 99久久久无码国产精品性波多| 日本精品裸体写真集在线观看| 国产福利小视频在线观看| 欧美日韩一区在线| 日韩一区二区视频| 国产午夜福利100集发布| 欧美日韩视频免费播放| xxxxx性13一14| 蜜桃久久精品乱码一区二区| 久久五月天色综合| 欧美 变态 另类 人妖| 一区二区三区的久久的视频| 男人的天堂成人在线| 性欧美lx╳lx╳| 四虎国产精品永久在线国在线| 午夜视频免费在线| 亚洲天堂av综合网| 亚洲国产一区二区三区| 日本不卡免费高清视频| 日本1级在线| 欧美性潮喷xxxxx免费视频看| www在线免费观看| 国产精品美女久久久久久久久| 国产成人+综合亚洲+天堂| 日日噜噜夜夜狠狠| 蜜桃视频在线观看一区二区| 亚洲999一在线观看www| 狠狠色综合色综合网络| 91抖音在线观看| 日韩有码在线视频| 色婷婷av金发美女在线播放| 久久日韩视频| 成全视频在线播放大地| 国产成人午夜精品影院观看视频| 欧美日韩电影免费看| 久久国产柳州莫菁门| 亚洲视频中文字幕在线观看| 久久精品中文字幕一区| 99视频在线看| 亚洲精品鲁一鲁一区二区三区| 亚洲图片在线视频| 欧美激情xxxxx| 精品欧美一区免费观看α√| 1024精品一区二区三区| 尤物视频在线观看国产| www.夜色| 综合av色偷偷网| 星空大象在线观看免费播放| 最新av网址在线观看| 男女视频在线观看| 高潮一区二区| 亚洲欧美激情在线观看| 久久久久久久久久毛片| 无套内谢大学处破女www小说| 欧美a大片欧美片| 欧美xxxx黑人xyx性爽| 久久精品视频观看| 色一情一乱一区二区| 国产一二区在线| 台湾佬中文娱乐久久久| 日本视频网址| 激情欧美日韩一区二区| 免费看成年人视频在线观看| 99久久99久久久精品齐齐| 色网站国产精品| 欧美一区深夜视频| 日韩三区免费| 国产精品色网| 精品久久久久久久大神国产| 美女又爽又黄视频毛茸茸| 精品96久久久久久中文字幕无| 欧美精品vⅰdeose4hd| 官网99热精品| 亚洲成人精品在线播放| 久久香蕉国产线看观看av| 欧美综合一区二区| 一区二区三区电影大全| 欧美国产精品专区| 欧美一区中文字幕| 欧美伦理视频网站| 国产精品波多野结衣| 日韩视频免费在线观看| 亚洲视频免费在线观看| 天天操天天擦| 182tv在线播放| av午夜在线观看| 成人在线电影在线观看视频| 超碰超碰在线观看| 精品黑人一区二区三区| 国产精品一区二区三区免费视频| 宅男噜噜99国产精品观看免费| 精品国产99久久久久久| 亚洲一区二区久久久久久| 久久国产直播| av免费精品一区二区三区| 丝袜美腿av在线| 亚洲一区免费视频| 欧美亚洲国产精品久久| 成人国产精品av| 久久av偷拍| 成人91免费视频| 一区二区免费在线观看| 久久精品欧洲| 国产精品伦一区二区三级视频| 伊人色综合久久久| 国产精品亚洲综合| 五月天激情图片| 国产精品㊣新片速递bt| 影音先锋成人资源网站| 三级电影在线看| 国产精品久久久久久久久| 视频一区二区三区免费观看| 免费av网站在线观看| 亚洲激情小视频| 色av手机在线| 丰满的亚洲女人毛茸茸| 人人爽香蕉精品| 欧洲在线免费视频| 欧美日本高清一区| 久久综合亚洲社区| 久久久久久久久久久久久久久久久久av| 影音先锋中文在线播放| 亚洲免费在线| 国产原创在线观看| 五月天综合网站| 一区二区三区 在线观看视| 丁香网亚洲国际| 波多野结衣成人在线| 亚洲美女免费在线| 1234区在线观看视频免费| 天堂av手机在线| 欧美大片免费| 国产呦精品一区二区三区网站| 国产小视频在线播放| 久久久久久久高清| 乱老熟女一区二区三区| 波多野结衣50连登视频| 在线观看视频日韩| 国产欧美久久久久久久久| 黄色免费福利视频| av2020不卡| 欧美韩国亚洲| 久久久免费在线观看| 日韩亚洲天堂| 国产精品久久久久久av公交车| 一区二区三区在线视频观看58| 黄色的网站免费| 蜜臀久久99精品久久久| 国产精品久久影视| 尤物在线网址| 免费电影一区| 激情文学亚洲色图| 激情婷婷综合网| 神马午夜在线观看| 日韩精品一区二区在线视频| aa片在线观看视频在线播放| 亚洲成人激情综合网| 亚洲成av人在线观看| 欧美成人精品h版在线观看| 一本一道波多野结衣一区二区| 任你操视频在线观看| 日日日日人人人夜夜夜2017| 男人的天堂视频在线| 亚洲欧美综合一区| 国产精品久久色| 暴力调教一区二区三区| 2019精品视频| 亚洲熟女乱色一区二区三区久久久| 最新国产精品久久久| 欧美v亚洲v综合v国产v仙踪林| 中文日产幕无线码一区二区| 日本精品一区二区三区在线观看视频| 婷婷久久综合九色综合99蜜桃| 在线视频亚洲专区| 国产成+人+日韩+欧美+亚洲| 麻豆蜜桃91| 91成人噜噜噜在线播放| 一本到12不卡视频在线dvd| 风间由美中文字幕在线看视频国产欧美| 国产精品高潮呻吟久久| 色呦呦在线播放| 人操人视频在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲精品国产一区二区三区四区在线| 国产精品免费久久久久影院| 国产不卡视频在线播放| 国产欧美一区二区精品性| 亚洲欧美自偷自拍| 老司机午夜在线| 久久福利网址导航| 无码国产精品一区二区高潮| 国模大尺度私拍在线视频| 电影k8一区二区三区久久| 欧美性久久久久| 亚洲色偷精品一区二区三区| 国产一级片麻豆| 久久99热这里只有精品国产| 亚洲图片欧美在线| 亚洲av成人无码网天堂| 亚洲欧美综合一区| 77导航福利在线| 亚洲精品乱码久久久久久按摩观| 91精品国产闺蜜国产在线闺蜜| 国产极品999| 欧美日韩一区二区在线| 四虎成人在线播放| а√天堂资源在线| 日韩经典中文字幕| 婷婷成人综合| 人妻少妇精品久久| 日本波多野结衣在线| 日韩在线免费视频| 99在线观看精品视频| 久久黄色影视| 免费观看亚洲视频大全| 中文字幕av一区二区三区人妻少妇| 国产精品久久久久aaaa| 成人小视频在线观看| 中国xxxx自拍视频| 日本孕妇大胆孕交无码| 亚洲男女视频在线观看| 97在线播放免费观看| 欧美成人免费大片| 国产免费色视频| 69视频在线观看| 国产一区二区中文字幕| 中文字幕一区二区三区蜜月| 最近中文字幕第一页| 亚洲网站在线看| 欧美高清视频看片在线观看| 有色视频在线观看| 中文字幕在线免费视频| 国产一区二区三区免费观看| 97在线视频免费播放| 欧美视频一区二区三区四区| 国产xxx在线观看| 黄色网址在线免费播放| 国产精品永久在线| 视频一区日韩| 蜜桃成人在线| 性欧美超级视频| 国产一级免费在线观看| 国产丝袜精品第一页| 中国女人久久久| 久久婷婷国产麻豆91天堂| 国产高清视频色在线www| 丰满少妇高潮在线观看| 日本人妻丰满熟妇久久久久久| 91精品国产91久久久久游泳池| 一区二区三区在线观看www| 视频一区不卡| 久久国产精品亚洲va麻豆| 久久久久久久性| 亚洲va欧美va人人爽成人影院| 都市激情亚洲| 你懂的视频在线观看资源| 四虎永久在线精品免费网址| 日韩大片在线播放| 91在线云播放| av在线电影播放| 亚洲精品一区二区在线看| 国产主播一区二区| 国产精品国码视频| 国产乱子精品一区二区在线观看| 亚洲v在线观看| 欧美一级视频免费看| 国产一级二级三级视频| 很很鲁在线视频播放影院| 2019天天干夜夜操| 午夜性爽视频男人的天堂| 欧美另类中文字幕| 国产精品久久久免费| 性综艺节目av在线播放| 91香蕉视频在线播放| 粗大的内捧猛烈进出视频| 国产一区av在线| 久草在线中文最新视频| 国产在线精选视频| 久久精品国产精品| 色综合天天综合网中文字幕| 国产亚洲精品久久777777| 夜夜揉揉日日人人青青一国产精品| 久久这里只有精品一区二区| 福利片在线看| 国产成人在线播放视频| 中国人与牲禽动交精品| 国产激情久久久久久熟女老人av| 中文字幕无码精品亚洲35| 无码h肉动漫在线观看| 给我免费播放片在线观看| 欧美日韩在线精品一区二区三区激情综| 日本精品国产| 欧美激情一区二区三级高清视频| 97在线精品| 日韩经典中文字幕在线观看| 大桥未久女教师av一区二区| 久久久久久久久久美女| 欧美一区二区三区视频免费播放| 日韩西西人体444www| 日本黄色免费录像|